com php/gtk-src: Fixed compile with 5.5. Added VC11 compatibility: ext/gtk+/config.w32 ext/libglade/config.w32 ext/libsexy/config.w32 ext/sourceview/config.w32 generator/generator.php generator/gtkgenerator.php main/php_gtk.h main/phpg_sup port.c win32/config.w32.in
[email protected] (Elizabeth Marie Smith) Fri, 28 Jun 2013 02:49:21 +0000
| Newsgroups | php.gtk.cvs |
|---|---|
| Message-ID | <[email protected]> |
--664b1a9984c02278f5843cc7ba629263cfe5c5ea Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Commit: 694fdabeb72d6dc0aee904359ed981201db4986f=0AAuthor: Zachary Re= is <[email protected]> Thu, 27 Jun 2013 22:49:21 -0400=0AParents: = e972b2524af28df69baa7657413a61eec552fcd2=0ABranches: master=0A=0ALink: = http://git.php.net/?p=3Dphp/gtk-src.git;a=3Dcommitdiff;h=3D694fdabeb72= d6dc0aee904359ed981201db4986f=0A=0ALog:=0AFixed compile with 5.5. Added VC1= 1 compatibility=0A=0A*renamed generator.php and related functions/classes t= o get around=0Akeyword issue in > 5.5=0A=0AChanged paths:=0A M ext/gtk+/c= onfig.w32=0A M ext/libglade/config.w32=0A M ext/libsexy/config.w32=0A = M ext/sourceview/config.w32=0A D generator/generator.php=0A A generato= r/gtkgenerator.php=0A M main/php_gtk.h=0A M main/phpg_support.c=0A M = win32/config.w32.in=0A=0A --664b1a9984c02278f5843cc7ba629263cfe5c5ea Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diff_694fdabeb72d6dc0aee904359ed981201db4986f.txt" ZGlmZiAtLWdpdCBhL2V4dC9ndGsrL2NvbmZpZy53MzIgYi9leHQvZ3RrKy9jb25maWcudzMyCmlu ZGV4IGYyZDVlMzIuLjFlNzU2ZWUgMTAwNjQ0Ci0tLSBhL2V4dC9ndGsrL2NvbmZpZy53MzIKKysr IGIvZXh0L2d0aysvY29uZmlnLnczMgpAQCAtMjcsMTIgKzI3LDEyIEBAIGlmIChDSEVDS19IRUFE RVIoIm1haW4vcGhwLmgiKSAmJiBDSEVDS19MSUIoUEhQX0xJQikgJiYKIAkJLyogQ3JlYXRlIHRo ZSBmaWxlIGlmIGl0IGRvZXNuJ3QgZXhpc3QgKi8KIAkJdmFyIHRlbXAgPSBGU08uT3BlblRleHRG aWxlKCJ3aW4zMlxcdGVtcC5iYXQiLCA4KTsKIAkJLyogZ2VuZXJhdGUgc291cmNlIGFuZCBoZWFk ZXIgZmlsZXMgZm9yIGV4cG9ydGVkIFBIUC1HVEsgZnVuY3Rpb25zICovCi0JCXRlbXAuV3JpdGVM aW5lKCIvKiB1c2FnZTogcGhwIGdlbmVyYXRvci5waHAgWy1sIGxvZ2ZpbGVdIFstbyBvdmVycmlk ZXNmaWxlXSBbLXAgcHJlZml4XSBbLWMgZnVuY3Rpb25jbGFzcyBdIFstciB0eXBlc2ZpbGVdIFst ZiBzYXZlZmlsZV0gWy12IGd0a2xpYnZlcnNpb25dIGRlZnNmaWxlICovIik7CisJCXRlbXAuV3Jp dGVMaW5lKCIvKiB1c2FnZTogcGhwIGd0a2dlbmVyYXRvci5waHAgWy1sIGxvZ2ZpbGVdIFstbyBv dmVycmlkZXNmaWxlXSBbLXAgcHJlZml4XSBbLWMgZnVuY3Rpb25jbGFzcyBdIFstciB0eXBlc2Zp bGVdIFstZiBzYXZlZmlsZV0gWy12IGd0a2xpYnZlcnNpb25dIGRlZnNmaWxlICovIik7CiAJCXRl bXAuV3JpdGVMaW5lKCJta2RpciB3aW4zMlxcbG9ncyIpOwotCQl0ZW1wLldyaXRlTGluZSgicGhw IC1xIGdlbmVyYXRvclxcZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9nc1xcY29uZmlnX2F0ay5s b2cgLW8gZXh0XFxndGsrXFxhdGsub3ZlcnJpZGVzIC1wIGF0ayBleHRcXGd0aytcXGF0ay5kZWZz IC12ICIgKyBQSFBfR1RLX0xJQlZFUlNJT04gKyAiIC1mIGV4dFxcZ3RrK1xcZ2VuX2F0ay5jID4+ IHNvdXJjZXMudGVtcCIpOwotCQl0ZW1wLldyaXRlTGluZSgicGhwIC1xIGdlbmVyYXRvclxcZ2Vu ZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9nc1xcY29uZmlnX3BhbmdvLmxvZyAtbyBleHRcXGd0aytc XHBhbmdvLm92ZXJyaWRlcyAtcCBwYW5nbyBleHRcXGd0aytcXHBhbmdvLmRlZnMgLXYgIiArIFBI UF9HVEtfTElCVkVSU0lPTiArICIgLWYgZXh0XFxndGsrXFxnZW5fcGFuZ28uYyA+PiBzb3VyY2Vz LnRlbXAiKTsKLQkJdGVtcC5Xcml0ZUxpbmUoInBocCAtcSBnZW5lcmF0b3JcXGdlbmVyYXRvci5w aHAgLWwgd2luMzJcXGxvZ3NcXGNvbmZpZ19nZGsubG9nIC1vIGV4dFxcZ3RrK1xcZ2RrLm92ZXJy aWRlcyAtcCBnZGsgLXIgZXh0XFxndGsrXFxhdGstdHlwZXMuZGVmcyAtdiAiICsgUEhQX0dUS19M SUJWRVJTSU9OICsgIiAtciBleHRcXGd0aytcXHBhbmdvLXR5cGVzLmRlZnMgZXh0XFxndGsrXFxn ZGsuZGVmcyAtZiBleHRcXGd0aytcXGdlbl9nZGsuYyA+PiBzb3VyY2VzLnRlbXAiKTsKLQkJdGVt cC5Xcml0ZUxpbmUoInBocCAtcSBnZW5lcmF0b3JcXGdlbmVyYXRvci5waHAgLWwgd2luMzJcXGxv Z3NcXGNvbmZpZ19ndGsubG9nIC1vIGV4dFxcZ3RrK1xcZ3RrLm92ZXJyaWRlcyAtcCBndGsgLXIg ZXh0XFxndGsrXFxhdGstdHlwZXMuZGVmcyAtdiAiICsgUEhQX0dUS19MSUJWRVJTSU9OICsgIiAt ciBleHRcXGd0aytcXHBhbmdvLXR5cGVzLmRlZnMgLXIgZXh0XFxndGsrXFxnZGstdHlwZXMuZGVm cyBleHRcXGd0aytcXGd0ay5kZWZzIC1mIGV4dFxcZ3RrK1xcZ2VuX2d0ay5jID4+IHNvdXJjZXMu dGVtcCIpOworCQl0ZW1wLldyaXRlTGluZSgicGhwIC1xIGdlbmVyYXRvclxcZ3RrZ2VuZXJhdG9y LnBocCAtbCB3aW4zMlxcbG9nc1xcY29uZmlnX2F0ay5sb2cgLW8gZXh0XFxndGsrXFxhdGsub3Zl cnJpZGVzIC1wIGF0ayBleHRcXGd0aytcXGF0ay5kZWZzIC12ICIgKyBQSFBfR1RLX0xJQlZFUlNJ T04gKyAiIC1mIGV4dFxcZ3RrK1xcZ2VuX2F0ay5jID4+IHNvdXJjZXMudGVtcCIpOworCQl0ZW1w LldyaXRlTGluZSgicGhwIC1xIGdlbmVyYXRvclxcZ3RrZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxc bG9nc1xcY29uZmlnX3BhbmdvLmxvZyAtbyBleHRcXGd0aytcXHBhbmdvLm92ZXJyaWRlcyAtcCBw YW5nbyBleHRcXGd0aytcXHBhbmdvLmRlZnMgLXYgIiArIFBIUF9HVEtfTElCVkVSU0lPTiArICIg LWYgZXh0XFxndGsrXFxnZW5fcGFuZ28uYyA+PiBzb3VyY2VzLnRlbXAiKTsKKwkJdGVtcC5Xcml0 ZUxpbmUoInBocCAtcSBnZW5lcmF0b3JcXGd0a2dlbmVyYXRvci5waHAgLWwgd2luMzJcXGxvZ3Nc XGNvbmZpZ19nZGsubG9nIC1vIGV4dFxcZ3RrK1xcZ2RrLm92ZXJyaWRlcyAtcCBnZGsgLXIgZXh0 XFxndGsrXFxhdGstdHlwZXMuZGVmcyAtdiAiICsgUEhQX0dUS19MSUJWRVJTSU9OICsgIiAtciBl eHRcXGd0aytcXHBhbmdvLXR5cGVzLmRlZnMgZXh0XFxndGsrXFxnZGsuZGVmcyAtZiBleHRcXGd0 aytcXGdlbl9nZGsuYyA+PiBzb3VyY2VzLnRlbXAiKTsKKwkJdGVtcC5Xcml0ZUxpbmUoInBocCAt cSBnZW5lcmF0b3JcXGd0a2dlbmVyYXRvci5waHAgLWwgd2luMzJcXGxvZ3NcXGNvbmZpZ19ndGsu bG9nIC1vIGV4dFxcZ3RrK1xcZ3RrLm92ZXJyaWRlcyAtcCBndGsgLXIgZXh0XFxndGsrXFxhdGst dHlwZXMuZGVmcyAtdiAiICsgUEhQX0dUS19MSUJWRVJTSU9OICsgIiAtciBleHRcXGd0aytcXHBh bmdvLXR5cGVzLmRlZnMgLXIgZXh0XFxndGsrXFxnZGstdHlwZXMuZGVmcyBleHRcXGd0aytcXGd0 ay5kZWZzIC1mIGV4dFxcZ3RrK1xcZ2VuX2d0ay5jID4+IHNvdXJjZXMudGVtcCIpOwogCQl0ZW1w LldyaXRlTGluZSgnZ3JlcCAtaCAiXlBIUF9HVEtfRVhQT1JUX0NFIiBleHRcXGd0aytcXGdlbl9h dGsuYyB8IHNlZCAtZSAicy9eL1BIUF9HVEtfQVBJIGV4dGVybiAvIiA+IGV4dFxcZ3RrK1xcZ2Vu X2F0ay5oJyk7CiAJCXRlbXAuV3JpdGVMaW5lKCdncmVwIC1oICJeUEhQX0dUS19FWFBPUlRfQ0Ui IGV4dFxcZ3RrK1xcZ2VuX3BhbmdvLmMgfCBzZWQgLWUgInMvXi9QSFBfR1RLX0FQSSBleHRlcm4g LyIgPiBleHRcXGd0aytcXGdlbl9wYW5nby5oJyk7CiAJCXRlbXAuV3JpdGVMaW5lKCdncmVwIC1o ICJeUEhQX0dUS19FWFBPUlRfQ0UiIGV4dFxcZ3RrK1xcZ2VuX2dkay5jIHwgc2VkIC1lICJzL14v UEhQX0dUS19BUEkgZXh0ZXJuIC8iID4gZXh0XFxndGsrXFxnZW5fZ2RrLmgnKTsKZGlmZiAtLWdp dCBhL2V4dC9saWJnbGFkZS9jb25maWcudzMyIGIvZXh0L2xpYmdsYWRlL2NvbmZpZy53MzIKaW5k ZXggNzhiNTBiNC4uYTZlZTc0NSAxMDA2NDQKLS0tIGEvZXh0L2xpYmdsYWRlL2NvbmZpZy53MzIK KysrIGIvZXh0L2xpYmdsYWRlL2NvbmZpZy53MzIKQEAgLTksNyArOSw3IEBAIGlmIChQSFBfR1RL X0xJQkdMQURFICE9ICJubyIgfHwgUEhQX0dUS19BTEwgIT0gIm5vIikgewogCiAJCQl2YXIgdGVt cCA9IEZTTy5PcGVuVGV4dEZpbGUoIndpbjMyXFx0ZW1wLmJhdCIsIDgpOwogCi0JCQl0ZW1wLldy aXRlTGluZSgicGhwIC1xIGdlbmVyYXRvclxcZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9nc1xc Y29uZmlnX2dsYWRlLmxvZyAtbyBleHRcXGxpYmdsYWRlXFxsaWJnbGFkZS5vdmVycmlkZXMgLXAg Z2xhZGUgLXIgZXh0XFxndGsrXFxndGsuZGVmcyBleHRcXGxpYmdsYWRlXFxsaWJnbGFkZS5kZWZz IC1mIGV4dFxcbGliZ2xhZGVcXGdlbl9saWJnbGFkZS5jIik7CisJCQl0ZW1wLldyaXRlTGluZSgi cGhwIC1xIGdlbmVyYXRvclxcZ3RrZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9nc1xcY29uZmln X2dsYWRlLmxvZyAtbyBleHRcXGxpYmdsYWRlXFxsaWJnbGFkZS5vdmVycmlkZXMgLXAgZ2xhZGUg LXIgZXh0XFxndGsrXFxndGsuZGVmcyBleHRcXGxpYmdsYWRlXFxsaWJnbGFkZS5kZWZzIC1mIGV4 dFxcbGliZ2xhZGVcXGdlbl9saWJnbGFkZS5jIik7CiAKIAkJCXRlbXAuV3JpdGVMaW5lKCdncmVw IC1oICJeUEhQX0dUS19FWFBPUlRfQ0UiIGV4dFxcbGliZ2xhZGVcXGdlbl9saWJnbGFkZS5jIHwg c2VkIC1lICJzL14vUEhQX0dUS19BUEkgZXh0ZXJuIC8iID4gZXh0XFxsaWJnbGFkZVxcZ2VuX2xp YmdsYWRlLmgnKTsKIApkaWZmIC0tZ2l0IGEvZXh0L2xpYnNleHkvY29uZmlnLnczMiBiL2V4dC9s aWJzZXh5L2NvbmZpZy53MzIKaW5kZXggMDg4MzJjMy4uNTU0MjA3YSAxMDA2NDQKLS0tIGEvZXh0 L2xpYnNleHkvY29uZmlnLnczMgorKysgYi9leHQvbGlic2V4eS9jb25maWcudzMyCkBAIC02LDcg KzYsNyBAQCBpZiAoUEhQX0dUS19MSUJTRVhZICE9ICJubyIgfHwgUEhQX0dUS19BTEwgIT0gIm5v IikKIAkJaWYgKEZTTy5GaWxlRXhpc3RzKCJ3aW4zMlxcdGVtcC5iYXQiKSkKIAkJeyAKIAkJCXZh ciB0ZW1wID0gRlNPLk9wZW5UZXh0RmlsZSgid2luMzJcXHRlbXAuYmF0IiwgOCk7Ci0JCQl0ZW1w LldyaXRlTGluZSgicGhwIC1xIGdlbmVyYXRvclxcZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9n c1xcY29uZmlnX2xpYnNleHkubG9nIC1vIGV4dFxcbGlic2V4eVxcc2V4eS5vdmVycmlkZXMgLXAg c2V4eSAtciBleHRcXGd0aytcXGd0ay5kZWZzIGV4dFxcbGlic2V4eVxcc2V4eS5kZWZzID4gZXh0 XFxsaWJzZXh5XFxnZW5fbGlic2V4eS5jIik7CisJCQl0ZW1wLldyaXRlTGluZSgicGhwIC1xIGdl bmVyYXRvclxcZ3RrZ2VuZXJhdG9yLnBocCAtbCB3aW4zMlxcbG9nc1xcY29uZmlnX2xpYnNleHku bG9nIC1vIGV4dFxcbGlic2V4eVxcc2V4eS5vdmVycmlkZXMgLXAgc2V4eSAtciBleHRcXGd0aytc XGd0ay5kZWZzIGV4dFxcbGlic2V4eVxcc2V4eS5kZWZzID4gZXh0XFxsaWJzZXh5XFxnZW5fbGli c2V4eS5jIik7CiAJCQl0ZW1wLldyaXRlTGluZSgnZ3JlcCAtaCAiXlBIUF9HVEtfRVhQT1JUX0NF IiBleHRcXGxpYnNleHlcXGdlbl9saWJzZXh5LmMgfCBzZWQgLWUgInMvXi9QSFBfR1RLX0FQSSBl eHRlcm4gLyIgPiBleHRcXGxpYnNleHlcXGdlbl9saWJzZXh5LmgnKTsKICAJCQl0ZW1wLkNsb3Nl KCk7IAkJCiAJCX0KZGlmZiAtLWdpdCBhL2V4dC9zb3VyY2V2aWV3L2NvbmZpZy53MzIgYi9leHQv c291cmNldmlldy9jb25maWcudzMyCmluZGV4IDgxNTUwMmYuLjFkMWJjM2YgMTAwNjQ0Ci0tLSBh L2V4dC9zb3VyY2V2aWV3L2NvbmZpZy53MzIKKysrIGIvZXh0L3NvdXJjZXZpZXcvY29uZmlnLncz MgpAQCAtNyw3ICs3LDcgQEAgaWYgKFBIUF9HVEtfU09VUkNFVklFVyAhPSAibm8iIHx8IFBIUF9H VEtfQUxMICE9ICJubyIpIHsKIAkJaWYgKEZTTy5GaWxlRXhpc3RzKCJ3aW4zMlxcdGVtcC5iYXQi KSkgewogCiAJCQl2YXIgdGVtcCA9IEZTTy5PcGVuVGV4dEZpbGUoIndpbjMyXFx0ZW1wLmJhdCIs IDgpOwotCQkJdGVtcC5Xcml0ZUxpbmUoInBocCAtcSBnZW5lcmF0b3JcXGdlbmVyYXRvci5waHAg LWwgd2luMzJcXGxvZ3NcXGNvbmZpZ19zb3VyY2V2aWV3LmxvZyAtbyBleHRcXHNvdXJjZXZpZXdc XHNvdXJjZXZpZXcub3ZlcnJpZGVzIC1wIGd0a3NvdXJjZXZpZXcgLXIgZXh0XFxndGsrXFxndGsu ZGVmcyBleHRcXHNvdXJjZXZpZXdcXHNvdXJjZXZpZXcuZGVmcyA+IGV4dFxcc291cmNldmlld1xc Z2VuX3NvdXJjZXZpZXcuYyIpOworCQkJdGVtcC5Xcml0ZUxpbmUoInBocCAtcSBnZW5lcmF0b3Jc XGd0a2dlbmVyYXRvci5waHAgLWwgd2luMzJcXGxvZ3NcXGNvbmZpZ19zb3VyY2V2aWV3LmxvZyAt byBleHRcXHNvdXJjZXZpZXdcXHNvdXJjZXZpZXcub3ZlcnJpZGVzIC1wIGd0a3NvdXJjZXZpZXcg LXIgZXh0XFxndGsrXFxndGsuZGVmcyBleHRcXHNvdXJjZXZpZXdcXHNvdXJjZXZpZXcuZGVmcyA+ IGV4dFxcc291cmNldmlld1xcZ2VuX3NvdXJjZXZpZXcuYyIpOwogICAgICAgICAgICAgICAgICAg dGVtcC5Xcml0ZUxpbmUoJ2dyZXAgLWggIl5QSFBfR1RLX0VYUE9SVF9DRSIgZXh0XFxzb3VyY2V2 aWV3XFxnZW5fc291cmNldmlldy5jIHwgc2VkIC1lICJzL14vUEhQX0dUS19BUEkgZXh0ZXJuIC8i ID4gZXh0XFxzb3VyY2V2aWV3XFxnZW5fc291cmNldmlldy5oJyk7CQkKIAkJCXRlbXAuQ2xvc2Uo KTsKIAkJfQpkaWZmIC0tZ2l0IGEvZ2VuZXJhdG9yL2dlbmVyYXRvci5waHAgYi9nZW5lcmF0b3Iv Z2VuZXJhdG9yLnBocApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY0ODM2ZC4uMDAw MDAwMAotLS0gYS9nZW5lcmF0b3IvZ2VuZXJhdG9yLnBocAorKysgL2Rldi9udWxsCkBAIC0xLDE1 ODEgKzAsMCBAQAotPD9waHAKLS8qCi0gKiBQSFAtR1RLIC0gVGhlIFBIUCBsYW5ndWFnZSBiaW5k aW5ncyBmb3IgR1RLKwotICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDA4IEFuZHJlaSBabWll dnNraSA8YW5kcmVpQHBocC5uZXQ+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSAqIAotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKiAKLSAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK LSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp dGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKLSAqLwotCi0vKiAkSWQkICovCi0K LS8qCi0gKiBTaWduaWZpY2FudCBwb3J0aW9ucyBvZiB0aGlzIGdlbmVyYXRvciBhcmUgYmFzZWQg b24gdGhlIHB5Z3RrIGNvZGUgZ2VuZXJhdG9yCi0gKiBkZXZlbG9wZWQgYnkgSmFtZXMgSGVuc3Ry aWRnZSA8amFtZXNoQGRhYS5jb20uYXU+LgotICoKLSAqLwotCi1zZXRfdGltZV9saW1pdCgzMDAp OwotCi0vLyBvdmVycmlkZSB0aGUgZGVmYXVsdCBQSFAgOE1iIGFzIHRoaXMgc2NyaXB0IHRlbmRz IHRvIHVzZSBhIGxvdCBtb3JlCi0vLyBhbmQgaG9wZWZ1bGx5IHJlZHVjZSB0aGUgc3VwcG9ydCBx dWVzdGlvbnMgYSBiaXQuLgotLy8gTWFrZSBpdCAtMSBpbnN0ZWFkIDopCi1pbmlfc2V0KCdtZW1v cnlfbGltaXQnLCctMScpOwotCi1pZiAoc3Ryc3RyKFBIUF9PUywgJ1dJTicpKSB7Ci0JZGVmaW5l KCdXSU5fT1MnLCB0cnVlKTsKLX0gZWxzZSB7Ci0JZGVmaW5lKCdXSU5fT1MnLCBmYWxzZSk7Ci19 Ci0KLXJlcXVpcmUgZGlybmFtZShfX0ZJTEVfXykgLiAiL0dldG9wdC5waHAiOwotcmVxdWlyZSBk aXJuYW1lKF9fRklMRV9fKSAuICIvb3ZlcnJpZGUucGhwIjsKLXJlcXVpcmUgZGlybmFtZShfX0ZJ TEVfXykgLiAiL2FyZ190eXBlcy5waHAiOwotcmVxdWlyZSBkaXJuYW1lKF9fRklMRV9fKSAuICIv c2NoZW1lLnBocCI7Ci1yZXF1aXJlIGRpcm5hbWUoX19GSUxFX18pIC4gIi90ZW1wbGF0ZXMucGhw IjsKLXJlcXVpcmUgZGlybmFtZShfX0ZJTEVfXykgLiAiL2FycmF5X3ByaW50Zi5waHAiOwotcmVx dWlyZSBkaXJuYW1lKF9fRklMRV9fKSAuICIvbGluZW91dHB1dC5waHAiOwotCi1jbGFzcyBHZW5l cmF0b3IgewotICAgIHZhciAkcGFyc2VyICAgICAgICAgICAgID0gbnVsbDsKLSAgICB2YXIgJG92 ZXJyaWRlcyAgICAgICAgICA9IG51bGw7Ci0gICAgdmFyICRwcmVmaXggICAgICAgICAgICAgPSBu dWxsOwotICAgIHZhciAkbHByZWZpeCAgICAgICAgICAgID0gbnVsbDsKLSAgICB2YXIgJGZ1bmN0 aW9uX2NsYXNzICAgICA9IG51bGw7Ci0gICAgdmFyICRsb2dmaWxlICAgICAgICAgICAgPSBudWxs OwotICAgIHZhciAkZGl2ZXJzaW9ucyAgICAgICAgID0gbnVsbDsKLQotICAgIHZhciAkZ3R5cGVf Y29uc3RhbnRzICAgID0gJyc7Ci0KLSAgICB2YXIgJHRlbXBsYXRlX21hcCAgICAgICA9IGFycmF5 KCdvYmplY3QnID0+IGFycmF5KCdjb25zdHJ1Y3RvcicgPT4gVGVtcGxhdGVzOjpjb25zdHJ1Y3Rv cl9ib2R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3N0YXRpY19jb25zdHJ1Y3RvcicgPT4gVGVtcGxhdGVzOjpzdGF0aWNfY29uc3RydWN0 b3JfYm9keSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdtZXRob2QnID0+IFRlbXBsYXRlczo6bWV0aG9kX2JvZHksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcCcgPT4gVGVtcGxh dGVzOjpwcm9wX2FjY2VzcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Ym94ZWQnICA9PiBhcnJheSgnY29uc3RydWN0b3InID0+IFRlbXBsYXRlczo6Ym94ZWRfY29uc3Ry dWN0b3JfYm9keSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdzdGF0aWNfY29uc3RydWN0b3InID0+IFRlbXBsYXRlczo6Ym94ZWRfc3RhdGlj X2NvbnN0cnVjdG9yX2JvZHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnbWV0aG9kJyA9PiBUZW1wbGF0ZXM6OmJveGVkX21ldGhvZF9ib2R5 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J3Byb3AnID0+IFRlbXBsYXRlczo6Ym94ZWRfcHJvcF9hY2Nlc3MpLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZScgPT4gYXJyYXkoJ21ldGhvZCcgPT4gVGVt cGxhdGVzOjptZXRob2RfYm9keSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAncG9pbnRlcicgPT4gYXJyYXkoJ21ldGhvZCcgPT4gVGVtcGxhdGVzOjpwb2ludGVyX21ldGhv ZF9ib2R5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICB2YXIg JGhhbmRsZXJzICAgICAgICAgICA9IGFycmF5KCdyZWFkX3Byb3BlcnR5JywgJ3dyaXRlX3Byb3Bl cnR5JywgJ2dldF9wcm9wZXJ0aWVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdyZWFkX2RpbWVuc2lvbicsICd3cml0ZV9kaW1lbnNpb24nLCAnaGFzX2RpbWVuc2lvbics Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5zZXRfZGltZW5zaW9uJywg J2NvdW50X2VsZW1lbnRzJyk7Ci0gICAgdmFyICRjb3ZlciAgICAgICAgICAgICAgPSBhcnJheSgp OwotCi0gICAgZnVuY3Rpb24gR2VuZXJhdG9yKCYkcGFyc2VyLCAmJG92ZXJyaWRlcywgJHByZWZp eCwgJGZ1bmN0aW9uX2NsYXNzKQotICAgIHsKLSAgICAgICAgJHRoaXMtPnBhcnNlciAgICA9ICYk cGFyc2VyOwotICAgICAgICAkdGhpcy0+b3ZlcnJpZGVzID0gJiRvdmVycmlkZXM7Ci0gICAgICAg ICR0aGlzLT5wcmVmaXggICAgPSB1Y2ZpcnN0KCRwcmVmaXgpOwotICAgICAgICAkdGhpcy0+bHBy ZWZpeCAgID0gc3RydG9sb3dlcigkcHJlZml4KTsKLSAgICAgICAgJHRoaXMtPmZ1bmN0aW9uX2Ns YXNzID0gJGZ1bmN0aW9uX2NsYXNzOwotCi0gICAgICAgICR0aGlzLT5jb3ZlclsiZnVuY3MiXSA9 IG5ldyBDb3ZlcmFnZSgiRnVuY3Rpb25zIik7Ci0gICAgICAgICR0aGlzLT5jb3ZlclsibWV0aG9k cyJdID0gbmV3IENvdmVyYWdlKCJNZXRob2RzIik7Ci0gICAgICAgICR0aGlzLT5jb3ZlclsiY3Rv cnMiXSA9IG5ldyBDb3ZlcmFnZSgiQ29uc3RydWN0b3JzIik7Ci0gICAgICAgICR0aGlzLT5jb3Zl clsicHJvcHMiXSA9IG5ldyBDb3ZlcmFnZSgiUHJvcGVydHkgYWNjZXNzb3JzIik7Ci0gICAgfQot Ci0gICAgZnVuY3Rpb24gc2V0X2xvZ2ZpbGUoJGxvZ2ZpbGUpIHsKLSAgICAgICAgJHRoaXMtPmxv Z2ZpbGUgPSBmb3BlbigkbG9nZmlsZSwgJ3cnKTsKLSAgICB9Ci0gICAgCi0gICAgZnVuY3Rpb24g bG9nX3ByaW50KCkKLSAgICB7Ci0gICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwotICAg ICAgICBpZiAoY291bnQoJGFyZ3MpID09IDApIHJldHVybjsKLQotICAgICAgICAkZm9ybWF0ID0g YXJyYXlfc2hpZnQoJGFyZ3MpOwotCi0gICAgICAgICRvdXRwdXQgPSB2c3ByaW50ZigkZm9ybWF0 LCAkYXJncyk7Ci0KLSAgICAgICAgaWYgKCFXSU5fT1MpIHsKLSAgICAgICAgICAgIGVjaG8gJG91 dHB1dDsKLSAgICAgICAgfQotCi0gICAgICAgIGZ3cml0ZSgkdGhpcy0+bG9nZmlsZSwgJG91dHB1 dCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbG9nKCkKLSAgICB7Ci0gICAgICAgICRhcmdzID0g ZnVuY19nZXRfYXJncygpOwotICAgICAgICBpZiAoY291bnQoJGFyZ3MpID09IDApIHJldHVybjsK LQotICAgICAgICAkZm9ybWF0ID0gYXJyYXlfc2hpZnQoJGFyZ3MpOwotCi0gICAgICAgIGZ3cml0 ZSgkdGhpcy0+bG9nZmlsZSwgdnNwcmludGYoJGZvcm1hdCwgJGFyZ3MpKTsKLSAgICB9Ci0KLSAg ICBmdW5jdGlvbiBkaXZlcnQoKQotICAgIHsKLSAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdz KCk7Ci0gICAgICAgIGlmIChjb3VudCgkYXJncykgPCAyKSByZXR1cm47Ci0KLSAgICAgICAgbGlz dCAoJGRpdmVydF9pZCwgJGZvcm1hdCkgPSAkYXJnczsKLQotICAgICAgICBAJHRoaXMtPmRpdmVy c2lvbnNbJGRpdmVydF9pZF0gLj0gdnNwcmludGYoJGZvcm1hdCwgYXJyYXlfc2xpY2UoJGFyZ3Ms IDIpKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiByZWdpc3Rlcl90eXBlcygkcGFyc2VyID0gbnVs bCkKLSAgICB7Ci0gICAgICAgIGdsb2JhbCAgJG1hdGNoZXI7Ci0KLSAgICAgICAgaWYgKCEkcGFy c2VyKQotICAgICAgICAgICAgJHBhcnNlciA9ICR0aGlzLT5wYXJzZXI7Ci0KLSAgICAgICAgZm9y ZWFjaCAoJHBhcnNlci0+b2JqZWN0cyBhcyAkb2JqZWN0KSB7Ci0gICAgICAgICAgICAkbWF0Y2hl ci0+cmVnaXN0ZXJfb2JqZWN0KCRvYmplY3QtPmNfbmFtZSwgJG9iamVjdC0+dHlwZWNvZGUpOwot ICAgICAgICB9Ci0KLSAgICAgICAgZm9yZWFjaCAoJHBhcnNlci0+aW50ZXJmYWNlcyBhcyAkaW50 ZXJmYWNlKSB7Ci0gICAgICAgICAgICAkbWF0Y2hlci0+cmVnaXN0ZXJfb2JqZWN0KCRpbnRlcmZh Y2UtPmNfbmFtZSwgJGludGVyZmFjZS0+dHlwZWNvZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAg Zm9yZWFjaCAoJHBhcnNlci0+ZW51bXMgYXMgJGVudW0pIHsKLSAgICAgICAgICAgIGlmICgkZW51 bS0+ZGVmX3R5cGUgPT0gJ2ZsYWdzJykKLSAgICAgICAgICAgICAgICAkbWF0Y2hlci0+cmVnaXN0 ZXJfZmxhZygkZW51bS0+Y19uYW1lLCAkZW51bS0+dHlwZWNvZGUpOwotICAgICAgICAgICAgZWxz ZQotICAgICAgICAgICAgICAgICRtYXRjaGVyLT5yZWdpc3Rlcl9lbnVtKCRlbnVtLT5jX25hbWUs ICRlbnVtLT50eXBlY29kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JlYWNoICgkcGFyc2Vy LT5ib3hlZCBhcyAkYm94ZWQpIHsKLSAgICAgICAgICAgICRtYXRjaGVyLT5yZWdpc3Rlcl9ib3hl ZCgkYm94ZWQtPmNfbmFtZSwgJGJveGVkLT50eXBlY29kZSk7Ci0gICAgICAgIH0KLQotICAgICAg ICBmb3JlYWNoICgkcGFyc2VyLT5wb2ludGVycyBhcyAkcG9pbnRlcikgewotICAgICAgICAgICAg JG1hdGNoZXItPnJlZ2lzdGVyX3BvaW50ZXIoJHBvaW50ZXItPmNfbmFtZSwgJHBvaW50ZXItPnR5 cGVjb2RlKTsKLSAgICAgICAgfQotICAgIH0KLQotCi0gICAgZnVuY3Rpb24gd3JpdGVfb3ZlcnJp ZGUoJG92ZXJyaWRlLCAkaWQpCi0gICAgewotICAgICAgICAkYXJncyA9IGFycmF5X3NsaWNlKGZ1 bmNfZ2V0X2FyZ3MoKSwgMSk7Ci0gICAgICAgIGxpc3QoJGxpbmVubywgJGZpbGVfbmFtZSkgPSAk dGhpcy0+b3ZlcnJpZGVzLT5nZXRfbGluZV9pbmZvKGpvaW4oJy4nLCAkYXJncykpOyAKLSAgICAg ICAgJHRoaXMtPmZwLT5zZXRfbGluZSgkbGluZW5vLCAkZmlsZV9uYW1lKTsKLSAgICAgICAgJHRo aXMtPmZwLT53cml0ZSgkb3ZlcnJpZGUpOwotICAgICAgICAkdGhpcy0+ZnAtPnJlc2V0X2xpbmUo KTsKLSAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgiXG5cbiIpOwotICAgIH0KLQotCi0gICAgZnVu Y3Rpb24gd3JpdGVfY2FsbGFibGUoJGNhbGxhYmxlLCAkdGVtcGxhdGUsICRoYW5kbGVfcmV0dXJu ID0gZmFsc2UsICRpc19tZXRob2QgPSBmYWxzZSwgJGRpY3QgPSBhcnJheSgpKQotICAgIHsKLSAg ICAgICAgZ2xvYmFsICRtYXRjaGVyOwotCi0gICAgICAgIGlmICgkY2FsbGFibGUtPnZhcmFyZ3Mp IHsKLSAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ3ZhcmFyZ3MgbWV0aG9kcyBub3Qg c3VwcG9ydGVkJyk7Ci0gICAgICAgIH0KLQotICAgICAgICAkaW5mbyA9IG5ldyBXcmFwcGVyX0lu Zm8oKTsKLSAgICAgICAgLyoKLSAgICAgICAgICogU2xpZ2h0IGhhY2sgdGhhdCByZWxpZXMgb24g Ym90aCBwYXJhbWV0ZXJzIGJlaW5nIGZhbHNlIHdoZW4gdXNlZCB0bwotICAgICAgICAgKiB3cml0 ZSBvdXQgYSBjb25zdHJ1Y3Rvci4KLSAgICAgICAgICovCi0gICAgICAgIGlmICghJGhhbmRsZV9y ZXR1cm4gJiYgISRpc19tZXRob2QpIHsKLSAgICAgICAgICAgICRpbmZvLT5lcnJvcl9hY3Rpb24g PSAiUEhQR19USFJPV19DT05TVFJVQ1RfRVhDRVBUSU9OKCRkaWN0W2NsYXNzXSkiOwotICAgICAg ICB9Ci0KLSAgICAgICAgLyogbmVlZCB0aGUgZXh0cmEgY29tbWEgZm9yIG1ldGhvZHMgKi8KLSAg ICAgICAgaWYgKCRpc19tZXRob2QpIHsKLSAgICAgICAgICAgICRpbmZvLT5hcmdfbGlzdFtdID0g Jyc7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JlYWNoICgkY2FsbGFibGUtPnBhcmFtcyBhcyAk cGFyYW1zX2FycmF5KSB7Ci0gICAgICAgICAgICBsaXN0KCRwYXJhbV90eXBlLCAkcGFyYW1fbmFt ZSwgJHBhcmFtX2RlZmF1bHQsICRwYXJhbV9udWxsKSA9ICRwYXJhbXNfYXJyYXk7Ci0KLSAgICAg ICAgICAgIGlmIChpc3NldCgkcGFyYW1fZGVmYXVsdCkgJiYgc3RycG9zKCRpbmZvLT5zcGVjaWZp ZXJzLCAnfCcpID09PSBmYWxzZSkgewotICAgICAgICAgICAgICAgICRpbmZvLT5hZGRfcGFyc2Vf bGlzdCgnfCcpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAkaGFuZGxlciA9ICRtYXRj aGVyLT5nZXQoJHBhcmFtX3R5cGUpOwotICAgICAgICAgICAgJGhhbmRsZXItPndyaXRlX3BhcmFt KCRwYXJhbV90eXBlLCAkcGFyYW1fbmFtZSwgJHBhcmFtX2RlZmF1bHQsICRwYXJhbV9udWxsLCAk aW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICAkZGljdFsncmV0dXJuJ10gPSAnJzsKLSAgICAg ICAgaWYgKCRoYW5kbGVfcmV0dXJuKSB7Ci0gICAgICAgICAgICBpZiAoJGNhbGxhYmxlLT5yZXR1 cm5fdHlwZSAhPT0gbnVsbCAmJgotICAgICAgICAgICAgICAgICRjYWxsYWJsZS0+cmV0dXJuX3R5 cGUgIT0gJ25vbmUnKSB7Ci0gICAgICAgICAgICAgICAgJGRpY3RbJ3JldHVybiddID0gJ3BocF9y ZXR2YWwgPSAnOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgJGhhbmRsZXIgPSAkbWF0Y2hl ci0+Z2V0KCRjYWxsYWJsZS0+cmV0dXJuX3R5cGUpOwotICAgICAgICAgICAgJGhhbmRsZXItPndy aXRlX3JldHVybigkY2FsbGFibGUtPnJldHVybl90eXBlLCAkY2FsbGFibGUtPmNhbGxlcl9vd25z X3JldHVybiwgJGluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzc2V0KCRjYWxsYWJs ZS0+ZGVwcmVjYXRlZCkpIHsKLSAgICAgICAgICAgICRpbmZvLT5wcmVfY29kZVtdID0gc3ByaW50 ZihUZW1wbGF0ZXM6OmRlcHJlY2F0aW9uX21zZywgJGNhbGxhYmxlLT5kZXByZWNhdGVkID8gJyIn LiRjYWxsYWJsZS0+ZGVwcmVjYXRlZC4nIicgOiAnTlVMTCcpOwotICAgICAgICB9Ci0KLSAgICAg ICAgaWYgKCFpc3NldCgkZGljdFsnbmFtZSddKSkgewotICAgICAgICAgICAgJGRpY3RbJ25hbWUn XSA9ICRjYWxsYWJsZS0+bmFtZTsKLSAgICAgICAgfQotICAgICAgICAkZGljdFsnY25hbWUnXSA9 ICRjYWxsYWJsZS0+Y19uYW1lOwotICAgICAgICAkZGljdFsndmFyX2xpc3QnXSA9ICRpbmZvLT5n ZXRfdmFyX2xpc3QoKTsKLSAgICAgICAgJGRpY3RbJ3NwZWNzJ10gPSAkaW5mby0+c3BlY2lmaWVy czsKLSAgICAgICAgJGRpY3RbJ3BhcnNlX2xpc3QnXSA9ICRpbmZvLT5nZXRfcGFyc2VfbGlzdCgp OwotICAgICAgICAkZGljdFsnYXJnX2xpc3QnXSA9ICRpbmZvLT5nZXRfYXJnX2xpc3QoKTsKLSAg ICAgICAgJGRpY3RbJ3ByZV9jb2RlJ10gPSAkaW5mby0+Z2V0X3ByZV9jb2RlKCk7Ci0gICAgICAg ICRkaWN0Wydwb3N0X2NvZGUnXSA9ICRpbmZvLT5nZXRfcG9zdF9jb2RlKCk7Ci0KLSAgICAgICAg aWYgKCFlbXB0eSgkZGljdFsnY3Rvcl93aXRoX3Byb3BzJ10pKSB7Ci0gICAgICAgICAgICAkZGlj dFsnbl9wYXJhbXMnXSA9IGNvdW50KChhcnJheSkkY2FsbGFibGUtPnBhcmFtcyk7Ci0gICAgICAg ICAgICAkZGljdFsnbl9hcmdzJ10gPSAkZGljdFsnbl9wYXJhbXMnXSArIDE7Ci0gICAgICAgICAg ICAkcHJvcF9uYW1lcyA9ICcnOwotICAgICAgICAgICAgZm9yZWFjaCAoJGNhbGxhYmxlLT5wcm9w ZXJ0aWVzIGFzICRwcm9wKSB7Ci0gICAgICAgICAgICAgICAgJHByb3BfbmFtZXMgLj0gJyInIC4g JHByb3BbMF0gLiAnIiwgJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICRkaWN0Wydwcm9w cyddID0gJHByb3BfbmFtZXM7Ci0gICAgICAgICAgICAkbiA9IDA7Ci0gICAgICAgICAgICBmb3Ig KCRpID0gMDsgJGkgPCBjb3VudCgkaW5mby0+cGFyc2VfbGlzdCk7ICRpKyspIHsKLSAgICAgICAg ICAgICAgICBpZiAoJGluZm8tPnBhcnNlX2xpc3RbJGldICYmICRpbmZvLT5wYXJzZV9saXN0WyRp XXswfSA9PSAnJicpIHsKLSAgICAgICAgICAgICAgICAgICAgJGluZm8tPnBhcnNlX2xpc3RbJGld ID0gIiZwaHBfYXJnc1skbl0iOwotICAgICAgICAgICAgICAgICAgICAkbisrOwotICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICRkaWN0WydzcGVjcyddID0gcHJl Z19yZXBsYWNlKCcsKFtefCEvXSksJywgJ14kMScsICRkaWN0WydzcGVjcyddKTsKLSAgICAgICAg ICAgICRkaWN0WydwYXJzZV9saXN0J10gPSAkaW5mby0+Z2V0X3BhcnNlX2xpc3QoKTsKLSAgICAg ICAgICAgICRkaWN0WydwcmVfY29kZSddID0gJyc7Ci0gICAgICAgICAgICAkZGljdFsncG9zdF9j b2RlJ10gPSAnJzsKLQotICAgICAgICAgICAgLy8gUmVwbGFjZSBhbnkgcmVtb3ZlZCBkZXByZWNh dGlvbiBtZXNzYWdlcwotICAgICAgICAgICAgaWYgKGlzc2V0KCRjYWxsYWJsZS0+ZGVwcmVjYXRl ZCkpIHsKLSAgICAgICAgICAgICAgICAkZGljdFsncHJlX2NvZGUnXSA9IHNwcmludGYoVGVtcGxh dGVzOjpkZXByZWNhdGlvbl9tc2csICRjYWxsYWJsZS0+ZGVwcmVjYXRlZCA/ICciJy4kY2FsbGFi bGUtPmRlcHJlY2F0ZWQuJyInIDogJ05VTEwnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot Ci0gICAgICAgIHJldHVybiBhcHJpbnRmKCR0ZW1wbGF0ZSwgJGRpY3QpOwotICAgIH0KLQotCi0g ICAgZnVuY3Rpb24gd3JpdGVfbWV0aG9kcygkb2JqZWN0KQotICAgIHsKLSAgICAgICAgJHRoaXMt PmxvZ19wcmludCgiICAlLTIwcyAiLCAibWV0aG9kcyIpOwotCi0gICAgICAgICRudW1fd3JpdHRl biA9ICRudW1fc2tpcHBlZCA9IDA7Ci0gICAgICAgICRtZXRob2RfZW50cmllcyA9IGFycmF5KCk7 Ci0KLSAgICAgICAgJG1ldGhvZHMgPSAkdGhpcy0+cGFyc2VyLT5maW5kX21ldGhvZHMoJG9iamVj dCk7Ci0KLSAgICAgICAgJGRpY3RbJ2NsYXNzJ10gPSAkb2JqZWN0LT5jX25hbWU7Ci0gICAgICAg ICRkaWN0WydzY29wZSddID0gJG9iamVjdC0+Y19uYW1lOwotICAgICAgICAkZGljdFsndHlwZWNv ZGUnXSA9ICRvYmplY3QtPnR5cGVjb2RlOwotCi0gICAgICAgIHN3aXRjaCAoJG9iamVjdC0+ZGVm X3R5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6Ci0gICAgICAgICAgICBjYXNlICdp bnRlcmZhY2UnOgotICAgICAgICAgICAgICAgICRkaWN0WydjYXN0J10gPSBwcmVnX3JlcGxhY2Uo JyFfVFlQRV8hJywgJ18nLCAkb2JqZWN0LT50eXBlY29kZSwgMSk7Ci0gICAgICAgICAgICAgICAg YnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgJ2JveGVkJzoKLSAgICAgICAgICAgIGNhc2UgJ3Bv aW50ZXInOgotICAgICAgICAgICAgICAgICRkaWN0WydjYXN0J10gPSAkb2JqZWN0LT5jX25hbWUg LiAnIConOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBkZWZhdWx0Ogot ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oInVuaGFuZGxlZCBkZWZpbml0aW9u IHR5cGUiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgICRv YmplY3QtPm1ldGhvZHMgPSBhcnJheSgpOwotICAgICAgICAkbWV0aG9kYXJnaW5mb3MgPSAnJzsK LQotICAgICAgICBmb3JlYWNoICgkbWV0aG9kcyBhcyAkbWV0aG9kKSB7Ci0gICAgICAgICAgICAk bWV0aG9kX25hbWUgPSAkbWV0aG9kLT5jX25hbWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg IC8qIHNraXAgaWdub3JlZCBtZXRob2RzICovCi0gICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJy aWRlcy0+aXNfaWdub3JlZCgkbWV0aG9kX25hbWUpKSBjb250aW51ZTsKLQotICAgICAgICAgICAg dHJ5IHsKLSAgICAgICAgICAgICAgICBsaXN0KCRhcmdpbmZvLCAkcmVmbGVjdGlvbl9mdW5jKSA9 ICR0aGlzLT5nZW5SZWZsZWN0aW9uQXJnSW5mbygkbWV0aG9kLCAkb2JqZWN0KTsKLSAgICAgICAg ICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoKCRvdmVycmlkZW4gPSAkdGhpcy0+b3ZlcnJp ZGVzLT5pc19vdmVycmlkZW4oJG1ldGhvZF9uYW1lKSkpIHsKLSAgICAgICAgICAgICAgICAgICAg bGlzdCgkbWV0aG9kX25hbWUsICRtZXRob2Rfb3ZlcnJpZGUsICRmbGFncykgPSAkdGhpcy0+b3Zl cnJpZGVzLT5nZXRfb3ZlcnJpZGUoJG1ldGhvZF9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAg aWYgKCFpc3NldCgkbWV0aG9kX25hbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgJG1ldGhv ZF9uYW1lID0gJG1ldGhvZC0+bmFtZTsKLSAgICAgICAgICAgICAgICAgICAgJG1ldGhvZF9vdmVy cmlkZSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBfTUVUSE9EKS4qJCFtJywgInN0YXRpYyAkMSgk b2JqZWN0LT5pbl9tb2R1bGUkb2JqZWN0LT5uYW1lLCAkbWV0aG9kX25hbWUpIiwgJG1ldGhvZF9v dmVycmlkZSk7Ci0gICAgICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZV9vdmVycmlkZSgkbWV0 aG9kX292ZXJyaWRlLCAkbWV0aG9kLT5jX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAkbWV0 aG9kX2VudHJpZXNbJG1ldGhvZF9uYW1lXSA9IGFycmF5KCRvYmplY3QtPmluX21vZHVsZSAuICRv YmplY3QtPm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJG1ldGhvZF9uYW1lLCAkcmVmbGVjdGlvbl9mdW5jLCAkZmxhZ3MgPyAg JGZsYWdzIDogKCRtZXRob2QtPnN0YXRpYyA/ICdaRU5EX0FDQ19QVUJMSUN8WkVORF9BQ0NfU1RB VElDJyA6ICdaRU5EX0FDQ19QVUJMSUMnKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg ICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmlzX2RlcHJlY2F0ZWQoJG1l dGhvZC0+Y19uYW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgJG1ldGhvZC0+ZGVwcmVj YXRlZCA9ICR0aGlzLT5vdmVycmlkZXMtPmdldF9kZXByZWNhdGVkKCRtZXRob2QtPmNfbmFtZSk7 Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCRtZXRob2Qt PnN0YXRpYykgewotICAgICAgICAgICAgICAgICAgICAgICAgJGNvZGUgPSAkdGhpcy0+d3JpdGVf Y2FsbGFibGUoJG1ldGhvZCwgVGVtcGxhdGVzOjpmdW5jdGlvbl9ib2R5LCB0cnVlLCBmYWxzZSwg JGRpY3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgJGZsYWdzID0gJ1pFTkRfQUNDX1BVQkxJ Q3xaRU5EX0FDQ19TVEFUSUMnOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICAgICAgICAgICAgICAgJHRlbXBsYXRlID0gJHRoaXMtPnRlbXBsYXRlX21hcFskb2JqZWN0 LT5kZWZfdHlwZV1bJ21ldGhvZCddOwotICAgICAgICAgICAgICAgICAgICAgICAgJGNvZGUgPSAk dGhpcy0+d3JpdGVfY2FsbGFibGUoJG1ldGhvZCwgJHRlbXBsYXRlLCB0cnVlLCB0cnVlLCAkZGlj dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZmxhZ3MgPSAnWkVORF9BQ0NfUFVCTElDJzsK LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndy aXRlKCRjb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgJG1ldGhvZF9lbnRyaWVzWyRtZXRob2Qt Pm5hbWVdID0gYXJyYXkoJG9iamVjdC0+aW5fbW9kdWxlIC4gJG9iamVjdC0+bmFtZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1l dGhvZC0+bmFtZSwgJHJlZmxlY3Rpb25fZnVuYywgJGZsYWdzKTsKLSAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVydCgiZ2VuIiwg IiVzICAlLTExcyAlczo6JXNcbiIsICRvdmVycmlkZW4gPyAiJSUiOiIgICIsICJtZXRob2QiLCAk b2JqZWN0LT5jX25hbWUsICRtZXRob2QtPm5hbWUpOwotICAgICAgICAgICAgICAgICRudW1fd3Jp dHRlbisrOwotICAgICAgICAgICAgICAgICR0aGlzLT5jb3ZlclsibWV0aG9kcyJdLT53cml0dGVu KCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCRhcmdpbmZvID09PSBu dWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICRvYmplY3QtPm1ldGhvZHNbJG1ldGhvZC0+bmFt ZV0gPSAxOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICRt ZXRob2RhcmdpbmZvcyAuPSAkYXJnaW5mbzsKLSAgICAgICAgICAgICAgICAgICAgJG9iamVjdC0+ bWV0aG9kc1skbWV0aG9kLT5uYW1lXSA9IDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVy dCgibm90Z2VuIiwgIiAgJS0xMXMgJXM6OiVzOiAlc1xuIiwgIm1ldGhvZCIsICRvYmplY3QtPmNf bmFtZSwgJG1ldGhvZC0+bmFtZSwgJGUtPmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgICAgICAg JG51bV9za2lwcGVkKys7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJtZXRob2RzIl0t PnNraXBwZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICgkdGhp cy0+b3ZlcnJpZGVzLT5oYXZlX2V4dHJhX21ldGhvZHMoJG9iamVjdC0+Y19uYW1lKSkgewotICAg ICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X2V4dHJhX21ldGhvZHMoJG9i amVjdC0+Y19uYW1lKSBhcyAkbWV0aG9kX25hbWUgPT4gJG92ZXJyaWRlKSB7Ci0gICAgICAgICAg ICAgICAgbGlzdCgkbWV0aG9kX2JvZHksICRmbGFncykgPSAkb3ZlcnJpZGU7Ci0gICAgICAgICAg ICAgICAgbGlzdCgkYXJnaW5mbywgJHJlZmxlY3Rpb25fZnVuYykgPSAkdGhpcy0+Z2VuUmVmbGVj dGlvbkFyZ0luZm8obnVsbCwgJG9iamVjdCwgJG1ldGhvZF9uYW1lKTsKLQotICAgICAgICAgICAg ICAgICRtZXRob2RfYm9keSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBfTUVUSE9EKS4qJCFtJywg InN0YXRpYyAkMSgkb2JqZWN0LT5jX25hbWUsICRtZXRob2RfbmFtZSkiLCAkbWV0aG9kX2JvZHkp OwotICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZV9vdmVycmlkZSgkbWV0aG9kX2JvZHksICRv YmplY3QtPmNfbmFtZSwgJG1ldGhvZF9uYW1lKTsKLSAgICAgICAgICAgICAgICAkbWV0aG9kX2Vu dHJpZXNbJG1ldGhvZF9uYW1lXSA9IGFycmF5KCRvYmplY3QtPmNfbmFtZSwgJG1ldGhvZF9uYW1l LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JHJlZmxlY3Rpb25fZnVuYywgJGZsYWdzID8gJGZsYWdzIDogJ1pFTkRfQUNDX1BVQkxJQycpOwot ICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlcyAgJS0xMXMgJXM6OiVzXG4i LCAiJSUiLCAibWV0aG9kIiwgJG9iamVjdC0+Y19uYW1lLCAkbWV0aG9kX25hbWUpOwotICAgICAg ICAgICAgICAgICRudW1fd3JpdHRlbisrOwotICAgICAgICAgICAgICAgICR0aGlzLT5jb3Zlclsi bWV0aG9kcyJdLT53cml0dGVuKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoJGFyZ2luZm8gPT09 IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgJG9iamVjdC0+bWV0aG9kc1skbWV0aG9kX25h bWVdID0gMTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAk bWV0aG9kYXJnaW5mb3MgLj0gJGFyZ2luZm87Ci0gICAgICAgICAgICAgICAgICAgICRvYmplY3Qt Pm1ldGhvZHNbJG1ldGhvZF9uYW1lXSA9IDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiKCVkIHdyaXR0ZW4s ICVkIHNraXBwZWQpXG4iLCAkbnVtX3dyaXR0ZW4sICRudW1fc2tpcHBlZCk7Ci0KLSAgICAgICAg cmV0dXJuIGFycmF5KCRtZXRob2RfZW50cmllcywgJG1ldGhvZGFyZ2luZm9zKTsKLSAgICB9Ci0K LSAgICBmdW5jdGlvbiB3cml0ZV9jb25zdHJ1Y3Rvcigkb2JqZWN0KQotICAgIHsKLSAgICAgICAg JHRoaXMtPmxvZ19wcmludCgiICAlLTIwcyAiLCAiY29uc3RydWN0b3JzIik7Ci0gICAgICAgICRu dW1fd3JpdHRlbiA9ICRudW1fc2tpcHBlZCA9IDA7Ci0KLSAgICAgICAgJGN0b3JzID0gJHRoaXMt PnBhcnNlci0+ZmluZF9jb25zdHJ1Y3Rvcigkb2JqZWN0LCAkdGhpcy0+b3ZlcnJpZGVzKTsKLQot ICAgICAgICAkY3Rvcl9kZWZzID0gYXJyYXkoKTsKLSAgICAgICAgJGN0b3JfYXJnaW5mb3MgPSAn JzsKLQotICAgICAgICBpZiAoJGN0b3JzKSB7Ci0gICAgICAgICAgICAkZGljdFsnY2xhc3MnXSA9 ICRvYmplY3QtPmNfbmFtZTsKLSAgICAgICAgICAgICRkaWN0Wyd0eXBlY29kZSddID0gJG9iamVj dC0+dHlwZWNvZGU7Ci0gICAgICAgICAgICAkZmlyc3QgPSAxOwotCi0gICAgICAgICAgICBmb3Jl YWNoICgkY3RvcnMgYXMgJGN0b3IpIHsKLSAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJy aWRlcy0+aXNfZGVwcmVjYXRlZCgkY3Rvci0+Y19uYW1lKSkgewotICAgICAgICAgICAgICAgICAg ICAkY3Rvci0+ZGVwcmVjYXRlZCA9ICR0aGlzLT5vdmVycmlkZXMtPmdldF9kZXByZWNhdGVkKCRj dG9yLT5jX25hbWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAkY3Rvcl9u YW1lID0gJGN0b3ItPmNfbmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoJGZpcnN0KSB7Ci0gICAg ICAgICAgICAgICAgICAgICRjdG9yX2ZlX25hbWUgPSAnX19jb25zdHJ1Y3QnOwotICAgICAgICAg ICAgICAgICAgICAkZmxhZ3MgPSAnWkVORF9BQ0NfUFVCTElDJzsKLSAgICAgICAgICAgICAgICAg ICAgJHRlbXBsYXRlX25hbWUgPSAnY29uc3RydWN0b3InOwotICAgICAgICAgICAgICAgICAgICBp ZiAoISRjdG9yLT5jYWxsZXJfb3duc19yZXR1cm4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAg ICRkaWN0Wydwb3N0X2NyZWF0ZV9jb2RlJ10gPSAiXHRnX29iamVjdF9yZWYod3JhcHBlZF9vYmop OyI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICAgICAgICAvLyByZW1vdmUgY2xhc3MgbmFtZSBmcm9tIHRoZSBjb25zdHJ1Y3Rv ciBuYW1lLCBpLmUuIHR1cm4KLSAgICAgICAgICAgICAgICAgICAgLy8gZ3RrX2J1dHRvbl9uZXdf d2l0aF9tbmVtb25pYyBpbnRvIG5ld193aXRoX21uZW1vbmljCi0gICAgICAgICAgICAgICAgICAg ICRjdG9yX2ZlX25hbWUgPSBzdWJzdHIoJGN0b3JfbmFtZSwgc3RybGVuKGNvbnZlcnRfdHlwZW5h bWUoJGN0b3ItPmlzX2NvbnN0cnVjdG9yX29mKSkpOwotICAgICAgICAgICAgICAgICAgICAkZmxh Z3MgPSAnWkVORF9BQ0NfUFVCTElDfFpFTkRfQUNDX1NUQVRJQyc7Ci0gICAgICAgICAgICAgICAg ICAgICR0ZW1wbGF0ZV9uYW1lID0gJ3N0YXRpY19jb25zdHJ1Y3Rvcic7Ci0gICAgICAgICAgICAg ICAgfQotCi0gICAgICAgICAgICAgICAgJGRpY3RbJ2N0b3Jfd2l0aF9wcm9wcyddID0gZmFsc2U7 Ci0gICAgICAgICAgICAgICAgLyogVXNlIHNpbXBsZSBuby1wcm9wIGNvbnN0cnVjdG9yIG9ubHkg Zm9yIGRlZmF1bHQgY29uc3RydWN0b3JzCi0gICAgICAgICAgICAgICAgICAgd2l0aCBubyBwYXJh bWV0ZXJzLiAqLwotICAgICAgICAgICAgICAgIGlmICgkb2JqZWN0LT5kZWZfdHlwZSA9PSAnb2Jq ZWN0JyAmJiAhJGN0b3ItPnBhcmFtcyAmJiAkZmlyc3QpIHsKLSAgICAgICAgICAgICAgICAgICAg JHRlbXBsYXRlID0gVGVtcGxhdGVzOjpjb25zdHJ1Y3Rvcl93aXRob3V0X3Byb3BzOwotICAgICAg ICAgICAgICAgICAgICAkZGljdFsnY3Rvcl93aXRoX3Byb3BzJ10gPSB0cnVlOwotICAgICAgICAg ICAgICAgIH0gZWxzZSBpZiAoJG9iamVjdC0+ZGVmX3R5cGUgPT0gJ29iamVjdCcgJiYgJGN0b3It PnByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgJHRlbXBsYXRlID0gVGVtcGxhdGVz Ojpjb25zdHJ1Y3Rvcl93aXRoX3Byb3BzOwotICAgICAgICAgICAgICAgICAgICAkZGljdFsnY3Rv cl93aXRoX3Byb3BzJ10gPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg ICAgICAgICAgICAgICR0ZW1wbGF0ZSA9ICR0aGlzLT50ZW1wbGF0ZV9tYXBbJG9iamVjdC0+ZGVm X3R5cGVdWyR0ZW1wbGF0ZV9uYW1lXTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg ICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBsaXN0KCRhcmdpbmZvLCAkcmVmbGVjdGlv bl9mdW5jKSA9ICR0aGlzLT5nZW5SZWZsZWN0aW9uQXJnSW5mbygkY3RvciwgJG9iamVjdCwgJGN0 b3JfZmVfbmFtZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCgkb3ZlcnJpZGVuID0gJHRo aXMtPm92ZXJyaWRlcy0+aXNfb3ZlcnJpZGVuKCRjdG9yX25hbWUpKSkgewotICAgICAgICAgICAg ICAgICAgICAgICAgbGlzdCgsICRjdG9yX292ZXJyaWRlLCAkY3Rvcl9mbGFncykgPSAkdGhpcy0+ b3ZlcnJpZGVzLT5nZXRfb3ZlcnJpZGUoJGN0b3JfbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAg ICAgICBpZiAoIWVtcHR5KCRjdG9yX2ZsYWdzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAkZmxhZ3MgPSAkY3Rvcl9mbGFnczsKLSAgICAgICAgICAgICAgICAgICAgICAgICRjdG9yX292 ZXJyaWRlID0gcHJlZ19yZXBsYWNlKCchXi4qKFBIUF9NRVRIT0QpLiokIW0nLCAic3RhdGljICQx KCRjdG9yLT5pc19jb25zdHJ1Y3Rvcl9vZiwgJGN0b3JfZmVfbmFtZSkiLCAkY3Rvcl9vdmVycmlk ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJGN0b3Jf b3ZlcnJpZGUsICRjdG9yLT5jX25hbWUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgICAgICAgICAgICAgJGRpY3RbJ25hbWUnXSA9ICRjdG9yX2ZlX25hbWU7Ci0g ICAgICAgICAgICAgICAgICAgICAgICAkY29kZSA9ICR0aGlzLT53cml0ZV9jYWxsYWJsZSgkY3Rv ciwgJHRlbXBsYXRlLCBmYWxzZSwgZmFsc2UsICRkaWN0KTsKLSAgICAgICAgICAgICAgICAgICAg ICAgICR0aGlzLT5mcC0+d3JpdGUoJGNvZGUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg ICAgICAgICAgICAgICAgICAgJGN0b3JfZGVmc1tdID0gc3ByaW50ZihUZW1wbGF0ZXM6Om1ldGhv ZF9lbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3Rv ci0+aXNfY29uc3RydWN0b3Jfb2YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJGN0b3JfZmVfbmFtZSwgJHJlZmxlY3Rpb25fZnVuYywgJGZsYWdzKTsKLSAgICAg ICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVydCgiZ2VuIiwgIiVzICAlLTExcyAlczo6JXNcbiIs ICRvdmVycmlkZW4/IiUlIjoiICAiLCAiY29uc3RydWN0b3IiLCAkb2JqZWN0LT5jX25hbWUsICRj dG9yX2ZlX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAkbnVtX3dyaXR0ZW4rKzsKLSAgICAg ICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJjdG9ycyJdLT53cml0dGVuKCk7Ci0gICAgICAg ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAoJGFyZ2luZm8gIT09IG51bGwp IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICRjdG9yX2FyZ2luZm9zIC49ICRhcmdpbmZvOwot ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9u ICRlKSB7Ci0gICAgICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoIm5vdGdlbiIsICIgICUt MTFzICVzOjolczogJXNcbiIsICJjb25zdHJ1Y3RvciIsICRvYmplY3QtPmNfbmFtZSwgJGN0b3Jf ZmVfbmFtZSwgJGUtPmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgICAgICAgICAgICRudW1fc2tp cHBlZCsrOwotICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y292ZXJbImN0b3JzIl0tPnNraXBw ZWQoKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gbWFyayBjbGFzcyBhcyBub24taW5zdGFudGlh YmxlIGRpcmVjdGx5IGlmIHdlIHdlcmUgdHJ5aW5nCi0gICAgICAgICAgICAgICAgICAgIC8vIHRv IGdlbmVyYXRlIGRlZmF1bHQgY29uc3RydWN0b3IKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRj dG9yX2ZlX25hbWUgPT0gJ19fY29uc3RydWN0JykgewotICAgICAgICAgICAgICAgICAgICAgICAg JGN0b3JfZGVmc1tdID0gc3ByaW50ZihUZW1wbGF0ZXM6OmZ1bmN0aW9uX2VudHJ5LCAkY3Rvcl9m ZV9uYW1lLCAnbm9fZGlyZWN0X2NvbnN0cnVjdG9yJywgJGN0b3JfZmVfbmFtZSwgJ25vX2RpcmVj dF9jb25zdHJ1Y3RvcicpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICAgICRmaXJzdCA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJyaWRlcy0+aGF2ZV9leHRyYV9tZXRo b2RzKCRvYmplY3QtPmNfbmFtZSkpIHsKLSAgICAgICAgICAgICAgICAkY3Rvcl9uYW1lID0gJ19f Y29uc3RydWN0JzsKLSAgICAgICAgICAgICAgICAkZXh0cmFzID0gJHRoaXMtPm92ZXJyaWRlcy0+ Z2V0X2V4dHJhX21ldGhvZHMoJG9iamVjdC0+Y19uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAo aXNzZXQoJGV4dHJhc1skY3Rvcl9uYW1lXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgJGN0b3Jf Ym9keSA9ICRleHRyYXNbJGN0b3JfbmFtZV07Ci0gICAgICAgICAgICAgICAgICAgICRjdG9yX2Jv ZHkgPSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQX01FVEhPRCkuKiQhbScsICJzdGF0aWMgJDEoJG9i amVjdC0+Y19uYW1lLCAkY3Rvcl9uYW1lKSIsICRjdG9yX2JvZHkpOwotICAgICAgICAgICAgICAg ICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJGN0b3JfYm9keSwgJG9iamVjdC0+Y19uYW1lLCAk Y3Rvcl9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgJGN0b3JfZGVmc1tdID0gc3ByaW50ZihU ZW1wbGF0ZXM6Om1ldGhvZF9lbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAkb2JqZWN0LT5jX25hbWUsICRjdG9yX25hbWUsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05VTEwnLCAnWkVORF9BQ0NfUFVCTElDJyk7Ci0g ICAgICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlJSUlICAlLTExcyAlczo6 JXNcbiIsICJjb25zdHJ1Y3RvciIsICRvYmplY3QtPmNfbmFtZSwgJGN0b3JfbmFtZSk7Ci0gICAg ICAgICAgICAgICAgICAgICRudW1fd3JpdHRlbisrOwotICAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gbWFyayBjbGFzcyBhcyBub24taW5z dGFudGlhYmxlIGRpcmVjdGx5LCBvbmx5IGlmIGl0J3Mgbm90Ci0gICAgICAgICAgICAgICAgLy8g R09iamVjdC4gRm9yIEdPYmplY3QncyB3ZSBsZXQgaXQgY2hhaW4gdXAgdG8gR09iamVjdAotICAg ICAgICAgICAgICAgIC8vIGNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgaWYgKCRvYmplY3Qt PmRlZl90eXBlICE9ICdvYmplY3QnKSB7Ci0gICAgICAgICAgICAgICAgICAgICRjdG9yX2RlZnNb XSA9IHNwcmludGYoVGVtcGxhdGVzOjpmdW5jdGlvbl9lbnRyeSwgJ19fY29uc3RydWN0JywgJ25v X2RpcmVjdF9jb25zdHJ1Y3RvcicsICdfX2NvbnN0cnVjdCcsICdub19kaXJlY3RfY29uc3RydWN0 b3InKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg ICAgICAkdGhpcy0+bG9nX3ByaW50KCIoJWQgd3JpdHRlbiwgJWQgc2tpcHBlZClcbiIsICRudW1f d3JpdHRlbiwgJG51bV9za2lwcGVkKTsKLSAgICAgICAgcmV0dXJuIGFycmF5KCRjdG9yX2RlZnMs ICRjdG9yX2FyZ2luZm9zKTsKLSAgICB9Ly9mdW5jdGlvbiB3cml0ZV9jb25zdHJ1Y3Rvcigkb2Jq ZWN0KQotCi0gICAgZnVuY3Rpb24gd3JpdGVfY2xhc3NlcygpCi0gICAgewotICAgICAgICAkcmVn aXN0ZXJfY2xhc3NlcyA9ICcnOwotCi0gICAgICAgIGlmICgkdGhpcy0+cGFyc2VyLT5mdW5jdGlv bnMgfHwgJHRoaXMtPnBhcnNlci0+ZW51bXMpIHsKLSAgICAgICAgICAgICR0aGlzLT5sb2dfcHJp bnQoIlxuJXNcbiVzXG4iLCAkdGhpcy0+cHJlZml4LCBzdHJfcmVwZWF0KCd+JywgNTApKTsKLSAg ICAgICAgICAgICRmdW5jX2RlZnMgPSAkdGhpcy0+d3JpdGVfZnVuY3Rpb25zKCk7Ci0KLSAgICAg ICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzIC49IGFwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9j bGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ2Nl JyA9PiAkdGhpcy0+bHByZWZpeCAuICdfY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnY2xhc3MnID0+ICR0aGlzLT5wcmVmaXgsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZXRob2RzJyA9PiAkZnVuY19k ZWZzID8gJHRoaXMtPmxwcmVmaXggLiAnX21ldGhvZHMnIDogJ05VTEwnLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyZW50JyA9PiAnTlVMTCcsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZV9mbGFncycg PT4gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3By b3BpbmZvJyA9PiAnTlVMTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdjcmVhdGVfZnVuYycgPT4gJ05VTEwnLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZWNvZGUnID0+IDApKTsKLSAgICAgICAgfQot Ci0gICAgICAgIC8qIEdJbnRlcmZhY2UncyAqLwotICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJc blxuIiAuICR0aGlzLT5tYWtlX2hlYWRlcigiSW50ZXJmYWNlcyIsIDUwLCAnLScpKTsKLSAgICAg ICAgZm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+aW50ZXJmYWNlcyBhcyAkaW50ZXJmYWNlKSB7Ci0g ICAgICAgICAgICAkcmVnX2luZm8gPSAkdGhpcy0+d3JpdGVfY2xhc3MoJGludGVyZmFjZSk7Ci0g ICAgICAgICAgICAkcmVnaXN0ZXJfY2xhc3NlcyAuPSBhcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0 ZXJfaW50ZXJmYWNlLCAkcmVnX2luZm8pOwotICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlk ZXMtPmhhdmVfcG9zdF9yZWdpc3RyYXRpb24oJGludGVyZmFjZS0+Y19uYW1lKSkgewotICAgICAg ICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzIC49ICR0aGlzLT5vdmVycmlkZXMtPmdldF9wb3N0 X3JlZ2lzdHJhdGlvbigkaW50ZXJmYWNlLT5jX25hbWUpOwotICAgICAgICAgICAgfQotCi0gICAg ICAgICAgICAvKiBzaXplIGNoZWNrIGdvZXMgaGVyZSAqLwotICAgICAgICAgICAgaWYgKCR0aGlz LT5mcC0+Y2hlY2tfc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gd2UgaGl0IHNpemUgdG9v IGJpZywgd3JpdGUgb3V0IGVuZAotICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoc3By aW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2NsYXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJHRoaXMtPmxwcmVmaXggLiAkdGhpcy0+ZnAtPmdldF9jdXJyZW50KCksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMpKTsKLSAg ICAgICAgICAgICAgICAkcmVnaXN0ZXJfY2xhc3NlcyA9ICcnOwotICAgICAgICAgICAgICAgICR0 aGlzLT5mcC0+bmV3X2ZpbGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBp ZiAoISR0aGlzLT5wYXJzZXItPmludGVyZmFjZXMpIHsKLSAgICAgICAgICAgICR0aGlzLT5sb2df cHJpbnQoIiAgLS0gbm9uZSAtLSAgIik7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBHT2JqZWN0 J3MgKi8KLSAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiXG5cbiIgLiAkdGhpcy0+bWFrZV9oZWFk ZXIoIk9iamVjdHMiLCA1MCwgJy0nKSk7Ci0gICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wYXJzZXIt Pm9iamVjdHMgYXMgJG9iamVjdCkgewotICAgICAgICAgICAgLyogc2tpcCBpZ25vcmVkIG9iamVj dHMgKi8KLSAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5pc19pZ25vcmVkKCRvYmpl Y3QtPmNfbmFtZSkpIHsKLSAgICAgICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJcbiVzICVz XG4iLCAkb2JqZWN0LT5jX25hbWUsICJpcyBpZ25vcmVkIGluIHRoZSBvdmVycmlkZXMgZmlsZSIp OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg JHJlZ19pbmZvID0gJHRoaXMtPndyaXRlX2NsYXNzKCRvYmplY3QpOwotICAgICAgICAgICAgJHJl Z2lzdGVyX2NsYXNzZXMgLj0gYXByaW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2NsYXNzLCAkcmVn X2luZm8pOwotICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmhhdmVfcG9zdF9yZWdp c3RyYXRpb24oJG9iamVjdC0+Y19uYW1lKSkgewotICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9j bGFzc2VzIC49ICR0aGlzLT5vdmVycmlkZXMtPmdldF9wb3N0X3JlZ2lzdHJhdGlvbigkb2JqZWN0 LT5jX25hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogc2l6ZSBjaGVjayBnb2Vz IGhlcmUgKi8KLSAgICAgICAgICAgIGlmICgkdGhpcy0+ZnAtPmNoZWNrX3NpemUoKSkgewotICAg ICAgICAgICAgICAgIC8vIHdlIGhpdCBzaXplIHRvbyBiaWcsIHdyaXRlIG91dCBlbmQKLSAgICAg ICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9j bGFzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5scHJlZml4 IC4gJHRoaXMtPmZwLT5nZXRfY3VycmVudCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7Ci0gICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2Ns YXNzZXMgPSAnJzsKLSAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPm5ld19maWxlKCk7Ci0gICAg ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCEkdGhpcy0+cGFyc2VyLT5vYmplY3Rz KSB7Ci0gICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCIgIC0tIG5vbmUgLS0gICIpOwotICAg ICAgICB9Ci0KLSAgICAgICAgLyogR0JveGVkICovCi0gICAgICAgICR0aGlzLT5sb2dfcHJpbnQo IlxuXG4iIC4gJHRoaXMtPm1ha2VfaGVhZGVyKCJCb3hlZCBUeXBlcyIsIDUwLCAnLScpKTsKLSAg ICAgICAgZm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+Ym94ZWQgYXMgJGJveGVkKSB7Ci0gICAgICAg ICAgICAkcmVnX2luZm8gPSAkdGhpcy0+d3JpdGVfY2xhc3MoJGJveGVkKTsKLSAgICAgICAgICAg ICRyZWdpc3Rlcl9jbGFzc2VzIC49IGFwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9ib3hlZCwg JHJlZ19pbmZvKTsKLSAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5oYXZlX3Bvc3Rf cmVnaXN0cmF0aW9uKCRib3hlZC0+Y19uYW1lKSkgewotICAgICAgICAgICAgICAgICRyZWdpc3Rl cl9jbGFzc2VzIC49ICR0aGlzLT5vdmVycmlkZXMtPmdldF9wb3N0X3JlZ2lzdHJhdGlvbigkYm94 ZWQtPmNfbmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBzaXplIGNoZWNrIGdv ZXMgaGVyZSAqLwotICAgICAgICAgICAgaWYgKCR0aGlzLT5mcC0+Y2hlY2tfc2l6ZSgpKSB7Ci0g ICAgICAgICAgICAgICAgLy8gd2UgaGl0IHNpemUgdG9vIGJpZywgd3JpdGUgb3V0IGVuZAotICAg ICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoc3ByaW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVy X2NsYXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmxwcmVm aXggLiAkdGhpcy0+ZnAtPmdldF9jdXJyZW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMpKTsKLSAgICAgICAgICAgICAgICAkcmVnaXN0ZXJf Y2xhc3NlcyA9ICcnOwotICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+bmV3X2ZpbGUoKTsKLSAg ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoISR0aGlzLT5wYXJzZXItPmJveGVk KSB7Ci0gICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCIgIC0tIG5vbmUgLS0gICIpOwotICAg ICAgICB9Ci0KLSAgICAgICAgLyogR1BvaW50ZXIgKi8KLSAgICAgICAgJHRoaXMtPmxvZ19wcmlu dCgiXG5cbiIgLiAkdGhpcy0+bWFrZV9oZWFkZXIoIlBvaW50ZXJzIiwgNTAsICctJykpOwotICAg ICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5wb2ludGVycyBhcyAkcG9pbnRlcikgewotICAg ICAgICAgICAgJHJlZ19pbmZvID0gJHRoaXMtPndyaXRlX2NsYXNzKCRwb2ludGVyKTsKLSAgICAg ICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzIC49IGFwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9w b2ludGVyLCAkcmVnX2luZm8pOwotICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmhh dmVfcG9zdF9yZWdpc3RyYXRpb24oJHBvaW50ZXItPmNfbmFtZSkpIHsKLSAgICAgICAgICAgICAg ICAkcmVnaXN0ZXJfY2xhc3NlcyAuPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfcG9zdF9yZWdpc3Ry YXRpb24oJHBvaW50ZXItPmNfbmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBz aXplIGNoZWNrIGdvZXMgaGVyZSAqLwotICAgICAgICAgICAgaWYgKCR0aGlzLT5mcC0+Y2hlY2tf c2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gd2UgaGl0IHNpemUgdG9vIGJpZywgd3JpdGUg b3V0IGVuZAotICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoc3ByaW50ZihUZW1wbGF0 ZXM6OnJlZ2lzdGVyX2NsYXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JHRoaXMtPmxwcmVmaXggLiAkdGhpcy0+ZnAtPmdldF9jdXJyZW50KCksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMpKTsKLSAgICAgICAgICAgICAg ICAkcmVnaXN0ZXJfY2xhc3NlcyA9ICcnOwotICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+bmV3 X2ZpbGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoISR0aGlzLT5w YXJzZXItPnBvaW50ZXJzKSB7Ci0gICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCIgIC0tIG5v bmUgLS0gICIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogcmVnaXN0ZXIgYWxsIGNsYXNzZXMg Ki8KLSAgICAgICAgaWYgKCRyZWdpc3Rlcl9jbGFzc2VzICE9PSAnJykgewotICAgICAgICAgICAg ICAgICR0aGlzLT5mcC0+d3JpdGUoc3ByaW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2NsYXNzZXMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bHByZWZp eCAuICR0aGlzLT5mcC0+Z2V0X2N1cnJlbnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7Ci0gICAgICAgIH0KLQotICAgICAg ICAkcmVnaXN0ZXJfY2xhc3NlcyA9ICcnOwotICAgICAgICAkdG90YWwgPSAkdGhpcy0+ZnAtPmdl dF90b3RhbCgpOwotICAgICAgICAkY3VycmVudCA9IDA7Ci0gICAgICAgIHdoaWxlKCRjdXJyZW50 IDwgJHRvdGFsKSB7Ci0gICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMgLj0gJwlwaHBn XycgLiAkdGhpcy0+bHByZWZpeCAuICRjdXJyZW50IC4gIl9yZWdpc3Rlcl9jbGFzc2VzKFRTUk1M U19DKTtcbiI7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZV9oZWFkZXIoJ3ZvaWQg cGhwZ18nIC4gJHRoaXMtPmxwcmVmaXggLiAkY3VycmVudCAuICJfcmVnaXN0ZXJfY2xhc3NlcyhU U1JNTFNfRCk7XG4iKTsKLSAgICAgICAgICAgICAgICAkY3VycmVudCsrOwotICAgICAgICB9Ci0g ICAgICAgIC8qIHdyaXRlIHRoZSAibWV0YSIgcmVnaXN0ZXIgY2xhc3MgKi8KLSAgICAgICAgJHRo aXMtPmZwLT53cml0ZShzcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0ZXJfY2xhc3NlcywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5scHJlZml4LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMp KTsKLQotICAgIH0KLSAgICAKLSAgICBmdW5jdGlvbiB3cml0ZV9wcm9wX2hhbmRsZXJzKCRvYmpl Y3QpCi0gICAgewotICAgICAgICBnbG9iYWwgJG1hdGNoZXI7Ci0KLSAgICAgICAgaWYgKCEkb2Jq ZWN0LT5maWVsZHMgJiYgISR0aGlzLT5vdmVycmlkZXMtPmhhdmVfZXh0cmFfcHJvcHMoJG9iamVj dC0+Y19uYW1lKSkgewotICAgICAgICAgICAgcmV0dXJuICdOVUxMJzsKLSAgICAgICAgfQotCi0g ICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIiAgJS0yMHMgIiwgInByb3BlcnR5IGFjY2Vzc29ycyIp OwotICAgICAgICAkbnVtX3dyaXR0ZW4gPSAkbnVtX3NraXBwZWQgPSAwOwotCi0gICAgICAgICRj bGFzcyA9IHN0cnRvbG93ZXIoJG9iamVjdC0+Y19uYW1lKTsKLSAgICAgICAgJHByb3BfZGVmcyA9 IGFycmF5KCk7Ci0gICAgICAgICRkaWN0ID0gYXJyYXkoKTsKLQotICAgICAgICBzd2l0Y2ggKCRv YmplY3QtPmRlZl90eXBlKSB7Ci0gICAgICAgICAgICBjYXNlICdvYmplY3QnOgotICAgICAgICAg ICAgICAgICRkaWN0WydjYXN0J10gPSBwcmVnX3JlcGxhY2UoJyFfVFlQRV8hJywgJ18nLCAkb2Jq ZWN0LT50eXBlY29kZSwgMSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAg IGNhc2UgJ2JveGVkJzoKLSAgICAgICAgICAgIGNhc2UgJ3BvaW50ZXInOgotICAgICAgICAgICAg ICAgICRkaWN0WydjYXN0J10gPSAkb2JqZWN0LT5jX25hbWUgLiAnIConOwotICAgICAgICAgICAg ICAgIGJyZWFrOwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHRocm93 IG5ldyBFeGNlcHRpb24oInVuaGFuZGxlZCBkZWZpbml0aW9uIHR5cGUiKTsKLSAgICAgICAgICAg ICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGZvcmVhY2ggKCRvYmplY3QtPmZpZWxk cyBhcyAkZmllbGQpIHsKLSAgICAgICAgICAgIGxpc3QoJGZpZWxkX3R5cGUsICRmaWVsZF9uYW1l KSA9ICRmaWVsZDsKLQotICAgICAgICAgICAgJHJlYWRfZnVuYyA9ICJQSFBHX1BST1BfUkVBRF9G Tigkb2JqZWN0LT5jX25hbWUsICRmaWVsZF9uYW1lKSI7Ci0gICAgICAgICAgICAkd3JpdGVfZnVu YyA9ICdOVUxMJzsKLSAgICAgICAgICAgICRpbmZvID0gbmV3IFdyYXBwZXJfSW5mbygpOwotCi0g ICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5p c19wcm9wX292ZXJyaWRlbigkb2JqZWN0LT5jX25hbWUsICRmaWVsZF9uYW1lKSkgewotICAgICAg ICAgICAgICAgICAgICAkb3ZlcnJpZGVzID0gJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X3Byb3Bfb3Zl cnJpZGUoJG9iamVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAg IGlmIChpc3NldCgkb3ZlcnJpZGVzWydyZWFkJ10pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAkcmVhZF9vdmVycmlkZSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBHX1BST1BfUkVBREVSKS4q JCFtJywgIiQxKCRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUpIiwgJG92ZXJyaWRlc1sncmVh ZCddKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZV9vdmVycmlkZSgkcmVh ZF9vdmVycmlkZSwgJG9iamVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSwgJ3JlYWQnKTsKLSAgICAg ICAgICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlJSUlICAlLTExcyAlcy0+ JXNcbiIsICJyZWFkZXIgZm9yIiwgJG9iamVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSk7Ci0gICAg ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkcmVhZF9m dW5jID0gJ05VTEwnOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg IGlmIChpc3NldCgkb3ZlcnJpZGVzWyd3cml0ZSddKSkgewotICAgICAgICAgICAgICAgICAgICAg ICAgJHdyaXRlX292ZXJyaWRlID0gcHJlZ19yZXBsYWNlKCchXi4qKFBIUEdfUFJPUF9XUklURVIp LiokIW0nLCAic3RhdGljICQxKCRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUpIiwgJG92ZXJy aWRlc1snd3JpdGUnXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3Zl cnJpZGUoJG92ZXJyaWRlc1snd3JpdGUnXSwgJG9iamVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSwg J3dyaXRlJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJnZW4gIiwg IiUlJSUgICUtMTFzICVzLT4lc1xuIiwgIndyaXRlciBmb3IiLCAkb2JqZWN0LT5jX25hbWUsICRm aWVsZF9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgICAgICAgICAgICRoYW5kbGVyID0gJG1hdGNoZXItPmdldCgkZmllbGRf dHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICRoYW5kbGVyLT53cml0ZV9yZXR1cm4oJGZpZWxk X3R5cGUsIGZhbHNlLCAkaW5mbyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgJGRpY3RbJ25hbWUn XSA9ICRmaWVsZF9uYW1lOwotCi0gICAgICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUo YXByaW50ZihUZW1wbGF0ZXM6OnByb3BfcmVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdjbGFzcycgPT4gJG9iamVjdC0+Y19uYW1lLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1l JyA9PiAkZmllbGRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAndmFyX2xpc3QnID0+ICRpbmZvLT5nZXRfdmFyX2xpc3QoKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJlX2NvZGUn ID0+ICRpbmZvLT5nZXRfcHJlX2NvZGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAncG9zdF9jb2RlJyA9PiAkaW5mby0+Z2V0X3Bvc3RfY29k ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdwcm9wX2FjY2VzcycgPT4gYXByaW50ZigkdGhpcy0+dGVtcGxhdGVfbWFwWyRvYmplY3QtPmRl Zl90eXBlXVsncHJvcCddLCAkZGljdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkpKTsKLSAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVy dCgiZ2VuIiwgIiAgICAlLTExcyAlcy0+JXNcbiIsICJyZWFkZXIgZm9yIiwgJG9iamVjdC0+Y19u YW1lLCAkZmllbGRfbmFtZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICRw cm9wX2RlZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjpwcm9wX2luZm9fZW50cnksIAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkX25hbWUsICRyZWFkX2Z1bmMs ICR3cml0ZV9mdW5jKTsKLSAgICAgICAgICAgICAgICAkbnVtX3dyaXR0ZW4rKzsKLSAgICAgICAg ICAgICAgICAkdGhpcy0+Y292ZXJbInByb3BzIl0tPndyaXR0ZW4oKTsKLSAgICAgICAgICAgIH0g Y2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewotICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoIm5v dGdlbiIsICIgICUtMTFzICVzLT4lczogJXNcbiIsICJyZWFkZXIgZm9yIiwgJG9iamVjdC0+Y19u YW1lLCAkZmllbGRfbmFtZSwgJGUtPmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgICAgICAgJG51 bV9za2lwcGVkKys7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJwcm9wcyJdLT5za2lw cGVkKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoJHRoaXMtPm92 ZXJyaWRlcy0+aGF2ZV9leHRyYV9wcm9wcygkb2JqZWN0LT5jX25hbWUpKSB7Ci0gICAgICAgICAg ICBmb3JlYWNoICgkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfZXh0cmFfcHJvcHMoJG9iamVjdC0+Y19u YW1lKSBhcyAkcHJvcF9uYW1lID0+ICRvdmVycmlkZXMpIHsKLQotICAgICAgICAgICAgICAgICRy ZWFkX2Z1bmMgPSAiUEhQR19QUk9QX1JFQURfRk4oJG9iamVjdC0+Y19uYW1lLCAkcHJvcF9uYW1l KSI7Ci0gICAgICAgICAgICAgICAgJHdyaXRlX2Z1bmMgPSAnTlVMTCc7Ci0gICAgICAgICAgICAg ICAgJGluZm8gPSBuZXcgV3JhcHBlcl9JbmZvKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXNz ZXQoJG92ZXJyaWRlc1sncmVhZCddKSkgewotICAgICAgICAgICAgICAgICAgICAkcmVhZF9vdmVy cmlkZSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBHX1BST1BfUkVBREVSKS4qJCFtJywgIiQxKCRv YmplY3QtPmNfbmFtZSwgJHByb3BfbmFtZSkiLCAkb3ZlcnJpZGVzWydyZWFkJ10pOwotICAgICAg ICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJHJlYWRfb3ZlcnJpZGUsICRvYmpl Y3QtPmNfbmFtZSwgJHByb3BfbmFtZSwgJ3JlYWQnLCAnZXh0cmEnKTsKLSAgICAgICAgICAgICAg ICAgICAgJHRoaXMtPmRpdmVydCgiZ2VuIiwgIiUlJSUgICUtMTFzICVzLT4lc1xuIiwgInJlYWRl ciBmb3IiLCAkb2JqZWN0LT5jX25hbWUsICRwcm9wX25hbWUpOwotICAgICAgICAgICAgICAgICAg ICAkdGhpcy0+Y292ZXJbInByb3BzIl0tPndyaXR0ZW4oKTsKLSAgICAgICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICAgICAgICAkcmVhZF9mdW5jID0gJ05VTEwnOwotICAgICAgICAg ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb3ZlcnJpZGVzWyd3cml0ZSdd KSkgewotICAgICAgICAgICAgICAgICAgICAkd3JpdGVfb3ZlcnJpZGUgPSBwcmVnX3JlcGxhY2Uo JyFeLiooUEhQR19QUk9QX1dSSVRFUikuKiQhbScsICJzdGF0aWMgJDEoJG9iamVjdC0+Y19uYW1l LCAkcHJvcF9uYW1lKSIsICRvdmVycmlkZXNbJ3dyaXRlJ10pOwotICAgICAgICAgICAgICAgICAg ICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJG92ZXJyaWRlc1snd3JpdGUnXSwgJG9iamVjdC0+Y19u YW1lLCAkcHJvcF9uYW1lLCAnd3JpdGUnLCAnZXh0cmEnKTsKLSAgICAgICAgICAgICAgICAgICAg JHRoaXMtPmRpdmVydCgiZ2VuICIsICIlJSUlICAlLTExcyAlcy0+JXNcbiIsICJ3cml0ZXIgZm9y IiwgJG9iamVjdC0+Y19uYW1lLCAkcHJvcF9uYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg ICAgICAgICAgICAgICAkcHJvcF9kZWZzW10gPSBzcHJpbnRmKFRlbXBsYXRlczo6cHJvcF9pbmZv X2VudHJ5LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcm9wX25h bWUsICRyZWFkX2Z1bmMsICR3cml0ZV9mdW5jKTsKLSAgICAgICAgICAgICAgICAkbnVtX3dyaXR0 ZW4rKzsKLSAgICAgICAgICAgICAgICAkdGhpcy0+Y292ZXJbInByb3BzIl0tPndyaXR0ZW4oKTsK LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIigl ZCB3cml0dGVuLCAlZCBza2lwcGVkKVxuIiwgJG51bV93cml0dGVuLCAkbnVtX3NraXBwZWQpOwot Ci0gICAgICAgIGlmICgkcHJvcF9kZWZzKSB7Ci0gICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRl KHNwcmludGYoVGVtcGxhdGVzOjpwcm9wX2luZm9faGVhZGVyLCAkY2xhc3MpKTsKLSAgICAgICAg ICAgICR0aGlzLT5mcC0+d3JpdGUoam9pbignJywgJHByb3BfZGVmcykpOwotICAgICAgICAgICAg JHRoaXMtPmZwLT53cml0ZShUZW1wbGF0ZXM6OnByb3BfaW5mb19mb290ZXIpOwotICAgICAgICAg ICAgcmV0dXJuICRjbGFzcyAuICdfcHJvcF9pbmZvJzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgIHJldHVybiAnTlVMTCc7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB3 cml0ZV9vYmplY3RfaGFuZGxlcnMoJG9iamVjdCkKLSAgICB7Ci0gICAgICAgICRoYW5kbGVycyA9 IGFycmF5KCk7Ci0KLSAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmhhbmRsZXJzIGFzICRoYW5kbGVy KSB7Ci0gICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJyaWRlcy0+aXNfaGFuZGxlcl9vdmVycmlk ZW4oJG9iamVjdC0+Y19uYW1lLCAkaGFuZGxlcikpIHsKLSAgICAgICAgICAgICAgICAkb3ZlcnJp ZGUgPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfaGFuZGxlcl9vdmVycmlkZSgkb2JqZWN0LT5jX25h bWUsICRoYW5kbGVyKTsKLSAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJG92 ZXJyaWRlLCAkb2JqZWN0LT5jX25hbWUsICRoYW5kbGVyKTsKLSAgICAgICAgICAgICAgICAkaGFu ZGxlcnNbXSA9ICRoYW5kbGVyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg aWYgKCEkaGFuZGxlcnMpCi0gICAgICAgICAgICByZXR1cm4gYXJyYXkoJ05VTEwnLCAnJyk7Ci0K LSAgICAgICAgJGRpY3RbJ2NsYXNzJ10gPSBzdHJ0b2xvd2VyKCRvYmplY3QtPmluX21vZHVsZSAu ICRvYmplY3QtPm5hbWUpOwotICAgICAgICBzd2l0Y2ggKCRvYmplY3QtPmRlZl90eXBlKSB7Ci0g ICAgICAgICAgICBjYXNlICdvYmplY3QnOgotICAgICAgICAgICAgICAgICRkaWN0WydjcmVhdGVf ZnVuYyddID0gJ3BocGdfY3JlYXRlX2dvYmplY3QnOwotICAgICAgICAgICAgICAgICRkaWN0Wydv cmlnX2hhbmRsZXJzJ10gPSAncGhwZ19nb2JqZWN0X2hhbmRsZXJzJzsKLSAgICAgICAgICAgICAg ICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSAnYm94ZWQnOgotICAgICAgICAgICAgICAgICRk aWN0WydjcmVhdGVfZnVuYyddID0gJ3BocGdfY3JlYXRlX2dib3hlZCc7Ci0gICAgICAgICAgICAg ICAgJGRpY3RbJ29yaWdfaGFuZGxlcnMnXSA9ICdwaHBfZ3RrX2hhbmRsZXJzJzsKLSAgICAgICAg ICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSAncG9pbnRlcic6Ci0gICAgICAgICAg ICAgICAgJGRpY3RbJ2NyZWF0ZV9mdW5jJ10gPSAncGhwZ19jcmVhdGVfZ3BvaW50ZXInOwotICAg ICAgICAgICAgICAgICRkaWN0WydvcmlnX2hhbmRsZXJzJ10gPSAncGhwX2d0a19oYW5kbGVycyc7 Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg ICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigidW5oYW5kbGVkIGRlZmluaXRpb24gdHlwZSIp OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgJHRoaXMtPmZw LT53cml0ZShhcHJpbnRmKFRlbXBsYXRlczo6Y3VzdG9tX2NyZWF0ZV9mdW5jLCAkZGljdCkpOwot ICAgICAgICAkY3JlYXRlX2Z1bmMgPSAncGhwZ19jcmVhdGVfJyAuICRkaWN0WydjbGFzcyddOwot Ci0gICAgICAgICRleHRyYV9yZWdfaW5mbyA9IGFwcmludGYoVGVtcGxhdGVzOjpjdXN0b21faGFu ZGxlcnNfaW5pdCwgJGRpY3QpOwotICAgICAgICBmb3JlYWNoICgkaGFuZGxlcnMgYXMgJGhhbmRs ZXIpIHsKLSAgICAgICAgICAgICRkaWN0WydoYW5kbGVyJ10gPSAkaGFuZGxlcjsKLSAgICAgICAg ICAgICRleHRyYV9yZWdfaW5mbyAuPSBhcHJpbnRmKFRlbXBsYXRlczo6Y3VzdG9tX2hhbmRsZXJf c2V0LCAkZGljdCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gYXJyYXkoJGNyZWF0ZV9m dW5jLCAkZXh0cmFfcmVnX2luZm8pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG1ha2VfbWV0aG9k X2RlZnMoJGNsYXNzLCAkbWV0aG9kX2VudHJpZXMpCi0gICAgewotICAgICAgICAkbWV0aG9kX2Rl ZnMgPSBhcnJheSgpOwotCi0gICAgICAgIGlmICgkY2xhc3MtPmRlZl90eXBlID09ICdvYmplY3Qn KSB7Ci0gICAgICAgICAgICBmb3JlYWNoICgkbWV0aG9kX2VudHJpZXMgYXMgJG1lKSB7Ci0gICAg ICAgICAgICAgICAgJG1ldGhvZF9kZWZzW10gPSB2c3ByaW50ZihUZW1wbGF0ZXM6Om1ldGhvZF9l bnRyeSwgJG1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgkY2xhc3MtPmltcGxl bWVudHMpIHsKLSAgICAgICAgICAgICAgICBmb3JlYWNoICgkY2xhc3MtPmltcGxlbWVudHMgYXMg JGludGVyZmFjZV9uYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICRpbnRlcmZhY2UgPSAkdGhp cy0+cGFyc2VyLT5pbnRlcmZhY2VzWyRpbnRlcmZhY2VfbmFtZV07Ci0gICAgICAgICAgICAgICAg ICAgICRpZmFjZV9tZXRob2RzID0gYXJyYXlfZGlmZl9rZXkoJGludGVyZmFjZS0+bWV0aG9kcywg JG1ldGhvZF9lbnRyaWVzKTsKLSAgICAgICAgICAgICAgICAgICAgJG1ldGhvZF9kZWZzW10gPSAi XG5cdC8qKiogICAkaW50ZXJmYWNlX25hbWUgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9ucyAgICoq Ki9cblxuIjsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGZvcmVh Y2ggKCRpZmFjZV9tZXRob2RzIGFzICRpZmFjZV9tZXRob2Q9PiRkdW1teSkgewotICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKCRkdW1teSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgJHJlZmxlY3Rpb25fZnVuYyA9ICdOVUxMJzsKLSAgICAgICAgICAgICAgICAgICAgICAg IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlZmxlY3Rpb25fZnVuYyA9 ICdhcmdpbmZvXycgLiBzdHJ0b2xvd2VyKCRpbnRlcmZhY2UtPmluX21vZHVsZSkgLiAnXycgLiBz dHJ0b2xvd2VyKCRpbnRlcmZhY2UtPmNfbmFtZSkgLiAnXycuICRpZmFjZV9tZXRob2Q7Ci0gICAg ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kX2Rl ZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjphbGlhc19lbnRyeSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW50ZXJmYWNlX25hbWUsICRpZmFjZV9t ZXRob2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JGlmYWNlX21ldGhvZCwgJHJlZmxlY3Rpb25fZnVuYywgJ1pFTkRfQUNDX1BVQkxJQycpOwotICAg ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg ICAgICB9IGVsc2UgaWYgKCRjbGFzcy0+ZGVmX3R5cGUgPT0gJ2JveGVkJyB8fCAkY2xhc3MtPmRl Zl90eXBlID09ICdwb2ludGVyJykgewotICAgICAgICAgICAgZm9yZWFjaCAoJG1ldGhvZF9lbnRy aWVzIGFzICRtZSkgewotICAgICAgICAgICAgICAgICRtZXRob2RfZGVmc1tdID0gdnNwcmludGYo VGVtcGxhdGVzOjptZXRob2RfZW50cnksICRtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g ZWxzZSBpZiAoJGNsYXNzLT5kZWZfdHlwZSA9PSAnaW50ZXJmYWNlJykgewotICAgICAgICAgICAg Zm9yZWFjaCAoJG1ldGhvZF9lbnRyaWVzIGFzICRtZSkgewotICAgICAgICAgICAgICAgICRtZXRo b2RfZGVmc1tdID0gc3ByaW50ZihUZW1wbGF0ZXM6OmFic19tZXRob2RfZW50cnksICRtZVsxXSwg JG1lWzBdLCAkbWVbMV0sICRtZVsyXSwgJ1pFTkRfQUNDX1BVQkxJQ3xaRU5EX0FDQ19BQlNUUkFD VCcpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuICRtZXRob2Rf ZGVmczsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiB3cml0ZV9jbGFzcygkY2xhc3MpCi0gICAgewot ICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJcbiVzXG4lc1xuIiwgJGNsYXNzLT5jX25hbWUsIHN0 cl9yZXBlYXQoJ34nLCA1MCkpOwotCi0gICAgICAgICRjbGFzc19tb2R1bGUgPSBzdHJ0b2xvd2Vy KCRjbGFzcy0+aW5fbW9kdWxlKTsKLSAgICAgICAgJGNsYXNzX2xuYW1lID0gc3RydG9sb3dlcigk Y2xhc3MtPm5hbWUpOwotCi0gICAgICAgICRjcmVhdGVfZnVuYyA9ICdOVUxMJzsKLSAgICAgICAg JGV4dHJhX3JlZ19pbmZvID0gJyc7Ci0gICAgICAgICRjdG9yX2RlZnMgPSBudWxsOwotICAgICAg ICAkcHJvcF9pbmZvID0gJ05VTEwnOwotICAgICAgICAkY3Rvcl9hcmdpbmZvID0gJyc7Ci0KLSAg ICAgICAgaWYgKCRjbGFzcy0+ZGVmX3R5cGUgIT0gJ2ludGVyZmFjZScpIHsKLSAgICAgICAgICAg IC8qIGludGVyZmFjZXMgZG9uJ3QgaGF2ZSB0aGVzZSAqLwotICAgICAgICAgICAgbGlzdCgkY3Rv cl9kZWZzLCAkY3Rvcl9hcmdpbmZvKSA9ICR0aGlzLT53cml0ZV9jb25zdHJ1Y3RvcigkY2xhc3Mp OwotICAgICAgICAgICAgJHByb3BfaW5mbyA9ICR0aGlzLT53cml0ZV9wcm9wX2hhbmRsZXJzKCRj bGFzcyk7Ci0gICAgICAgICAgICBsaXN0KCRjcmVhdGVfZnVuYywgJGV4dHJhX3JlZ19pbmZvKSA9 ICR0aGlzLT53cml0ZV9vYmplY3RfaGFuZGxlcnMoJGNsYXNzKTsKLSAgICAgICAgfQotCi0gICAg ICAgIGxpc3QoJG1ldGhvZF9lbnRyaWVzLCAkbWV0aG9kX2FyZ2luZm8pID0gJHRoaXMtPndyaXRl X21ldGhvZHMoJGNsYXNzKTsKLSAgICAgICAga3NvcnQoJG1ldGhvZF9lbnRyaWVzKTsKLSAgICAg ICAgJG1ldGhvZF9kZWZzICAgICAgICAgICA9ICR0aGlzLT5tYWtlX21ldGhvZF9kZWZzKCRjbGFz cywgJG1ldGhvZF9lbnRyaWVzKTsKLSAgICAgICAgCi0gICAgICAgICRhcmdpbmZvID0gJGN0b3Jf YXJnaW5mbyAuICRtZXRob2RfYXJnaW5mbzsKLQotICAgICAgICBpZiAoJGN0b3JfZGVmcykgewot ICAgICAgICAgICAgJG1ldGhvZF9kZWZzICAgICAgICAgICA9IGFycmF5X21lcmdlKCRjdG9yX2Rl ZnMsICRtZXRob2RfZGVmcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoJG1ldGhvZF9kZWZz KSB7Ci0gICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKCRhcmdpbmZvKTsKLSAgICAgICAgICAg ICR0aGlzLT5mcC0+d3JpdGUoc3ByaW50ZihUZW1wbGF0ZXM6OmZ1bmN0aW9uc19kZWNsLCBzdHJ0 b2xvd2VyKCRjbGFzcy0+Y19uYW1lKSkpOwotICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZShq b2luKCcnLCAkbWV0aG9kX2RlZnMpKTsKLSAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoVGVt cGxhdGVzOjpmdW5jdGlvbnNfZGVjbF9lbmQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCRj bGFzcy0+ZGVmX3R5cGUgPT0gJ29iamVjdCcgJiYgJGNsYXNzLT5pbXBsZW1lbnRzKSB7Ci0gICAg ICAgICAgICAkaWZhY2VfZW50cmllcyA9IGFycmF5KCk7Ci0gICAgICAgICAgICBmb3JlYWNoICgk Y2xhc3MtPmltcGxlbWVudHMgYXMgJGludGVyZmFjZSkgewotICAgICAgICAgICAgICAgICRpZmFj ZV9lbnRyaWVzW10gPSBzdHJ0b2xvd2VyKCRpbnRlcmZhY2UpIC4gJ19jZSc7Ci0gICAgICAgICAg ICB9Ci0gICAgICAgICAgICAkZXh0cmFfcmVnX2luZm8gLj0gYXByaW50ZihUZW1wbGF0ZXM6Omlt cGxlbWVudF9pbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhcnJheSgnY2UnID0+ICRjbGFzcy0+Y2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnaWZhY2VzJyA9PiBqb2luKCcsICcsICRpZmFjZV9lbnRyaWVzKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudW1faWZhY2Vz JyA9PiBjb3VudCgkaWZhY2VfZW50cmllcykpKTsKLSAgICAgICAgfQotICAgICAgICAvKiBEbyBu b3QgcmVnaXN0ZXIgZ3R5cGUgY29uc3RhbnRzIGZvciBpbnRlcmZhY2VzLCBzaW5jZSBpbnRlcmZh Y2VzIHdpbGwgCi0gICAgICAgICAgIG5ldmVyIGJlIGluc3RhbnRpYXRlZCBhbnl3YXkuICovCi0g ICAgICAgIGlmICgkY2xhc3MtPmRlZl90eXBlICE9ICdpbnRlcmZhY2UnKSB7Ci0gICAgICAgICAg ICAkdGhpcy0+Z3R5cGVfY29uc3RhbnRzIC49IHNwcmludGYoVGVtcGxhdGVzOjpndHlwZV9jb25z dGFudCwgJGNsYXNzLT5jZSwgJGNsYXNzLT50eXBlY29kZSk7Ci0gICAgICAgIH0KLQotICAgICAg ICByZXR1cm4gYXJyYXkoJ2NlJyA9PiAkY2xhc3MtPmNlLAotICAgICAgICAgICAgICAgICAgICAg J2NsYXNzJyA9PiAkY2xhc3MtPmluX21vZHVsZSAuICRjbGFzcy0+bmFtZSwKLSAgICAgICAgICAg ICAgICAgICAgICdtZXRob2RzJyA9PiAkbWV0aG9kX2RlZnMgPyBzdHJ0b2xvd2VyKCRjbGFzcy0+ Y19uYW1lKSAuICdfbWV0aG9kcycgOiAnTlVMTCcsCi0gICAgICAgICAgICAgICAgICAgICAncGFy ZW50JyA9PiAoJGNsYXNzLT5kZWZfdHlwZSA9PSAnb2JqZWN0JyAmJiAkY2xhc3MtPnBhcmVudCkg PyBzdHJ0b2xvd2VyKCRjbGFzcy0+cGFyZW50KSAuICdfY2UnIDogJ05VTEwnLAotICAgICAgICAg ICAgICAgICAgICAgJ2NlX2ZsYWdzJyA9PiAkY2xhc3MtPmNlX2ZsYWdzID8gaW1wbG9kZSgnfCcs ICRjbGFzcy0+Y2VfZmxhZ3MpIDogMCwKLSAgICAgICAgICAgICAgICAgICAgICd0eXBlY29kZScg PT4gJGNsYXNzLT50eXBlY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVfZnVuYycg PT4gJGNyZWF0ZV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgJ2V4dHJhX3JlZ19pbmZvJyA9 PiAkZXh0cmFfcmVnX2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAncHJvcGluZm8nID0+ICRw cm9wX2luZm8pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHdyaXRlX2NvbnN0YW50cygpCi0gICAg ewotICAgICAgICAkZW51bXNfY29kZSA9ICcnOwotCi0gICAgICAgIGZvcmVhY2ggKCR0aGlzLT5w YXJzZXItPmVudW1zIGFzICRlbnVtKSB7Ci0gICAgICAgICAgICBpZiAoJGVudW0tPnR5cGVjb2Rl ID09PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigidW5oYW5k bGVkIGVudW0gdHlwZSIpOwotICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRlbnVtLT52YWx1ZXMg YXMgJG5pY2sgPT4gJHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgICAkZW51bXNfY29kZSAuPSBzcHJpbnRmKFRlbXBsYXRlczo6 cmVnaXN0ZXJfZW51bSwgJGVudW0tPmRlZl90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJGVudW0tPnR5cGVjb2RlLCAkdGhpcy0+bHByZWZpeCAuICdfY2UnKTsK LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICR0aGlzLT5mcC0+d3JpdGUoc3By aW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2NvbnN0YW50cywgJHRoaXMtPmxwcmVmaXgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZW51bXNfY29kZSAuICJcbiIgLiAkdGhpcy0+ b3ZlcnJpZGVzLT5nZXRfY29uc3RhbnRzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAkdGhpcy0+Z3R5cGVfY29uc3RhbnRzKSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gd3Jp dGVfZnVuY3Rpb25zKCkKLSAgICB7Ci0gICAgICAgICRmdW5jX2RlZnMgPSBhcnJheSgpOwotCi0g ICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIiAgJS0yMHMiLCAiZnVuY3Rpb25zIik7Ci0gICAgICAg ICRudW1fd3JpdHRlbiA9ICRudW1fc2tpcHBlZCA9IDA7Ci0KLSAgICAgICAgJGRpY3RbJ3Njb3Bl J10gPSAkdGhpcy0+cHJlZml4OwotICAgICAgICAKLSAgICAgICAgJGZ1bmN0aW9uX2FyZ2luZm9z ID0gJyc7Ci0gICAgICAgIAotICAgICAgICAkb2JqZWN0ID0gbmV3IHN0ZGNsYXNzOwotICAgICAg ICAkb2JqZWN0LT5pbl9tb2R1bGUgPSAkdGhpcy0+cHJlZml4OwotICAgICAgICAkb2JqZWN0LT5j X25hbWUgPSAkdGhpcy0+cHJlZml4OwotCi0gICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wYXJzZXIt PmZ1bmN0aW9ucyBhcyAkZnVuY3Rpb24pIHsKLSAgICAgICAgICAgICRmdW5jX25hbWUgPSAkZnVu Y3Rpb24tPm5hbWU7Ci0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5uYW1lID09ICRmdW5jdGlv bi0+Y19uYW1lKSB7Ci0gICAgICAgICAgICAgICAgJGZ1bmNfbmFtZSA9IHN1YnN0cigkZnVuY3Rp b24tPm5hbWUsIHN0cmxlbigkdGhpcy0+bHByZWZpeCkgKyAxKTsKLSAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICRkaWN0WyduYW1lJ10gPSAkZnVuY19uYW1lOwotCi0gICAgICAgICAgICAvKiBz a2lwIGlnbm9yZWQgbWV0aG9kcyAqLwotICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMt PmlzX2lnbm9yZWQoJGZ1bmN0aW9uLT5jX25hbWUpKSBjb250aW51ZTsKLQotICAgICAgICAgICAg dHJ5IHsKLSAgICAgICAgICAgICAgICBsaXN0KCRhcmdpbmZvLCAkcmVmbGVjdGlvbl9mdW5jKSA9 ICR0aGlzLT5nZW5SZWZsZWN0aW9uQXJnSW5mbygkZnVuY3Rpb24sICRvYmplY3QpOwotICAgICAg ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICgoJG92ZXJyaWRlbiA9ICR0aGlzLT5vdmVy cmlkZXMtPmlzX292ZXJyaWRlbigkZnVuY3Rpb24tPmNfbmFtZSkpKSB7Ci0gICAgICAgICAgICAg ICAgICAgIGxpc3QoJGZ1bmNfbmFtZSwgJGZ1bmN0aW9uX292ZXJyaWRlLCAkZmxhZ3MpID0gJHRo aXMtPm92ZXJyaWRlcy0+Z2V0X292ZXJyaWRlKCRmdW5jdGlvbi0+Y19uYW1lKTsKLSAgICAgICAg ICAgICAgICAgICAgaWYgKGVtcHR5KCRmdW5jX25hbWUpIHx8ICRmdW5jX25hbWUgPT0gJGZ1bmN0 aW9uLT5jX25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAkZnVuY19uYW1lID0gJGZ1bmN0 aW9uLT5uYW1lOwotICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25fb3ZlcnJpZGUgPSBwcmVn X3JlcGxhY2UoJyFeLiooUEhQX01FVEhPRCkuKiQhbScsICJzdGF0aWMgJDEoJHRoaXMtPnByZWZp eCwgJGZ1bmNfbmFtZSkiLCAkZnVuY3Rpb25fb3ZlcnJpZGUpOwotICAgICAgICAgICAgICAgICAg ICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJGZ1bmN0aW9uX292ZXJyaWRlLCAkZnVuY3Rpb24tPmNf bmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICRmdW5jX2RlZnNbXSA9IHNwcmludGYoVGVtcGxh dGVzOjptZXRob2RfZW50cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJHRoaXMtPnByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAkZnVuY19uYW1lLCAkcmVmbGVjdGlvbl9mdW5jLCAkZmxhZ3MgPyAkZmxhZ3MgOiAn WkVORF9BQ0NfUFVCTElDfFpFTkRfQUNDX1NUQVRJQycpOwotICAgICAgICAgICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgICAgICAgICAgICRjb2RlID0gJHRoaXMtPndyaXRlX2NhbGxhYmxlKCRm dW5jdGlvbiwgVGVtcGxhdGVzOjpmdW5jdGlvbl9ib2R5LCB0cnVlLCBmYWxzZSwgJGRpY3QpOwot ICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKCRjb2RlKTsKLSAgICAgICAgICAg ICAgICAgICAgJGZ1bmNfZGVmc1tdID0gc3ByaW50ZihUZW1wbGF0ZXM6Om1ldGhvZF9lbnRyeSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cHJlZml4 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jX25hbWUs ICRyZWZsZWN0aW9uX2Z1bmMsICdaRU5EX0FDQ19QVUJMSUN8WkVORF9BQ0NfU1RBVElDJyk7Ci0g ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIl cyAgJS0xMXMgJXM6OiVzXG4iLCAkb3ZlcnJpZGVuPyIlJSI6IiAgIiwgImZ1bmN0aW9uIiwgJHRo aXMtPnByZWZpeCwgJGZ1bmN0aW9uLT5uYW1lKTsKLSAgICAgICAgICAgICAgICAkbnVtX3dyaXR0 ZW4rKzsKLSAgICAgICAgICAgICAgICAkdGhpcy0+Y292ZXJbImZ1bmNzIl0tPndyaXR0ZW4oKTsK LQotICAgICAgICAgICAgICAgIGlmICgkYXJnaW5mbyAhPT0gbnVsbCkgewotICAgICAgICAgICAg ICAgICAgICAkZnVuY3Rpb25fYXJnaW5mb3MgLj0gJGFyZ2luZm87Ci0gICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7Ci0gICAgICAgICAgICAgICAg JHRoaXMtPmRpdmVydCgibm90Z2VuIiwgIiAgJS0xMXMgJXM6OiVzOiAlc1xuIiwgImZ1bmN0aW9u IiwgJHRoaXMtPnByZWZpeCwgJGZ1bmN0aW9uLT5uYW1lLCAkZS0+Z2V0TWVzc2FnZSgpKTsKLSAg ICAgICAgICAgICAgICAkbnVtX3NraXBwZWQrKzsKLSAgICAgICAgICAgICAgICAkdGhpcy0+Y292 ZXJbImZ1bmNzIl0tPnNraXBwZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg ICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5oYXZlX2V4dHJhX21ldGhvZHMoJHRoaXMtPnByZWZp eCkpIHsKLSAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5vdmVycmlkZXMtPmdldF9leHRyYV9t ZXRob2RzKCR0aGlzLT5wcmVmaXgpIGFzICRmdW5jX25hbWUgPT4gJG92ZXJyaWRlKSB7Ci0gICAg ICAgICAgICAgICAgbGlzdCgkZnVuY19ib2R5LCAkZmxhZ3MpID0gJG92ZXJyaWRlOwotICAgICAg ICAgICAgICAgIGxpc3QoJGFyZ2luZm8sICRyZWZsZWN0aW9uX2Z1bmMpID0gJHRoaXMtPmdlblJl ZmxlY3Rpb25BcmdJbmZvKG51bGwsICRvYmplY3QsICRmdW5jX25hbWUpOwotCi0gICAgICAgICAg ICAgICAgJGZ1bmNfYm9keSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBfTUVUSE9EKS4qJCFtJywg InN0YXRpYyAkMSgkdGhpcy0+cHJlZml4LCAkZnVuY19uYW1lKSIsICRmdW5jX2JvZHkpOwotICAg ICAgICAgICAgICAgICR0aGlzLT53cml0ZV9vdmVycmlkZSgkZnVuY19ib2R5LCAkdGhpcy0+cHJl Zml4LCAkZnVuY19uYW1lKTsKLSAgICAgICAgICAgICAgICAkZnVuY19kZWZzW10gPSBzcHJpbnRm KFRlbXBsYXRlczo6bWV0aG9kX2VudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJHRoaXMtPnByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICRmdW5jX25hbWUsICRyZWZsZWN0aW9uX2Z1bmMsICdaRU5EX0FDQ19QVUJMSUN8WkVO RF9BQ0NfU1RBVElDJyk7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVydCgiZ2VuIiwgIiUl JSUgICUtMTFzICVzOjolc1xuIiwgImZ1bmN0aW9uIiwgJHRoaXMtPnByZWZpeCwgJGZ1bmNfbmFt ZSk7Ci0gICAgICAgICAgICAgICAgJG51bV93cml0dGVuKys7Ci0KLSAgICAgICAgICAgICAgICBp ZiAoJGFyZ2luZm8gIT09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uX2Fy Z2luZm9zIC49ICRhcmdpbmZvOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg ICAgICAgfQotCi0gICAgICAgIHNvcnQoJGZ1bmNfZGVmcyk7Ci0gICAgICAgIGlmICgkZnVuY19k ZWZzKSB7Ci0gICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKCRmdW5jdGlvbl9hcmdpbmZvcyk7 Ci0gICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpmdW5jdGlv bnNfZGVjbCwgc3RydG9sb3dlcigkdGhpcy0+bHByZWZpeCkpKTsKLSAgICAgICAgICAgICR0aGlz LT5mcC0+d3JpdGUoam9pbignJywgJGZ1bmNfZGVmcykpOwotICAgICAgICAgICAgJHRoaXMtPmZw LT53cml0ZShUZW1wbGF0ZXM6OmZ1bmN0aW9uc19kZWNsX2VuZCk7Ci0gICAgICAgIH0KLQotICAg ICAgICAkdGhpcy0+bG9nX3ByaW50KCIoJWQgd3JpdHRlbiwgJWQgc2tpcHBlZClcbiIsICRudW1f d3JpdHRlbiwgJG51bV9za2lwcGVkKTsKLSAgICAgICAgcmV0dXJuICRmdW5jX2RlZnM7Ci0gICAg fQotCi0gICAgZnVuY3Rpb24gd3JpdGVfcHJvcF9saXN0cygpCi0gICAgewotICAgICAgICBnbG9i YWwgICRjbGFzc19wcm9wX2xpc3RfaGVhZGVyLAotICAgICAgICAgICAgICAgICRjbGFzc19wcm9w X2xpc3RfZm9vdGVyOwotICAgICAgICAKLSAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgiXG4iKTsK LSAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+b2JqZWN0cyBhcyAkb2JqZWN0KSB7Ci0g ICAgICAgICAgICBpZiAoY291bnQoJG9iamVjdC0+ZmllbGRzKSA9PSAwKSBjb250aW51ZTsKLQot ICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZShzcHJpbnRmKCRjbGFzc19wcm9wX2xpc3RfaGVh ZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ0b2xvd2VyKCRvYmplY3Qt PmluX21vZHVsZSkgLiAnXycgLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ0 b2xvd2VyKCRvYmplY3QtPm5hbWUpKSk7Ci0gICAgICAgICAgICBmb3JlYWNoICgkb2JqZWN0LT5m aWVsZHMgYXMgJGZpZWxkX2RlZikgewotICAgICAgICAgICAgICAgIGxpc3QoLCAkZmllbGRfbmFt ZSkgPSAkZmllbGRfZGVmOwotICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoIlx0XCIk ZmllbGRfbmFtZVwiLFxuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkdGhpcy0+ZnAt PndyaXRlKCRjbGFzc19wcm9wX2xpc3RfZm9vdGVyKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg IGZ1bmN0aW9uIHdyaXRlX2NvdmVyYWdlX2luZm8oKQotICAgIHsKLSAgICAgICAgJHRoaXMtPmxv Z19wcmludCgiXG5cbiIpOwotICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCR0aGlzLT5tYWtlX2hl YWRlcigiJHRoaXMtPnByZWZpeCBDb3ZlcmFnZSIpKTsKLQotICAgICAgICBmb3JlYWNoICgkdGhp cy0+Y292ZXIgYXMgJGNvdmVyYWdlKSB7Ci0gICAgICAgICAgICBsaXN0KCRuYW1lLCAkd3JpdHRl biwgJHRvdGFsLCAkcGVyY2VudCkgPSAkY292ZXJhZ2UtPmdldF9zdGF0cygpOwotICAgICAgICAg ICAgaWYgKCR0b3RhbCkgewotICAgICAgICAgICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIiUtMjBz OiAlNS4xZiUlIHdyaXR0ZW4gKCVkLyVkKVxuIiwgJG5hbWUsICRwZXJjZW50LCAkd3JpdHRlbiwg JHRvdGFsKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgJHRoaXMtPmxv Z19wcmludCgiJS0yMHM6IG5vbmUgZm91bmRcbiIsICRuYW1lKTsKLSAgICAgICAgICAgIH0KLSAg ICAgICAgfQotICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJcblxuIik7Ci0gICAgfQotCi0gICAg ZnVuY3Rpb24gd3JpdGVfY2xhc3NfZW50cmllcygpCi0gICAgewotICAgICAgICAkdGhpcy0+ZnAt PndyaXRlKCJcbiIpOwotICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5pbnRlcmZhY2Vz IGFzICRpbnRlcmZhY2UpIHsKLSAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKHNw cmludGYoVGVtcGxhdGVzOjpjbGFzc19lbnRyeSwgJGludGVyZmFjZS0+Y2UpKTsKLSAgICAgICAg fQotCi0gICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wYXJzZXItPm9iamVjdHMgYXMgJG9iamVjdCkg ewotICAgICAgICAgICAgaWYgKCEkdGhpcy0+b3ZlcnJpZGVzLT5pc19pZ25vcmVkKCRvYmplY3Qt PmNfbmFtZSkpIHsKLSAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2hlYWRlcihzcHJp bnRmKFRlbXBsYXRlczo6Y2xhc3NfZW50cnksICRvYmplY3QtPmNlKSk7Ci0gICAgICAgICAgICB9 Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5ib3hlZCBhcyAk Ym94ZWQpIHsKLSAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKHNwcmludGYoVGVt cGxhdGVzOjpjbGFzc19lbnRyeSwgJGJveGVkLT5jZSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg Zm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+cG9pbnRlcnMgYXMgJHBvaW50ZXIpIHsKLSAgICAgICAg ICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKHNwcmludGYoVGVtcGxhdGVzOjpjbGFzc19lbnRy eSwgJHBvaW50ZXItPmNlKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoJHRoaXMtPnBhcnNl ci0+ZnVuY3Rpb25zIHx8ICR0aGlzLT5wYXJzZXItPmVudW1zKSB7Ci0gICAgICAgICAgICAkdGhp cy0+ZnAtPndyaXRlX2hlYWRlcihzcHJpbnRmKFRlbXBsYXRlczo6Y2xhc3NfZW50cnksICR0aGlz LT5scHJlZml4IC4gJ19jZScpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIG1h a2VfaGVhZGVyKCRzdHJpbmcsICR3aWR0aCA9IDcyLCAkY2hhciA9ICc9JykKLSAgICB7Ci0gICAg ICAgICRyZXMgPSAiXG4iIC4gc3RyX3JlcGVhdCgkY2hhciwgJHdpZHRoKSAuICJcbiI7Ci0gICAg ICAgICRyZXMgLj0gc3RyX3BhZCgkc3RyaW5nLCAkd2lkdGgsICIgIiwgU1RSX1BBRF9CT1RIKSAu ICJcbiI7Ci0gICAgICAgICRyZXMgLj0gc3RyX3JlcGVhdCgkY2hhciwgJHdpZHRoKSAuICJcbiI7 Ci0KLSAgICAgICAgcmV0dXJuICRyZXM7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gd3JpdGVfc291 cmNlKCRzYXZlZmlsZSkKLSAgICB7Ci0gICAgICAgICR0aGlzLT5ub3RfZ2VuZXJhdGVkX2xpc3Qg PSBhcnJheSgpOwotICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCR0aGlzLT5tYWtlX2hlYWRlcigi JHRoaXMtPnByZWZpeCBTdW1tYXJ5IikpOwotCi0gICAgICAgICR0aGlzLT5mcCA9IG5ldyBMaW5l T3V0cHV0KCRzYXZlZmlsZSk7Ci0gICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKCIjaW5j bHVkZSBcInBocF9ndGsuaFwiXG4iKTsKLSAgICAgICAgJHRoaXMtPmZwLT53cml0ZV9oZWFkZXIo IlxuI2lmIEhBVkVfUEhQX0dUS1xuIik7Ci0gICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVy KCR0aGlzLT5vdmVycmlkZXMtPmdldF9oZWFkZXJzKCkpOwotICAgICAgICAkdGhpcy0+d3JpdGVf Y2xhc3NfZW50cmllcygpOwotICAgICAgICAkdGhpcy0+d3JpdGVfY2xhc3NlcygpOwotICAgICAg ICAkdGhpcy0+d3JpdGVfY29uc3RhbnRzKCk7Ci0gICAgICAgICR0aGlzLT5mcC0+d3JpdGVfYWxs KCJcbiNlbmRpZiAvKiBIQVZFX1BIUF9HVEsgKi9cbiIpOwotCi0gICAgICAgICR0aGlzLT5mcC0+ c2F2ZSgpOwotCi0gICAgICAgICR0aGlzLT5sb2coIlxuXG4iKTsKLSAgICAgICAgJHRoaXMtPmxv ZygkdGhpcy0+bWFrZV9oZWFkZXIoIiR0aGlzLT5wcmVmaXggR2VuZXJhdGVkIEl0ZW1zIikpOwot ICAgICAgICAkdGhpcy0+bG9nKCIlJSUlIC0gb3ZlcnJpZGRlblxuXG4iKTsKLSAgICAgICAgJHRo aXMtPmxvZygiJXMiLCAkdGhpcy0+ZGl2ZXJzaW9uc1siZ2VuIl0pOwotCi0gICAgICAgICR0aGlz LT5sb2coIlxuXG4iKTsKLSAgICAgICAgJHRoaXMtPmxvZygkdGhpcy0+bWFrZV9oZWFkZXIoIiR0 aGlzLT5wcmVmaXggTm90IEdlbmVyYXRlZCBJdGVtcyIpKTsKLSAgICAgICAgaWYgKCFlbXB0eSgk dGhpcy0+ZGl2ZXJzaW9uc1sibm90Z2VuIl0pKSB7Ci0gICAgICAgICAgICAkdGhpcy0+bG9nKCIl cyIsICR0aGlzLT5kaXZlcnNpb25zWyJub3RnZW4iXSk7Ci0gICAgICAgIH0KLQotICAgICAgICAk dGhpcy0+d3JpdGVfY292ZXJhZ2VfaW5mbygpOwotICAgICAgICAkdGhpcy0+d3JpdGVfdW51c2Vk X2luZm8oKTsKLSAgICB9Ci0gICAgCi0gICAgCi0gICAgCi0gICAgLyoqCi0gICAgKiAgIGdlbmVy YXRlcyBhbiBaRU5EX0FSR0lORk8gZW50cnkgZm9yIHRoaXMgbWV0aG9kCi0gICAgKiAgIGJhc2Vk IG9uIHRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGl0Ci0gICAgKgotICAgICogICBAcGFyYW0g TWV0aG9kICRtZXRob2QgICAgICAgICAgIFRoZSBtZXRob2QgKG9yIGNvbnN0cnVjdG9yKSB0byBn ZW5lcmF0ZSB0aGUgYXJnaW5mbyBmb3IgKGlmIE5VTEwsIHRoZW4gd2UgY2hlY2sgZm9yIG92ZXJy aWRkZW4gb25seSkKLSAgICAqICAgQHBhcmFtIENsYXNzICAkY2xhc3MgICAgICAgICAgICBUaGUg Y2xhc3Mgb2YgdGhlIG1ldGhvZAotICAgICogICBAcGFyYW0gc3RyaW5nICRkZXRfbWV0aG9kX25h bWUgIFNwZWNpYWwgZGV0ZXJtaW5lZCBtZXRob2QgbmFtZSBpZiBpdCBjYW4ndCBiZSBjYWxjdWxh dGVkIGZyb20gdGhlIG1ldGhvZCBvYmplY3QKLSAgICAqICAgQHJldHVybiBhcnJheSBUaGUgYXJn aW5mbyAoc3RyaW5nKSBhbmQgdGhlIG5hbWUgb2YgdGhlIHJlZmxlY3Rpb24gZnVuY3Rpb24KLSAg ICAqLwotICAgIGZ1bmN0aW9uIGdlblJlZmxlY3Rpb25BcmdJbmZvKCRtZXRob2QsICRjbGFzcywg JGRldF9tZXRob2RfbmFtZSA9IG51bGwpCi0gICAgewotICAgICAgICBpZiAoJGRldF9tZXRob2Rf bmFtZSAhPT0gbnVsbCkgewotICAgICAgICAgICAgJGxlbiA9IDIwIC0gc3RybGVuKCRkZXRfbWV0 aG9kX25hbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGxlbiA9IDIwIC0gc3Ry bGVuKCRtZXRob2QtPm5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgkbGVuIDwgMCkgeyAk bGVuID0gMDsgfQotCi0gICAgICAgIGlmICgkbWV0aG9kID09PSBudWxsIHx8ICgkb3ZlcnJpZGVu ID0gJHRoaXMtPm92ZXJyaWRlcy0+aXNfb3ZlcnJpZGVuKCRtZXRob2QtPmNfbmFtZSkpKSB7Ci0g ICAgICAgICAgICAvL292ZXJyaWRkZW4gZnVuY3Rpb24gLSBleHRyYSBhcmdpbmZvIGluIG92ZXJy aWRlIGZpbGU/Ci0gICAgICAgICAgICAkY2xhc3NfbmFtZSAgPSAkY2xhc3MtPmNfbmFtZTsKLSAg ICAgICAgICAgIGlmICgkZGV0X21ldGhvZF9uYW1lICE9PSBudWxsKSB7Ci0gICAgICAgICAgICAg ICAgJG1ldGhvZF9uYW1lID0gJGRldF9tZXRob2RfbmFtZTsKLSAgICAgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICAgICAgJG92ZXJyaWRlaW5mbyA9ICR0aGlzLT5vdmVycmlkZXMtPmdldF9v dmVycmlkZSgkbWV0aG9kLT5jX25hbWUpOwotICAgICAgICAgICAgICAgICRtZXRob2RfbmFtZSA9 ICRvdmVycmlkZWluZm9bMF07Ci0gICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRtZXRob2RfbmFt ZSkgfHwgJG1ldGhvZF9uYW1lID09ICRtZXRob2QtPmNfbmFtZSkgewotICAgICAgICAgICAgICAg ICAgICAkbWV0aG9kX25hbWUgPSAkbWV0aG9kLT5uYW1lOwotICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmhhc19leHRy YV9hcmdpbmZvKCRjbGFzc19uYW1lLCAkbWV0aG9kX25hbWUpKSB7Ci0gICAgICAgICAgICAgICAg JHJlZmxlY3Rpb25fZnVuY25hbWUgPSBHZW5lcmF0b3I6OmdldFJlZmxlY3Rpb25GdW5jTmFtZSgk bWV0aG9kLCAkY2xhc3MsICRkZXRfbWV0aG9kX25hbWUpOwotICAgICAgICAgICAgICAgICRyZWZs ZWN0aW9uX2Z1bmMgPSBzdHJfcmVwZWF0KCcgJywgJGxlbikgLiAkcmVmbGVjdGlvbl9mdW5jbmFt ZTsKLQotICAgICAgICAgICAgICAgICRhcmdpbmZvID0gc3RyX3JlcGxhY2UoJ0FSR0lORk9fTkFN RScsICRyZWZsZWN0aW9uX2Z1bmNuYW1lLCAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfZXh0cmFfYXJn aW5mbygkY2xhc3NfbmFtZSwgJG1ldGhvZF9uYW1lKSk7Ci0gICAgICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgICAgIC8vbm8gYXJnaW5mbwotICAgICAgICAgICAgICAgICRyZWZsZWN0aW9u X2Z1bmMgPSBzdHJfcmVwZWF0KCcgJywgJGxlbikgLiAnTlVMTCc7Ci0gICAgICAgICAgICAgICAg JGFyZ2luZm8gPSBudWxsOwotICAgICAgICAgICAgICAgIC8vdmFyX2R1bXAoJ05vIGFyZ2luZm8g Zm9yIG92ZXJyaWRkZW4gJyAuICRyZWZsZWN0aW9uX2Z1bmNuYW1lKTsKLSAgICAgICAgICAgIH0K LQotICAgICAgICB9IGVsc2UgaWYgKGNvdW50KCRtZXRob2QtPnBhcmFtcykgPT0gMCkgewotICAg ICAgICAgICAgJHJlZmxlY3Rpb25fZnVuYyA9IHN0cl9yZXBlYXQoJyAnLCAkbGVuKSAuICdOVUxM JzsKLSAgICAgICAgICAgICRhcmdpbmZvID0gbnVsbDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICRyZWZsZWN0aW9uX2Z1bmNuYW1lID0gR2VuZXJhdG9yOjpnZXRSZWZsZWN0aW9uRnVu Y05hbWUoJG1ldGhvZCwgJGNsYXNzKTsKLSAgICAgICAgICAgICRyZWZsZWN0aW9uX2Z1bmMgPSBz dHJfcmVwZWF0KCcgJywgJGxlbikgLiAkcmVmbGVjdGlvbl9mdW5jbmFtZTsKLQotICAgICAgICAg ICAgJHBhcmFtX2NvdW50ID0gMDsKLSAgICAgICAgICAgICRvcHRwYXJhbV9jb3VudCA9IDA7Ci0g ICAgICAgICAgICAkYXJncGFyYW1zID0gJyc7Ci0gICAgICAgICAgICBmb3JlYWNoICgkbWV0aG9k LT5wYXJhbXMgYXMgJHBhcmFtaW5mbykgewotICAgICAgICAgICAgICAgICRwYXJhbV9jb3VudCsr OwotICAgICAgICAgICAgICAgIGlmICgkcGFyYW1pbmZvWzJdICE9PSBudWxsKSB7Ci0gICAgICAg ICAgICAgICAgICAgIC8vaWYgdGhpcyBpcyBzZXQsIHdlJ3ZlIGdvdCBhIGRlZmF1bHQgdmFsdWUg LT4gb3B0aW9uYWwgcGFyYW1ldGVyCi0gICAgICAgICAgICAgICAgICAgICRvcHRwYXJhbV9jb3Vu dCsrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICRwYXJhbXR5cGUgPSBz dHJfcmVwbGFjZSgnY29uc3QtJywgJycsIHN0cl9yZXBsYWNlKCcqJywgJycsICRwYXJhbWluZm9b MF0pKTsKLSAgICAgICAgICAgICAgICBpZiAoR2VuZXJhdG9yOjppc19waHBfdHlwZSgkcGFyYW10 eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAkYXJncGFyYW1zIC49IHNwcmludGYoVGVtcGxh dGVzOjpyZWZsZWN0aW9uX2FyZywgJHBhcmFtaW5mb1sxXSk7Ci0gICAgICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgJGFyZ3BhcmFtcyAuPSBzcHJpbnRmKFRlbXBsYXRl czo6cmVmbGVjdGlvbl9vYmphcmcsICRwYXJhbWluZm9bMV0sICRwYXJhbXR5cGUpOwotICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgkb3B0cGFyYW1fY291 bnQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgLy93aXRoIG9wdGlvbmFsIGNvdW50Ci0gICAgICAg ICAgICAgICAgJGFyZ2luZm8gPSBzcHJpbnRmKFRlbXBsYXRlczo6cmVmbGVjdGlvbl9hcmdpbmZv ZXhfYmVnaW4sICRyZWZsZWN0aW9uX2Z1bmNuYW1lLCAkcGFyYW1fY291bnQgLSAkb3B0cGFyYW1f Y291bnQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvL3NpbXBsZSBv bmUKLSAgICAgICAgICAgICAgICAkYXJnaW5mbyA9IHNwcmludGYoVGVtcGxhdGVzOjpyZWZsZWN0 aW9uX2FyZ2luZm9fYmVnaW4sICRyZWZsZWN0aW9uX2Z1bmNuYW1lKTsKLSAgICAgICAgICAgIH0K LQotICAgICAgICAgICAgJGFyZ2luZm8gLj0gJGFyZ3BhcmFtczsKLSAgICAgICAgICAgICRhcmdp bmZvIC49IFRlbXBsYXRlczo6cmVmbGVjdGlvbl9hcmdpbmZvX2VuZDsKLSAgICAgICAgfQotICAg ICAgICByZXR1cm4gYXJyYXkoJGFyZ2luZm8sICRyZWZsZWN0aW9uX2Z1bmMpOwotICAgIH0vL2Z1 bmN0aW9uIGdlblJlZmxlY3Rpb25BcmdJbmZvKCRtZXRob2QsICRjbGFzcykKLQotCi0KLSAgICBm dW5jdGlvbiBnZXRSZWZsZWN0aW9uRnVuY05hbWUoJG1ldGhvZCwgJGNsYXNzLCAkZGV0X21ldGhv ZF9uYW1lID0gbnVsbCkKLSAgICB7Ci0gICAgICAgIGlmICgkbWV0aG9kID09PSBudWxsKSB7Ci0g ICAgICAgICAgICAkbWV0aG9kID0gbmV3IHN0ZGNsYXNzOwotICAgICAgICAgICAgJG1ldGhvZC0+ bmFtZSA9ICRkZXRfbWV0aG9kX25hbWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICdhcmdp bmZvXycgLiBzdHJ0b2xvd2VyKCRjbGFzcy0+aW5fbW9kdWxlKSAuICdfJyAuIHN0cnRvbG93ZXIo JGNsYXNzLT5jX25hbWUpIC4gJ18nLiAkbWV0aG9kLT5uYW1lOwotICAgIH0vL2Z1bmN0aW9uIGdl dFJlZmxlY3Rpb25GdW5jTmFtZSgkbWV0aG9kLCAkY2xhc3MsICRkZXRfbWV0aG9kX25hbWUgPSBu dWxsKQotCi0KLQotICAgIGZ1bmN0aW9uIHdyaXRlX3VudXNlZF9pbmZvKCkKLSAgICB7Ci0gICAg ICAgICR1bnVzZWQgPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfdW51c2VkX2FyZ2luZm8oKTsKLSAg ICAgICAgCi0gICAgICAgICR1bnVzZWRfY291bnQgPSAwOwotICAgICAgICAkb3V0cHV0ID0gJyc7 Ci0gICAgICAgIGZvcmVhY2ggKCR1bnVzZWQgYXMgJGNsYXNzID0+ICRtZXRob2RzKSB7Ci0gICAg ICAgICAgICBmb3JlYWNoICgkbWV0aG9kcyBhcyAkbWV0aG9kID0+ICR0cnVlKSB7Ci0gICAgICAg ICAgICAgICAgJHVudXNlZF9jb3VudCsrOwotICAgICAgICAgICAgICAgIGxpc3QoJGxpbmUsICRm aWxlbmFtZSkgPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfbGluZV9pbmZvKCIkY2xhc3MuJG1ldGhv ZC5hcmdpbmZvIik7Ci0gICAgICAgICAgICAgICAgJG91dHB1dCAuPSAnICcgLiBzdHJfcGFkKCRj bGFzcyAuICc6OicgLiAkbWV0aG9kLCA0MCkgLiAnICcgLiAkZmlsZW5hbWUgLiAnIycgLiAkbGlu ZSAuICJcbiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCR1bnVzZWRf Y291bnQgPiAwKSB7Ci0gICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCdVbnVzZWQgYXJnaW5m byBvdmVycmlkZXM6JyAuICJcbiIpOwotICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgkb3V0 cHV0KTsKLSAgICAgICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIlxuXG4iKTsKLSAgICAgICAgfQot ICAgIH0KLQotCi0KLSAgICAvKioKLSAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIHR5cGUgaXMg YSBzaW1wbGUgcGhwIHR5cGUKLSAgICAgKgotICAgICAqIEFsbCB1bnN1cHBvcnRlZCBjbGFzc2Vz IGhhdmUgdG8gYmUgaGVyZSBhcyBwaHA1IGZ1bmN0aW9ucyB3ZWlyZCBpZgotICAgICAqICByZWZs ZWN0aW9uIGlzIHVzZWQgd2l0aCB0aGlzIG9uZXMuLi4KLSAgICAgKiBVc2UgZ2VuZXJhdG9yL3Jl ZmxlY3Rpb25fY2xhc3NfY2hlY2tlci5waHAgdG8gbWlzc2luZyBjbGFzc2VzLCBhbmQKLSAgICAg KiAgYWRkIHRoZW0gaGVyZQotICAgICAqCi0gICAgICogQGFjY2VzcyBwdWJsaWMKLSAgICAgKiBA cGFyYW0gIHN0cmluZyAkaW5fdHlwZSBUaGUgQyB0eXBlLgotICAgICAqIEByZXR1cm4gYm9vbGVh biB0cnVlIGlmIGl0cyBhIHNpbXBsZSB0eXBlCi0gICAgICovCi0gICAgZnVuY3Rpb24gaXNfcGhw X3R5cGUoJGluX3R5cGUpCi0gICAgewotICAgICAgICAvLyBLZXkgPSBDIFR5cGUsIFZhbCA9IFBI UCB0eXBlCi0gICAgICAgIHN0YXRpYyAkdHlwZV9tYXAgPSBhcnJheSgnbm9uZScgICAgICAgICAg ID0+ICd2b2lkJywKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYXIqJyAg ICAgICAgICA9PiAnc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn Y2hhcionICAgICAgICAgPT4gJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnY29uc3QtY2hhcionICAgID0+ICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2NvbnN0LWdjaGFyKicgICA9PiAnc3RyaW5nJywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdzdHJpbmcnICAgICAgICAgPT4gJ3N0cmluZycsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhdGljX3N0cmluZycgID0+ICdzdHJpbmcnLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vuc2lnbmVkLWNoYXIqJyA9PiAnc3Ry aW5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdndWNoYXIqJyAgICAgICAg PT4gJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFyJyAgICAgICAgICAgPT4gJ2NoYXInLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2djaGFyJyAgICAgICAgICA9PiAnY2hhcics Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VjaGFyJyAgICAgICAgID0+ICdj aGFyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2ludCcgICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdnaW50JyAgICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VpbnQnICAgICAgICAgID0+ICdpbnQnLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3J0JyAgICAgICAgICA9PiAnaW50JywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnc2hvcnQnICAgICAgICAgPT4gJ2lu dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VzaG9ydCcgICAgICAgID0+ ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvbmcnICAgICAgICAg ICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9uZycgICAg ICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3Vsb25n JyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VpbnQ4JyAgICAgICAgID0+ICdpbnQn LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dpbnQ4JyAgICAgICAgICA9PiAn aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdndWludDE2JyAgICAgICAg PT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2ludDE2JyAgICAg ICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1aW50MzIn ICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnaW50 MzInICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnc2l6ZScgICAgICAgICAgPT4gJ2lu dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vYWxsIGVudW1lcmF0aW9uIGNsYXNzZXMgaGVyZQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy9ndGsgZW51bXMKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdHdGtBY2NlbEZsYWdzJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnR3RrQW5jaG9yVHlwZScgICAgICAgID0+ICdpbnQnLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0Fycm93VHlwZScgICAgICAgICA9 PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtBdHRhY2hPcHRp b25zJyAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3Rr QnV0dG9uQm94U3R5bGUnICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ0d0a0J1dHRvbnNUeXBlJyAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdHdGtDYWxlbmRhckRpc3BsYXlPcHRpb25zJyA9PiAnaW50JywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtDZWxsUmVuZGVyZXJTdGF0ZScgPT4g J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrQ29ybmVyVHlwZScg ICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0NU cmVlRXhwYW5kZXJTdHlsZSc9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdHdGtDVHJlZUxpbmVTdHlsZScgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnR3RrQ3VydmVUeXBlJyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0RlbGV0ZVR5cGUnICAgICAgICA9PiAnaW50JywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtEZXN0cm95Tm90aWZ5JyAgICAg PT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrRGlhbG9nRmxh Z3MnICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0 a0RpcmVjdGlvblR5cGUnICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdHdGtFeHBhbmRlclN0eWxlJyAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnR3RrRmlsZUNob29zZXJBY3Rpb24nID0+ICdpbnQnLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0Z1bmN0aW9uJyAgICAgICAgICA9PiAnaW50 JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtJY29uTG9va3VwRmxhZ3Mn ICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrSWNvblNp emUnICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J0d0a0lNUHJlZWRpdFN0eWxlJyAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdHdGtJTVN0YXR1c1N0eWxlJyAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnR3RrSnVzdGlmaWNhdGlvbicgICAgID0+ICdpbnQnLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a01hdGNoVHlwZScgICAgICAgICA9PiAn aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtNZXNzYWdlVHlwZScg ICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrTWV0 cmljVHlwZScgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ0d0a01vdmVtZW50U3RlcCcgICAgICA9PiAnaW50JywgCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnR3RrT3JpZW50YXRpb24nICAgICAgID0+ICdpbnQnLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1BhY2tEaXJlY3Rpb24nICAgICA9PiAnaW50JywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQYWNrVHlwZScgICAgICAgICAg PT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGF0aFByaW9y aXR5VHlwZScgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0 a1BhdGhUeXBlJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdHdGtQb2xpY3lUeXBlJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnR3RrUG9zaXRpb25UeXBlJyAgICAgID0+ICdpbnQnLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1ByZXZpZXdUeXBlJyAgICAgICA9PiAnaW50 JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcm9ncmVzc0Jhck9yaWVu dGF0aW9uJyA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQ cm9ncmVzc0JhclN0eWxlJyAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnR3RrUmVsaWVmU3R5bGUnICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ0d0a1Jlc2l6ZU1vZGUnICAgICAgICA9PiAnaW50JywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTY3JvbGxTdGVwJyAgICAgICAgPT4gJ2ludCcs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU2Nyb2xsVHlwZScgICAgICAg ID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1NlbGVjdGlv bk1vZGUnICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH dGtTaGFkb3dUeXBlJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnR3RrU2lkZVR5cGUnICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ0d0a1NpemVHcm91cE1vZGUnICAgICA9PiAnaW50JywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTcGluQnV0dG9uVXBkYXRlUG9saWN5JyA9 PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTcGluVHlwZScg ICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3Rr U3RhdGVUeXBlJyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ0d0a1N0b2NrSXRlbScgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdHdGtTdWJtZW51RGlyZWN0aW9uJyAgPT4gJ2ludCcsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU3VibWVudVBsYWNlbWVudCcgID0+ICdpbnQn LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1RleHREaXJlY3Rpb24nICAg ICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtUZXh0U2Vh cmNoRmxhZ3MnICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn R3RrVGV4dFdpbmRvd1R5cGUnICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ0d0a1Rvb2xiYXJTdHlsZScgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdHdGtUcmVlQ2VsbERhdGFGdW5jJyAgPT4gJ2ludCcsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrVHJlZU1vZGVsJyAgICAgICAgID0+ICdp bnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1RyZWVQYXRoJyAgICAg ICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtUcmVl Vmlld0NvbHVtblNpemluZycgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnR3RrVHJlZVZpZXdEcm9wUG9zaXRpb24nID0+ICdpbnQnLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ0d0a1R5cGUnICAgICAgICAgICAgICA9PiAnaW50JywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtVSU1hbmFnZXJJdGVtVHlwZScgPT4gJ2lu dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrVXBkYXRlVHlwZScgICAg ICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Zpc2li aWxpdHknICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdHdGtXaW5kb3dQb3NpdGlvbicgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnR3RrV2luZG93VHlwZScgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ0d0a1dyYXBNb2RlJyAgICAgICAgICA9PiAnaW50JywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTb3J0VHlwZScgICAgICAgICAgPT4g J2ludCcsCi0JCQkJCQkJCSAvLyAyLjEwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnR3RrVW5pdCcgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ0d0a1RyZWVWaWV3R3JpZExpbmVzJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtUZXh0QnVmZmVyVGFyZ2V0SW5mbycgICAgICAg ICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU2Vuc2l0 aXZpdHlUeXBlJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnR3RrUmVjZW50U29ydFR5cGUnICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ0d0a1JlY2VudE1hbmFnZXJFcnJvcicgICAgICAgICAgPT4g J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUmVjZW50Q2hvb3Nl ckVycm9yICcgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ0d0a1ByaW50U3RhdHVzJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdHdGtQcmludFF1YWxpdHknICAgICAgICAgID0+ICdpbnQnLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1ByaW50UGFnZXMnICAgICAgICA9PiAn aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcmludE9wZXJhdGlv blJlc3VsdCcgICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnR3RrUHJpbnRPcGVyYXRpb25BY3Rpb24nICAgICAgICAgID0+ICdpbnQnLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1ByaW50RXJyb3InICAgICAgICAgID0+ICdp bnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1ByaW50RHVwbGV4JyAg ICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQ YWdlU2V0JyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnR3RrUGFnZU9yaWVudGF0aW9uJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdHdGtDZWxsUmVuZGVyZXJBY2NlbE1vZGUnICAgICAgICAgID0+ ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0Fzc2lzdGFudFBh Z2VUeXBlJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vZ2RrIGVudW1zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrQXhp c1VzZScgICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ0dka0JpdG1hcCcgICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdHZGtCeXRlT3JkZXInICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnR2RrQ2FwU3R5bGUnICAgICAgICAgID0+ICdpbnQnLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0NvbG9yc3BhY2UnICAgICAgICA9 PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtDdXJzb3JUeXBl JyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2Rr Q3Jvc3NpbmdNb2RlJyAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ0dka0RyYWdBY3Rpb24nICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdHZGtEcmFnUHJvdG9jb2wnICAgICAgPT4gJ2ludCcsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrRXZlbnRFeHBvc2UnICAgICAgID0+ICdpbnQn LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0V2ZW50S2V5JyAgICAgICAg ICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtFdmVudFNl bGVjdGlvbicgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn R2RrRXZlbnRUeXBlJyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ0dka0V2ZW50TWFzaycgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdHZGtFeHRlbnNpb25Nb2RlJyAgICAgPT4gJ2ludCcsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrR3Jhdml0eScgICAgICAgICAgID0+ICdp bnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0ZpbGwnICAgICAgICAg ICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtGaWxs UnVsZScgICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnR2RrRmlsdGVyUmV0dXJuJyAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ0dka0ZvbnRUeXBlJyAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdHZGtGdW5jdGlvbicgICAgICAgICAgPT4gJ2ludCcsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrR0NWYWx1ZXNNYXNrJyAgICAgID0+ ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0dyYWJTdGF0dXMn ICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtJ bWFnZVR5cGUnICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnR2RrSW5wdXRDb25kaXRpb24nICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ0dka0lucHV0U291cmNlJyAgICAgICA9PiAnaW50JywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtJbnB1dE1vZGUnICAgICAgICAgPT4gJ2ludCcs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrSW50ZXJwVHlwZScgICAgICAg ID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0pvaW5TdHls ZScgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH ZGtMaW5lU3R5bGUnICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnR2RrTW9kaWZpZXJUeXBlJyAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ0dka05hdGl2ZVdpbmRvdycgICAgICA9PiAnaW50JywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtOb3RpZnlUeXBlJyAgICAgICAgPT4gJ2lu dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrT3ZlcmxhcFR5cGUnICAg ICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka093bmVy Q2hhbmdlJyAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdHZGtQaXhidWZBbHBoYU1vZGUnICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnR2RrUHJvcGVydHlTdGF0ZScgICAgID0+ICdpbnQnLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ0dka1Byb3BNb2RlJyAgICAgICAgICA9PiAnaW50JywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtSZ2JEaXRoZXInICAgICAgICAgPT4g J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrU2Nyb2xsRGlyZWN0 aW9uJyAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1Nl dHRpbmdBY3Rpb24nICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdHZGtTdWJ3aW5kb3dNb2RlJyAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnR2RrVmlzaWJpbGl0eVN0YXRlJyAgID0+ICdpbnQnLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1Zpc3VhbFR5cGUnICAgICAgICA9PiAnaW50JywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtXaW5kb3dBdHRyaWJ1dGVzVHlw ZScgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1dpbmRv d0NsYXNzJyAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdHZGtXaW5kb3dFZGdlJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnR2RrV2luZG93SGludHMnICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ0dka1dpbmRvd1N0YXRlJyAgICAgICA9PiAnaW50JywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtXaW5kb3dUeXBlSGludCcgICAgPT4g J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrV01EZWNvcmF0aW9u JyAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1dN RnVuY3Rpb24nICAgICAgICA9PiAnaW50JywKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gbGlic2V4eSBlbnVtcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J1NleHlJY29uRW50cnlQb3NpdGlvbicgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnU2V4eVNwZWxsRXJyb3InICAgICAgICA9PiAnaW50JywKLQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3RrZXh0cmEgZW51bXMKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdHdGtJY29uTGlzdE1vZGUnICAgICAgICAgICAgPT4gJ2ludCcs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdFBsYW5lJyAgICAgICAg ICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bs b3RCYXJVbml0cycgICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdHdGtQbG90Q2FudmFzQWN0aW9uJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdENhbnZhc1NlbGVjdGlvbicgICAgID0+ ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RDYW52YXNQ b3MnICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdHdGtQbG90Q2FudmFzU2VsZWN0aW9uTW9kZScgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnR3RrUGxvdENhbnZhc1Bsb3RQb3MnICAgICAgID0+ICdpbnQnLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RQcm9qZWN0aW9uJyAgICAg ICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90 U2NhbGUnICAgICAgICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnR3RrUGxvdFN5bWJvbFR5cGUnICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RTeW1ib2xTdHlsZScgICAgICAgICA9PiAn aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90Qm9yZGVyU3R5 bGUnICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn R3RrUGxvdExpbmVTdHlsZScgICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ0d0a1Bsb3RDb25uZWN0b3InICAgICAgICAgICA9PiAnaW50JywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90RXJyb3InICAgICAgICAgICAg ICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdE9y aWVudGF0aW9uJyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ0d0a1Bsb3RBeGlzUG9zJyAgICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90TGFiZWxTdHlsZScgICAgICAgICAgPT4gJ2lu dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdFNjYWxlJyAgICAg ICAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0 a1Bsb3RQYWdlU2l6ZScgICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdHdGtQbG90UGFnZU9yaWVudGF0aW9uJyAgICAgPT4gJ2ludCcsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdFVuaXRzJyAgICAgICAgICAgICAg ID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1NoZWV0QXR0 clR5cGUnICAgICAgICAgICA9PiAnaW50JywKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy9QYW5nbyBlbnVtcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Bh bmdvQWxpZ25tZW50JyAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdQYW5nb0RpcmVjdGlvbicgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnUGFuZ29FbGxpcHNpemVNb2RlJyAgID0+ICdpbnQnLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BhbmdvRm9udE1hc2snICAgICAgICA9PiAnaW50 JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQYW5nb1JlY3RhbmdsZScgICAg ICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGFuZ29TdHJl dGNoJyAgICAgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J1BhbmdvU3R5bGUnICAgICAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdQYW5nb1RhYkFsaWduJyAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnUGFuZ29WYXJpYW50JyAgICAgICAgID0+ICdpbnQnLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BhbmdvV2VpZ2h0JyAgICAgICAgICA9PiAn aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQYW5nb1dyYXBNb2RlJyAg ICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vQXRrIGVudW1zCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnQXRrUm9sZScgICAgICAgICAgICAgID0+ICdpbnQnLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F0a1JlbGF0aW9uVHlwZScgICAgICA9PiAnaW50 JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdGtTdGF0ZVR5cGUnICAgICAg ICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXRrVGV4dEF0 dHJpYnV0ZScgICAgID0+ICdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvL3NvbWUgbW9yZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J0dEZXN0cm95Tm90aWZ5JyAgICAgICA9PiAnaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdHRXJyb3InICAgICAgICAgICAgICAgPT4gJ2ludCcsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnR1NMaXN0JyAgICAgICAgICAgICAgID0+ICdpbnQnLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dWYWx1ZScgICAgICAgICAgICAgICA9PiAn aW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2dwb2ludGVyJyAgICAgICAgICAgICA9PiAnaW50JywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dib29sZWFuJyAgICAgICA9PiAnYm9vbCcsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3VibGUnICAg ICAgICAgPT4gJ2RvdWJsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2Rv dWJsZScgICAgICAgID0+ICdkb3VibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2Zsb2F0JyAgICAgICAgICA9PiAnZG91YmxlJywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdnZmxvYXQnICAgICAgICAgPT4gJ2RvdWJsZScsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtE cmF3YWJsZSonICAgPT4gJ0dka1dpbmRvdycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnR2RrQXRvbScgICAgICAgID0+ICdzdHJpbmcnKTsKLSAgICAgICAgCi0gICAgICAgIHJl dHVybiBpc3NldCgkdHlwZV9tYXBbJGluX3R5cGVdKTsKLSAgICB9Ly9mdW5jdGlvbiBpc19waHBf dHlwZSgkaW5fdHlwZSkKLX0KLQotLyogc2ltcGxlIGZhdGFsX2Vycm9yIGZ1bmN0aW9uIAotICAg ICAgICAtIHVzZWZ1bCBpbiA0LjIuMC1kZXYgYW5kIGxhdGVyIGFzIGl0IHdpbGwgYWN0dWFsbHkg aGFsdCBleGVjdHV0aW9uIG9mIG1ha2UKLSAgICAtIG5lZWRzIHRvIG91dHB1dCB0byBzdGRlcnIg YXMgdGhlIGRlZmF1bHQgcHJpbnQgd291bGQgZW5kIHVwIGluc2lkZSB0aGUgY29kZQotICAgIC0g VE9ETyAtIHRoZSBtYWtlIGZpbGUgb3V0cHV0cyBhbiBlbXB0eSBmaWxlIHRvIGdlbl9YWFguYywg dGhlcmUgbXVzdCBiZSBhCi0gICAgICBiZXR0ZXIgd2F5ICB0byBkZWxldGUgaXQuLi4gLSBieSB1 c2luZyBvdXRwdXQgYnVmZmVyaW5nIG9yIHNvbXRoaW5nPwotKi8gIAotZnVuY3Rpb24gZmF0YWxf ZXJyb3IoJG1lc3NhZ2UpIHsKLSAgICAkZmggPSBmb3BlbigicGhwOi8vc3RkZXJyIiwgInciKTsK LSAgICAgICAgZndyaXRlKCRmaCwiXG5cblxuXG4KLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICAKLSAgICBU aGVyZSB3YXMgYSBTZXJpb3VzIGVycm9yIHdpdGggdGhlIFBIUC1HVEsgZ2VuZXJhdG9yIHNjcmlw dAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ICAgIAotICAgICRtZXNzYWdlCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAg Ci0gICAgWW91IHNob3VsZCB0eXBlIHRoaXMgdG8gZW5zdXJlIHRoYXQgdGhlIGMgc291cmNlIGlz IGNvcnJlY3RseQotICAgIGdlbmVyYXRlZCBiZWZvcmUgYXR0ZW1wdGluZyB0byBtYWtlIGFnYWlu LgotICAgIAotICAgICNmaW5kIC4gfCBncmVwIGRlZnMgfCB4YXJncyB0b3VjaAotCi0gICAgXG5c blxuXG4iKTsKLSAgICBmY2xvc2UoJGZoKTsKLSAgICBleGl0KDEpOwotfQotCi0KLSRvbGRfZXJy b3JfcmVwb3J0aW5nID0gZXJyb3JfcmVwb3J0aW5nKEVfQUxMKTsKLQotaWYgKCFpc3NldCgkX1NF UlZFUlsnYXJndiddKSkgCi0gICAgZmF0YWxfZXJyb3IoIgotICAgICAgICBDb3VsZCBub3QgcmVh ZCBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGZvciBnZW5lcmF0b3IucGhwIAotICAgICAgICBQbGVh c2UgZW5zdXJlIHRoYXQgdGhpcyBvcHRpb24gaXMgc2V0IGluIHlvdXIgcGhwLmluaQotICAgICAg ICByZWdpc3Rlcl9hcmdjX2FyZ3YgPSBPbiAgICAgCi0gICAgIik7Ci0KLQotaWYgKGlzc2V0KCRf U0VSVkVSWydhcmdjJ10pICYmCi0gICAgaXNzZXQoJF9TRVJWRVJbJ2FyZ3YnXSkpIHsKLSAgICAk YXJnYyA9ICRfU0VSVkVSWydhcmdjJ107Ci0gICAgJGFyZ3YgPSAkX1NFUlZFUlsnYXJndiddOwot fQotCi0gCi0kcmVzdWx0ID0gQ29uc29sZV9HZXRvcHQ6OmdldG9wdCgkYXJndiwgJ2w6bzpwOmM6 cjpmOnY6Jyk7Ci1pZiAoISRyZXN1bHQgfHwgY291bnQoJHJlc3VsdFsxXSkgPCAyKQotICAgIGRp ZSgidXNhZ2U6IHBocCBnZW5lcmF0b3IucGhwIFstbCBsb2dmaWxlXSBbLW8gb3ZlcnJpZGVzZmls ZV0gWy1wIHByZWZpeF0gWy1jIGZ1bmN0aW9uY2xhc3MgXSBbLXIgdHlwZXNmaWxlXSBbLWYgc2F2 ZWZpbGVdIFstdiBndGtsaWJ2ZXJzaW9uXSBkZWZzZmlsZVxuIik7Ci0KLWxpc3QoJG9wdHMsICRh cmd2KSA9ICRyZXN1bHQ7Ci0KLSRwcmVmaXggPSAnR3RrJzsKLSRmdW5jdGlvbl9jbGFzcyA9IG51 bGw7Ci0kb3ZlcnJpZGVzID0gbnVsbDsKLSRyZWdpc3Rlcl9kZWZzID0gYXJyYXkoKTsKLSRzYXZl ZmlsZSA9ICd0bXAuYyc7Ci0kbG9nZmlsZSA9ICdwaHA6Ly9zdGRlcnInOwotJGd0a3ZlcnNpb24g PSAnMi42JzsKLQotZm9yZWFjaCAoJG9wdHMgYXMgJG9wdCkgewotICAgIGxpc3QoJG9wdF9zcGVj LCAkb3B0X2FyZykgPSAkb3B0OwotICAgIGlmICgkb3B0X3NwZWMgPT0gJ28nKSB7Ci0gICAgICAg ICRvdmVycmlkZXMgPSAkb3B0X2FyZzsKLSAgICB9IGVsc2UgaWYgKCRvcHRfc3BlYyA9PSAncCcp IHsKLSAgICAgICAgJHByZWZpeCA9ICRvcHRfYXJnOwotICAgIH0gZWxzZSBpZiAoJG9wdF9zcGVj ID09ICdjJykgewotICAgICAgICAkZnVuY3Rpb25fY2xhc3MgPSAkb3B0X2FyZzsKLSAgICB9IGVs c2UgaWYgKCRvcHRfc3BlYyA9PSAncicpIHsKLSAgICAgICAgJHJlZ2lzdGVyX2RlZnNbXSA9ICRv cHRfYXJnOwotICAgIH0gZWxzZSBpZiAoJG9wdF9zcGVjID09ICdmJykgewotICAgICAgICAkc2F2 ZWZpbGUgPSAkb3B0X2FyZzsKLSAgICB9IGVsc2UgaWYgKCRvcHRfc3BlYyA9PSAnbCcpIHsKLSAg ICAgICAgJGxvZ2ZpbGUgPSAkb3B0X2FyZzsKLSAgICB9IGVsc2UgaWYgKCRvcHRfc3BlYyA9PSAn dicpIHsKLSAgICAgICAgJGd0a3ZlcnNpb24gPSAkb3B0X2FyZzsKLSAgICB9Ci19Ci0KLWlmIChm aWxlX2V4aXN0cyhkaXJuYW1lKCRhcmd2WzFdKSAuICcvYXJnX3R5cGVzLnBocCcpKSB7Ci0gICAg aW5jbHVkZShkaXJuYW1lKCRhcmd2WzFdKSAuICcvYXJnX3R5cGVzLnBocCcpOwotfQotCi0kb3Zl cnJpZGVzID0gbmV3IE92ZXJyaWRlcygkb3ZlcnJpZGVzLCAkZ3RrdmVyc2lvbik7Ci0kcGFyc2Vy ID0gbmV3IERlZnNfUGFyc2VyKCRhcmd2WzFdLCAkZ3RrdmVyc2lvbik7Ci0kZ2VuZXJhdG9yID0g bmV3IEdlbmVyYXRvcigkcGFyc2VyLCAkb3ZlcnJpZGVzLCAkcHJlZml4LCAkZnVuY3Rpb25fY2xh c3MpOwotJGdlbmVyYXRvci0+c2V0X2xvZ2ZpbGUoJGxvZ2ZpbGUpOwotZm9yZWFjaCAoJHJlZ2lz dGVyX2RlZnMgYXMgJGRlZnMpIHsKLSAgICAkdHlwZV9wYXJzZXIgPSBuZXcgRGVmc19QYXJzZXIo JGRlZnMsICRndGt2ZXJzaW9uKTsKLSAgICAkdHlwZV9wYXJzZXItPnN0YXJ0X3BhcnNpbmcoKTsK LSAgICAkZ2VuZXJhdG9yLT5yZWdpc3Rlcl90eXBlcygkdHlwZV9wYXJzZXIpOwotfQotJHBhcnNl ci0+c3RhcnRfcGFyc2luZygpOwotJGdlbmVyYXRvci0+cmVnaXN0ZXJfdHlwZXMoKTsKLSRnZW5l cmF0b3ItPndyaXRlX3NvdXJjZSgkc2F2ZWZpbGUpOwotCi1lcnJvcl9yZXBvcnRpbmcoJG9sZF9l cnJvcl9yZXBvcnRpbmcpOwotCi0vKiB2aW06IHNldCBldCBzdHM9NDogKi8KLT8+CmRpZmYgLS1n aXQgYS9nZW5lcmF0b3IvZ3RrZ2VuZXJhdG9yLnBocCBiL2dlbmVyYXRvci9ndGtnZW5lcmF0b3Iu cGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNDFmY2UKLS0tIC9kZXYv bnVsbAorKysgYi9nZW5lcmF0b3IvZ3RrZ2VuZXJhdG9yLnBocApAQCAtMCwwICsxLDE1ODEgQEAK Kzw/cGhwCisvKgorICogUEhQLUdUSyAtIFRoZSBQSFAgbGFuZ3VhZ2UgYmluZGluZ3MgZm9yIEdU SysKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwOCBBbmRyZWkgWm1pZXZza2kgPGFuZHJl aUBwaHAubmV0PgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKiAK KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICogCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworLyogJElkJCAqLworCisvKgorICogU2ln bmlmaWNhbnQgcG9ydGlvbnMgb2YgdGhpcyBnZW5lcmF0b3IgYXJlIGJhc2VkIG9uIHRoZSBweWd0 ayBjb2RlIGdlbmVyYXRvcgorICogZGV2ZWxvcGVkIGJ5IEphbWVzIEhlbnN0cmlkZ2UgPGphbWVz aEBkYWEuY29tLmF1Pi4KKyAqCisgKi8KKworc2V0X3RpbWVfbGltaXQoMzAwKTsKKworLy8gb3Zl cnJpZGUgdGhlIGRlZmF1bHQgUEhQIDhNYiBhcyB0aGlzIHNjcmlwdCB0ZW5kcyB0byB1c2UgYSBs b3QgbW9yZQorLy8gYW5kIGhvcGVmdWxseSByZWR1Y2UgdGhlIHN1cHBvcnQgcXVlc3Rpb25zIGEg Yml0Li4KKy8vIE1ha2UgaXQgLTEgaW5zdGVhZCA6KQoraW5pX3NldCgnbWVtb3J5X2xpbWl0Jywn LTEnKTsKKworaWYgKHN0cnN0cihQSFBfT1MsICdXSU4nKSkgeworCWRlZmluZSgnV0lOX09TJywg dHJ1ZSk7Cit9IGVsc2UgeworCWRlZmluZSgnV0lOX09TJywgZmFsc2UpOworfQorCityZXF1aXJl IGRpcm5hbWUoX19GSUxFX18pIC4gIi9HZXRvcHQucGhwIjsKK3JlcXVpcmUgZGlybmFtZShfX0ZJ TEVfXykgLiAiL292ZXJyaWRlLnBocCI7CityZXF1aXJlIGRpcm5hbWUoX19GSUxFX18pIC4gIi9h cmdfdHlwZXMucGhwIjsKK3JlcXVpcmUgZGlybmFtZShfX0ZJTEVfXykgLiAiL3NjaGVtZS5waHAi OworcmVxdWlyZSBkaXJuYW1lKF9fRklMRV9fKSAuICIvdGVtcGxhdGVzLnBocCI7CityZXF1aXJl IGRpcm5hbWUoX19GSUxFX18pIC4gIi9hcnJheV9wcmludGYucGhwIjsKK3JlcXVpcmUgZGlybmFt ZShfX0ZJTEVfXykgLiAiL2xpbmVvdXRwdXQucGhwIjsKKworY2xhc3MgZ3RrR2VuZXJhdG9yIHsK KyAgICB2YXIgJHBhcnNlciAgICAgICAgICAgICA9IG51bGw7CisgICAgdmFyICRvdmVycmlkZXMg ICAgICAgICAgPSBudWxsOworICAgIHZhciAkcHJlZml4ICAgICAgICAgICAgID0gbnVsbDsKKyAg ICB2YXIgJGxwcmVmaXggICAgICAgICAgICA9IG51bGw7CisgICAgdmFyICRmdW5jdGlvbl9jbGFz cyAgICAgPSBudWxsOworICAgIHZhciAkbG9nZmlsZSAgICAgICAgICAgID0gbnVsbDsKKyAgICB2 YXIgJGRpdmVyc2lvbnMgICAgICAgICA9IG51bGw7CisKKyAgICB2YXIgJGd0eXBlX2NvbnN0YW50 cyAgICA9ICcnOworCisgICAgdmFyICR0ZW1wbGF0ZV9tYXAgICAgICAgPSBhcnJheSgnb2JqZWN0 JyA9PiBhcnJheSgnY29uc3RydWN0b3InID0+IFRlbXBsYXRlczo6Y29uc3RydWN0b3JfYm9keSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdz dGF0aWNfY29uc3RydWN0b3InID0+IFRlbXBsYXRlczo6c3RhdGljX2NvbnN0cnVjdG9yX2JvZHks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn bWV0aG9kJyA9PiBUZW1wbGF0ZXM6Om1ldGhvZF9ib2R5LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3AnID0+IFRlbXBsYXRlczo6cHJv cF9hY2Nlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JveGVkJyAg PT4gYXJyYXkoJ2NvbnN0cnVjdG9yJyA9PiBUZW1wbGF0ZXM6OmJveGVkX2NvbnN0cnVjdG9yX2Jv ZHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnc3RhdGljX2NvbnN0cnVjdG9yJyA9PiBUZW1wbGF0ZXM6OmJveGVkX3N0YXRpY19jb25zdHJ1 Y3Rvcl9ib2R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ21ldGhvZCcgPT4gVGVtcGxhdGVzOjpib3hlZF9tZXRob2RfYm9keSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wJyA9 PiBUZW1wbGF0ZXM6OmJveGVkX3Byb3BfYWNjZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdpbnRlcmZhY2UnID0+IGFycmF5KCdtZXRob2QnID0+IFRlbXBsYXRlczo6 bWV0aG9kX2JvZHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50 ZXInID0+IGFycmF5KCdtZXRob2QnID0+IFRlbXBsYXRlczo6cG9pbnRlcl9tZXRob2RfYm9keSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgdmFyICRoYW5kbGVy cyAgICAgICAgICAgPSBhcnJheSgncmVhZF9wcm9wZXJ0eScsICd3cml0ZV9wcm9wZXJ0eScsICdn ZXRfcHJvcGVydGllcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVh ZF9kaW1lbnNpb24nLCAnd3JpdGVfZGltZW5zaW9uJywgJ2hhc19kaW1lbnNpb24nLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vuc2V0X2RpbWVuc2lvbicsICdjb3VudF9l bGVtZW50cycpOworICAgIHZhciAkY292ZXIgICAgICAgICAgICAgID0gYXJyYXkoKTsKKworICAg IGZ1bmN0aW9uIGd0a0dlbmVyYXRvcigmJHBhcnNlciwgJiRvdmVycmlkZXMsICRwcmVmaXgsICRm dW5jdGlvbl9jbGFzcykKKyAgICB7CisgICAgICAgICR0aGlzLT5wYXJzZXIgICAgPSAmJHBhcnNl cjsKKyAgICAgICAgJHRoaXMtPm92ZXJyaWRlcyA9ICYkb3ZlcnJpZGVzOworICAgICAgICAkdGhp cy0+cHJlZml4ICAgID0gdWNmaXJzdCgkcHJlZml4KTsKKyAgICAgICAgJHRoaXMtPmxwcmVmaXgg ICA9IHN0cnRvbG93ZXIoJHByZWZpeCk7CisgICAgICAgICR0aGlzLT5mdW5jdGlvbl9jbGFzcyA9 ICRmdW5jdGlvbl9jbGFzczsKKworICAgICAgICAkdGhpcy0+Y292ZXJbImZ1bmNzIl0gPSBuZXcg Q292ZXJhZ2UoIkZ1bmN0aW9ucyIpOworICAgICAgICAkdGhpcy0+Y292ZXJbIm1ldGhvZHMiXSA9 IG5ldyBDb3ZlcmFnZSgiTWV0aG9kcyIpOworICAgICAgICAkdGhpcy0+Y292ZXJbImN0b3JzIl0g PSBuZXcgQ292ZXJhZ2UoIkNvbnN0cnVjdG9ycyIpOworICAgICAgICAkdGhpcy0+Y292ZXJbInBy b3BzIl0gPSBuZXcgQ292ZXJhZ2UoIlByb3BlcnR5IGFjY2Vzc29ycyIpOworICAgIH0KKworICAg IGZ1bmN0aW9uIHNldF9sb2dmaWxlKCRsb2dmaWxlKSB7CisgICAgICAgICR0aGlzLT5sb2dmaWxl ID0gZm9wZW4oJGxvZ2ZpbGUsICd3Jyk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGxvZ19w cmludCgpCisgICAgeworICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKKyAgICAgICAg aWYgKGNvdW50KCRhcmdzKSA9PSAwKSByZXR1cm47CisKKyAgICAgICAgJGZvcm1hdCA9IGFycmF5 X3NoaWZ0KCRhcmdzKTsKKworICAgICAgICAkb3V0cHV0ID0gdnNwcmludGYoJGZvcm1hdCwgJGFy Z3MpOworCisgICAgICAgIGlmICghV0lOX09TKSB7CisgICAgICAgICAgICBlY2hvICRvdXRwdXQ7 CisgICAgICAgIH0KKworICAgICAgICBmd3JpdGUoJHRoaXMtPmxvZ2ZpbGUsICRvdXRwdXQpOwor ICAgIH0KKworICAgIGZ1bmN0aW9uIGxvZygpCisgICAgeworICAgICAgICAkYXJncyA9IGZ1bmNf Z2V0X2FyZ3MoKTsKKyAgICAgICAgaWYgKGNvdW50KCRhcmdzKSA9PSAwKSByZXR1cm47CisKKyAg ICAgICAgJGZvcm1hdCA9IGFycmF5X3NoaWZ0KCRhcmdzKTsKKworICAgICAgICBmd3JpdGUoJHRo aXMtPmxvZ2ZpbGUsIHZzcHJpbnRmKCRmb3JtYXQsICRhcmdzKSk7CisgICAgfQorCisgICAgZnVu Y3Rpb24gZGl2ZXJ0KCkKKyAgICB7CisgICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwor ICAgICAgICBpZiAoY291bnQoJGFyZ3MpIDwgMikgcmV0dXJuOworCisgICAgICAgIGxpc3QgKCRk aXZlcnRfaWQsICRmb3JtYXQpID0gJGFyZ3M7CisKKyAgICAgICAgQCR0aGlzLT5kaXZlcnNpb25z WyRkaXZlcnRfaWRdIC49IHZzcHJpbnRmKCRmb3JtYXQsIGFycmF5X3NsaWNlKCRhcmdzLCAyKSk7 CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVnaXN0ZXJfdHlwZXMoJHBhcnNlciA9IG51bGwpCisg ICAgeworICAgICAgICBnbG9iYWwgICRtYXRjaGVyOworCisgICAgICAgIGlmICghJHBhcnNlcikK KyAgICAgICAgICAgICRwYXJzZXIgPSAkdGhpcy0+cGFyc2VyOworCisgICAgICAgIGZvcmVhY2gg KCRwYXJzZXItPm9iamVjdHMgYXMgJG9iamVjdCkgeworICAgICAgICAgICAgJG1hdGNoZXItPnJl Z2lzdGVyX29iamVjdCgkb2JqZWN0LT5jX25hbWUsICRvYmplY3QtPnR5cGVjb2RlKTsKKyAgICAg ICAgfQorCisgICAgICAgIGZvcmVhY2ggKCRwYXJzZXItPmludGVyZmFjZXMgYXMgJGludGVyZmFj ZSkgeworICAgICAgICAgICAgJG1hdGNoZXItPnJlZ2lzdGVyX29iamVjdCgkaW50ZXJmYWNlLT5j X25hbWUsICRpbnRlcmZhY2UtPnR5cGVjb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcmVh Y2ggKCRwYXJzZXItPmVudW1zIGFzICRlbnVtKSB7CisgICAgICAgICAgICBpZiAoJGVudW0tPmRl Zl90eXBlID09ICdmbGFncycpCisgICAgICAgICAgICAgICAgJG1hdGNoZXItPnJlZ2lzdGVyX2Zs YWcoJGVudW0tPmNfbmFtZSwgJGVudW0tPnR5cGVjb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAg ICAgICAgICAgICAgICAkbWF0Y2hlci0+cmVnaXN0ZXJfZW51bSgkZW51bS0+Y19uYW1lLCAkZW51 bS0+dHlwZWNvZGUpOworICAgICAgICB9CisKKyAgICAgICAgZm9yZWFjaCAoJHBhcnNlci0+Ym94 ZWQgYXMgJGJveGVkKSB7CisgICAgICAgICAgICAkbWF0Y2hlci0+cmVnaXN0ZXJfYm94ZWQoJGJv eGVkLT5jX25hbWUsICRib3hlZC0+dHlwZWNvZGUpOworICAgICAgICB9CisKKyAgICAgICAgZm9y ZWFjaCAoJHBhcnNlci0+cG9pbnRlcnMgYXMgJHBvaW50ZXIpIHsKKyAgICAgICAgICAgICRtYXRj aGVyLT5yZWdpc3Rlcl9wb2ludGVyKCRwb2ludGVyLT5jX25hbWUsICRwb2ludGVyLT50eXBlY29k ZSk7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIGZ1bmN0aW9uIHdyaXRlX292ZXJyaWRlKCRv dmVycmlkZSwgJGlkKQorICAgIHsKKyAgICAgICAgJGFyZ3MgPSBhcnJheV9zbGljZShmdW5jX2dl dF9hcmdzKCksIDEpOworICAgICAgICBsaXN0KCRsaW5lbm8sICRmaWxlX25hbWUpID0gJHRoaXMt Pm92ZXJyaWRlcy0+Z2V0X2xpbmVfaW5mbyhqb2luKCcuJywgJGFyZ3MpKTsgCisgICAgICAgICR0 aGlzLT5mcC0+c2V0X2xpbmUoJGxpbmVubywgJGZpbGVfbmFtZSk7CisgICAgICAgICR0aGlzLT5m cC0+d3JpdGUoJG92ZXJyaWRlKTsKKyAgICAgICAgJHRoaXMtPmZwLT5yZXNldF9saW5lKCk7Cisg ICAgICAgICR0aGlzLT5mcC0+d3JpdGUoIlxuXG4iKTsKKyAgICB9CisKKworICAgIGZ1bmN0aW9u IHdyaXRlX2NhbGxhYmxlKCRjYWxsYWJsZSwgJHRlbXBsYXRlLCAkaGFuZGxlX3JldHVybiA9IGZh bHNlLCAkaXNfbWV0aG9kID0gZmFsc2UsICRkaWN0ID0gYXJyYXkoKSkKKyAgICB7CisgICAgICAg IGdsb2JhbCAkbWF0Y2hlcjsKKworICAgICAgICBpZiAoJGNhbGxhYmxlLT52YXJhcmdzKSB7Cisg ICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCd2YXJhcmdzIG1ldGhvZHMgbm90IHN1cHBv cnRlZCcpOworICAgICAgICB9CisKKyAgICAgICAgJGluZm8gPSBuZXcgV3JhcHBlcl9JbmZvKCk7 CisgICAgICAgIC8qCisgICAgICAgICAqIFNsaWdodCBoYWNrIHRoYXQgcmVsaWVzIG9uIGJvdGgg cGFyYW1ldGVycyBiZWluZyBmYWxzZSB3aGVuIHVzZWQgdG8KKyAgICAgICAgICogd3JpdGUgb3V0 IGEgY29uc3RydWN0b3IuCisgICAgICAgICAqLworICAgICAgICBpZiAoISRoYW5kbGVfcmV0dXJu ICYmICEkaXNfbWV0aG9kKSB7CisgICAgICAgICAgICAkaW5mby0+ZXJyb3JfYWN0aW9uID0gIlBI UEdfVEhST1dfQ09OU1RSVUNUX0VYQ0VQVElPTigkZGljdFtjbGFzc10pIjsKKyAgICAgICAgfQor CisgICAgICAgIC8qIG5lZWQgdGhlIGV4dHJhIGNvbW1hIGZvciBtZXRob2RzICovCisgICAgICAg IGlmICgkaXNfbWV0aG9kKSB7CisgICAgICAgICAgICAkaW5mby0+YXJnX2xpc3RbXSA9ICcnOwor ICAgICAgICB9CisKKyAgICAgICAgZm9yZWFjaCAoJGNhbGxhYmxlLT5wYXJhbXMgYXMgJHBhcmFt c19hcnJheSkgeworICAgICAgICAgICAgbGlzdCgkcGFyYW1fdHlwZSwgJHBhcmFtX25hbWUsICRw YXJhbV9kZWZhdWx0LCAkcGFyYW1fbnVsbCkgPSAkcGFyYW1zX2FycmF5OworCisgICAgICAgICAg ICBpZiAoaXNzZXQoJHBhcmFtX2RlZmF1bHQpICYmIHN0cnBvcygkaW5mby0+c3BlY2lmaWVycywg J3wnKSA9PT0gZmFsc2UpIHsKKyAgICAgICAgICAgICAgICAkaW5mby0+YWRkX3BhcnNlX2xpc3Qo J3wnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgJGhhbmRsZXIgPSAkbWF0Y2hlci0+ Z2V0KCRwYXJhbV90eXBlKTsKKyAgICAgICAgICAgICRoYW5kbGVyLT53cml0ZV9wYXJhbSgkcGFy YW1fdHlwZSwgJHBhcmFtX25hbWUsICRwYXJhbV9kZWZhdWx0LCAkcGFyYW1fbnVsbCwgJGluZm8p OworICAgICAgICB9CisKKyAgICAgICAgJGRpY3RbJ3JldHVybiddID0gJyc7CisgICAgICAgIGlm ICgkaGFuZGxlX3JldHVybikgeworICAgICAgICAgICAgaWYgKCRjYWxsYWJsZS0+cmV0dXJuX3R5 cGUgIT09IG51bGwgJiYKKyAgICAgICAgICAgICAgICAkY2FsbGFibGUtPnJldHVybl90eXBlICE9 ICdub25lJykgeworICAgICAgICAgICAgICAgICRkaWN0WydyZXR1cm4nXSA9ICdwaHBfcmV0dmFs ID0gJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRoYW5kbGVyID0gJG1hdGNoZXItPmdl dCgkY2FsbGFibGUtPnJldHVybl90eXBlKTsKKyAgICAgICAgICAgICRoYW5kbGVyLT53cml0ZV9y ZXR1cm4oJGNhbGxhYmxlLT5yZXR1cm5fdHlwZSwgJGNhbGxhYmxlLT5jYWxsZXJfb3duc19yZXR1 cm4sICRpbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc3NldCgkY2FsbGFibGUtPmRl cHJlY2F0ZWQpKSB7CisgICAgICAgICAgICAkaW5mby0+cHJlX2NvZGVbXSA9IHNwcmludGYoVGVt cGxhdGVzOjpkZXByZWNhdGlvbl9tc2csICRjYWxsYWJsZS0+ZGVwcmVjYXRlZCA/ICciJy4kY2Fs bGFibGUtPmRlcHJlY2F0ZWQuJyInIDogJ05VTEwnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm ICghaXNzZXQoJGRpY3RbJ25hbWUnXSkpIHsKKyAgICAgICAgICAgICRkaWN0WyduYW1lJ10gPSAk Y2FsbGFibGUtPm5hbWU7CisgICAgICAgIH0KKyAgICAgICAgJGRpY3RbJ2NuYW1lJ10gPSAkY2Fs bGFibGUtPmNfbmFtZTsKKyAgICAgICAgJGRpY3RbJ3Zhcl9saXN0J10gPSAkaW5mby0+Z2V0X3Zh cl9saXN0KCk7CisgICAgICAgICRkaWN0WydzcGVjcyddID0gJGluZm8tPnNwZWNpZmllcnM7Cisg ICAgICAgICRkaWN0WydwYXJzZV9saXN0J10gPSAkaW5mby0+Z2V0X3BhcnNlX2xpc3QoKTsKKyAg ICAgICAgJGRpY3RbJ2FyZ19saXN0J10gPSAkaW5mby0+Z2V0X2FyZ19saXN0KCk7CisgICAgICAg ICRkaWN0WydwcmVfY29kZSddID0gJGluZm8tPmdldF9wcmVfY29kZSgpOworICAgICAgICAkZGlj dFsncG9zdF9jb2RlJ10gPSAkaW5mby0+Z2V0X3Bvc3RfY29kZSgpOworCisgICAgICAgIGlmICgh ZW1wdHkoJGRpY3RbJ2N0b3Jfd2l0aF9wcm9wcyddKSkgeworICAgICAgICAgICAgJGRpY3RbJ25f cGFyYW1zJ10gPSBjb3VudCgoYXJyYXkpJGNhbGxhYmxlLT5wYXJhbXMpOworICAgICAgICAgICAg JGRpY3RbJ25fYXJncyddID0gJGRpY3RbJ25fcGFyYW1zJ10gKyAxOworICAgICAgICAgICAgJHBy b3BfbmFtZXMgPSAnJzsKKyAgICAgICAgICAgIGZvcmVhY2ggKCRjYWxsYWJsZS0+cHJvcGVydGll cyBhcyAkcHJvcCkgeworICAgICAgICAgICAgICAgICRwcm9wX25hbWVzIC49ICciJyAuICRwcm9w WzBdIC4gJyIsICc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkZGljdFsncHJvcHMnXSA9 ICRwcm9wX25hbWVzOworICAgICAgICAgICAgJG4gPSAwOworICAgICAgICAgICAgZm9yICgkaSA9 IDA7ICRpIDwgY291bnQoJGluZm8tPnBhcnNlX2xpc3QpOyAkaSsrKSB7CisgICAgICAgICAgICAg ICAgaWYgKCRpbmZvLT5wYXJzZV9saXN0WyRpXSAmJiAkaW5mby0+cGFyc2VfbGlzdFskaV17MH0g PT0gJyYnKSB7CisgICAgICAgICAgICAgICAgICAgICRpbmZvLT5wYXJzZV9saXN0WyRpXSA9ICIm cGhwX2FyZ3NbJG5dIjsKKyAgICAgICAgICAgICAgICAgICAgJG4rKzsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkZGljdFsnc3BlY3MnXSA9IHByZWdfcmVw bGFjZSgnLChbXnwhL10pLCcsICdeJDEnLCAkZGljdFsnc3BlY3MnXSk7CisgICAgICAgICAgICAk ZGljdFsncGFyc2VfbGlzdCddID0gJGluZm8tPmdldF9wYXJzZV9saXN0KCk7CisgICAgICAgICAg ICAkZGljdFsncHJlX2NvZGUnXSA9ICcnOworICAgICAgICAgICAgJGRpY3RbJ3Bvc3RfY29kZSdd ID0gJyc7CisKKyAgICAgICAgICAgIC8vIFJlcGxhY2UgYW55IHJlbW92ZWQgZGVwcmVjYXRpb24g bWVzc2FnZXMKKyAgICAgICAgICAgIGlmIChpc3NldCgkY2FsbGFibGUtPmRlcHJlY2F0ZWQpKSB7 CisgICAgICAgICAgICAgICAgJGRpY3RbJ3ByZV9jb2RlJ10gPSBzcHJpbnRmKFRlbXBsYXRlczo6 ZGVwcmVjYXRpb25fbXNnLCAkY2FsbGFibGUtPmRlcHJlY2F0ZWQgPyAnIicuJGNhbGxhYmxlLT5k ZXByZWNhdGVkLiciJyA6ICdOVUxMJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg ICAgICByZXR1cm4gYXByaW50ZigkdGVtcGxhdGUsICRkaWN0KTsKKyAgICB9CisKKworICAgIGZ1 bmN0aW9uIHdyaXRlX21ldGhvZHMoJG9iamVjdCkKKyAgICB7CisgICAgICAgICR0aGlzLT5sb2df cHJpbnQoIiAgJS0yMHMgIiwgIm1ldGhvZHMiKTsKKworICAgICAgICAkbnVtX3dyaXR0ZW4gPSAk bnVtX3NraXBwZWQgPSAwOworICAgICAgICAkbWV0aG9kX2VudHJpZXMgPSBhcnJheSgpOworCisg ICAgICAgICRtZXRob2RzID0gJHRoaXMtPnBhcnNlci0+ZmluZF9tZXRob2RzKCRvYmplY3QpOwor CisgICAgICAgICRkaWN0WydjbGFzcyddID0gJG9iamVjdC0+Y19uYW1lOworICAgICAgICAkZGlj dFsnc2NvcGUnXSA9ICRvYmplY3QtPmNfbmFtZTsKKyAgICAgICAgJGRpY3RbJ3R5cGVjb2RlJ10g PSAkb2JqZWN0LT50eXBlY29kZTsKKworICAgICAgICBzd2l0Y2ggKCRvYmplY3QtPmRlZl90eXBl KSB7CisgICAgICAgICAgICBjYXNlICdvYmplY3QnOgorICAgICAgICAgICAgY2FzZSAnaW50ZXJm YWNlJzoKKyAgICAgICAgICAgICAgICAkZGljdFsnY2FzdCddID0gcHJlZ19yZXBsYWNlKCchX1RZ UEVfIScsICdfJywgJG9iamVjdC0+dHlwZWNvZGUsIDEpOworICAgICAgICAgICAgICAgIGJyZWFr OworCisgICAgICAgICAgICBjYXNlICdib3hlZCc6CisgICAgICAgICAgICBjYXNlICdwb2ludGVy JzoKKyAgICAgICAgICAgICAgICAkZGljdFsnY2FzdCddID0gJG9iamVjdC0+Y19uYW1lIC4gJyAq JzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg ICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJ1bmhhbmRsZWQgZGVmaW5pdGlvbiB0eXBl Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAkb2JqZWN0 LT5tZXRob2RzID0gYXJyYXkoKTsKKyAgICAgICAgJG1ldGhvZGFyZ2luZm9zID0gJyc7CisKKyAg ICAgICAgZm9yZWFjaCAoJG1ldGhvZHMgYXMgJG1ldGhvZCkgeworICAgICAgICAgICAgJG1ldGhv ZF9uYW1lID0gJG1ldGhvZC0+Y19uYW1lOworICAgICAgICAgICAgCisgICAgICAgICAgICAvKiBz a2lwIGlnbm9yZWQgbWV0aG9kcyAqLworICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMt PmlzX2lnbm9yZWQoJG1ldGhvZF9uYW1lKSkgY29udGludWU7CisKKyAgICAgICAgICAgIHRyeSB7 CisgICAgICAgICAgICAgICAgbGlzdCgkYXJnaW5mbywgJHJlZmxlY3Rpb25fZnVuYykgPSAkdGhp cy0+Z2VuUmVmbGVjdGlvbkFyZ0luZm8oJG1ldGhvZCwgJG9iamVjdCk7CisgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgICAgaWYgKCgkb3ZlcnJpZGVuID0gJHRoaXMtPm92ZXJyaWRlcy0+ aXNfb3ZlcnJpZGVuKCRtZXRob2RfbmFtZSkpKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3Qo JG1ldGhvZF9uYW1lLCAkbWV0aG9kX292ZXJyaWRlLCAkZmxhZ3MpID0gJHRoaXMtPm92ZXJyaWRl cy0+Z2V0X292ZXJyaWRlKCRtZXRob2RfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgh aXNzZXQoJG1ldGhvZF9uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2RfbmFt ZSA9ICRtZXRob2QtPm5hbWU7CisgICAgICAgICAgICAgICAgICAgICRtZXRob2Rfb3ZlcnJpZGUg PSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQX01FVEhPRCkuKiQhbScsICJzdGF0aWMgJDEoJG9iamVj dC0+aW5fbW9kdWxlJG9iamVjdC0+bmFtZSwgJG1ldGhvZF9uYW1lKSIsICRtZXRob2Rfb3ZlcnJp ZGUpOworICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJG1ldGhvZF9v dmVycmlkZSwgJG1ldGhvZC0+Y19uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgJG1ldGhvZF9l bnRyaWVzWyRtZXRob2RfbmFtZV0gPSBhcnJheSgkb2JqZWN0LT5pbl9tb2R1bGUgLiAkb2JqZWN0 LT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICRtZXRob2RfbmFtZSwgJHJlZmxlY3Rpb25fZnVuYywgJGZsYWdzID8gICRmbGFn cyA6ICgkbWV0aG9kLT5zdGF0aWMgPyAnWkVORF9BQ0NfUFVCTElDfFpFTkRfQUNDX1NUQVRJQycg OiAnWkVORF9BQ0NfUFVCTElDJykpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5pc19kZXByZWNhdGVkKCRtZXRob2Qt PmNfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2QtPmRlcHJlY2F0ZWQg PSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfZGVwcmVjYXRlZCgkbWV0aG9kLT5jX25hbWUpOworICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgkbWV0aG9kLT5zdGF0 aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRjb2RlID0gJHRoaXMtPndyaXRlX2NhbGxh YmxlKCRtZXRob2QsIFRlbXBsYXRlczo6ZnVuY3Rpb25fYm9keSwgdHJ1ZSwgZmFsc2UsICRkaWN0 KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRmbGFncyA9ICdaRU5EX0FDQ19QVUJMSUN8WkVO RF9BQ0NfU1RBVElDJzsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICR0ZW1wbGF0ZSA9ICR0aGlzLT50ZW1wbGF0ZV9tYXBbJG9iamVjdC0+ZGVm X3R5cGVdWydtZXRob2QnXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRjb2RlID0gJHRoaXMt PndyaXRlX2NhbGxhYmxlKCRtZXRob2QsICR0ZW1wbGF0ZSwgdHJ1ZSwgdHJ1ZSwgJGRpY3QpOwor ICAgICAgICAgICAgICAgICAgICAgICAgJGZsYWdzID0gJ1pFTkRfQUNDX1BVQkxJQyc7CisgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgk Y29kZSk7CisgICAgICAgICAgICAgICAgICAgICRtZXRob2RfZW50cmllc1skbWV0aG9kLT5uYW1l XSA9IGFycmF5KCRvYmplY3QtPmluX21vZHVsZSAuICRvYmplY3QtPm5hbWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2Qt Pm5hbWUsICRyZWZsZWN0aW9uX2Z1bmMsICRmbGFncyk7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlcyAg JS0xMXMgJXM6OiVzXG4iLCAkb3ZlcnJpZGVuID8gIiUlIjoiICAiLCAibWV0aG9kIiwgJG9iamVj dC0+Y19uYW1lLCAkbWV0aG9kLT5uYW1lKTsKKyAgICAgICAgICAgICAgICAkbnVtX3dyaXR0ZW4r KzsKKyAgICAgICAgICAgICAgICAkdGhpcy0+Y292ZXJbIm1ldGhvZHMiXS0+d3JpdHRlbigpOwor ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkYXJnaW5mbyA9PT0gbnVsbCkg eworICAgICAgICAgICAgICAgICAgICAkb2JqZWN0LT5tZXRob2RzWyRtZXRob2QtPm5hbWVdID0g MTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkbWV0aG9k YXJnaW5mb3MgLj0gJGFyZ2luZm87CisgICAgICAgICAgICAgICAgICAgICRvYmplY3QtPm1ldGhv ZHNbJG1ldGhvZC0+bmFtZV0gPSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g Y2F0Y2ggKEV4Y2VwdGlvbiAkZSkgeworICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoIm5v dGdlbiIsICIgICUtMTFzICVzOjolczogJXNcbiIsICJtZXRob2QiLCAkb2JqZWN0LT5jX25hbWUs ICRtZXRob2QtPm5hbWUsICRlLT5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgICAgICRudW1f c2tpcHBlZCsrOworICAgICAgICAgICAgICAgICR0aGlzLT5jb3ZlclsibWV0aG9kcyJdLT5za2lw cGVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoJHRoaXMtPm92 ZXJyaWRlcy0+aGF2ZV9leHRyYV9tZXRob2RzKCRvYmplY3QtPmNfbmFtZSkpIHsKKyAgICAgICAg ICAgIGZvcmVhY2ggKCR0aGlzLT5vdmVycmlkZXMtPmdldF9leHRyYV9tZXRob2RzKCRvYmplY3Qt PmNfbmFtZSkgYXMgJG1ldGhvZF9uYW1lID0+ICRvdmVycmlkZSkgeworICAgICAgICAgICAgICAg IGxpc3QoJG1ldGhvZF9ib2R5LCAkZmxhZ3MpID0gJG92ZXJyaWRlOworICAgICAgICAgICAgICAg IGxpc3QoJGFyZ2luZm8sICRyZWZsZWN0aW9uX2Z1bmMpID0gJHRoaXMtPmdlblJlZmxlY3Rpb25B cmdJbmZvKG51bGwsICRvYmplY3QsICRtZXRob2RfbmFtZSk7CisKKyAgICAgICAgICAgICAgICAk bWV0aG9kX2JvZHkgPSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQX01FVEhPRCkuKiQhbScsICJzdGF0 aWMgJDEoJG9iamVjdC0+Y19uYW1lLCAkbWV0aG9kX25hbWUpIiwgJG1ldGhvZF9ib2R5KTsKKyAg ICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJG1ldGhvZF9ib2R5LCAkb2JqZWN0 LT5jX25hbWUsICRtZXRob2RfbmFtZSk7CisgICAgICAgICAgICAgICAgJG1ldGhvZF9lbnRyaWVz WyRtZXRob2RfbmFtZV0gPSBhcnJheSgkb2JqZWN0LT5jX25hbWUsICRtZXRob2RfbmFtZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWZs ZWN0aW9uX2Z1bmMsICRmbGFncyA/ICRmbGFncyA6ICdaRU5EX0FDQ19QVUJMSUMnKTsKKyAgICAg ICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJnZW4iLCAiJXMgICUtMTFzICVzOjolc1xuIiwgIiUl IiwgIm1ldGhvZCIsICRvYmplY3QtPmNfbmFtZSwgJG1ldGhvZF9uYW1lKTsKKyAgICAgICAgICAg ICAgICAkbnVtX3dyaXR0ZW4rKzsKKyAgICAgICAgICAgICAgICAkdGhpcy0+Y292ZXJbIm1ldGhv ZHMiXS0+d3JpdHRlbigpOworCisgICAgICAgICAgICAgICAgaWYgKCRhcmdpbmZvID09PSBudWxs KSB7CisgICAgICAgICAgICAgICAgICAgICRvYmplY3QtPm1ldGhvZHNbJG1ldGhvZF9uYW1lXSA9 IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgJG1ldGhv ZGFyZ2luZm9zIC49ICRhcmdpbmZvOworICAgICAgICAgICAgICAgICAgICAkb2JqZWN0LT5tZXRo b2RzWyRtZXRob2RfbmFtZV0gPSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K KyAgICAgICAgfQorCisgICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIiglZCB3cml0dGVuLCAlZCBz a2lwcGVkKVxuIiwgJG51bV93cml0dGVuLCAkbnVtX3NraXBwZWQpOworCisgICAgICAgIHJldHVy biBhcnJheSgkbWV0aG9kX2VudHJpZXMsICRtZXRob2RhcmdpbmZvcyk7CisgICAgfQorCisgICAg ZnVuY3Rpb24gd3JpdGVfY29uc3RydWN0b3IoJG9iamVjdCkKKyAgICB7CisgICAgICAgICR0aGlz LT5sb2dfcHJpbnQoIiAgJS0yMHMgIiwgImNvbnN0cnVjdG9ycyIpOworICAgICAgICAkbnVtX3dy aXR0ZW4gPSAkbnVtX3NraXBwZWQgPSAwOworCisgICAgICAgICRjdG9ycyA9ICR0aGlzLT5wYXJz ZXItPmZpbmRfY29uc3RydWN0b3IoJG9iamVjdCwgJHRoaXMtPm92ZXJyaWRlcyk7CisKKyAgICAg ICAgJGN0b3JfZGVmcyA9IGFycmF5KCk7CisgICAgICAgICRjdG9yX2FyZ2luZm9zID0gJyc7CisK KyAgICAgICAgaWYgKCRjdG9ycykgeworICAgICAgICAgICAgJGRpY3RbJ2NsYXNzJ10gPSAkb2Jq ZWN0LT5jX25hbWU7CisgICAgICAgICAgICAkZGljdFsndHlwZWNvZGUnXSA9ICRvYmplY3QtPnR5 cGVjb2RlOworICAgICAgICAgICAgJGZpcnN0ID0gMTsKKworICAgICAgICAgICAgZm9yZWFjaCAo JGN0b3JzIGFzICRjdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMt PmlzX2RlcHJlY2F0ZWQoJGN0b3ItPmNfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgJGN0 b3ItPmRlcHJlY2F0ZWQgPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfZGVwcmVjYXRlZCgkY3Rvci0+ Y19uYW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJGN0b3JfbmFtZSA9 ICRjdG9yLT5jX25hbWU7CisgICAgICAgICAgICAgICAgaWYgKCRmaXJzdCkgeworICAgICAgICAg ICAgICAgICAgICAkY3Rvcl9mZV9uYW1lID0gJ19fY29uc3RydWN0JzsKKyAgICAgICAgICAgICAg ICAgICAgJGZsYWdzID0gJ1pFTkRfQUNDX1BVQkxJQyc7CisgICAgICAgICAgICAgICAgICAgICR0 ZW1wbGF0ZV9uYW1lID0gJ2NvbnN0cnVjdG9yJzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEk Y3Rvci0+Y2FsbGVyX293bnNfcmV0dXJuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkZGlj dFsncG9zdF9jcmVhdGVfY29kZSddID0gIlx0Z19vYmplY3RfcmVmKHdyYXBwZWRfb2JqKTsiOwor ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgICAgICAgICAgLy8gcmVtb3ZlIGNsYXNzIG5hbWUgZnJvbSB0aGUgY29uc3RydWN0b3IgbmFt ZSwgaS5lLiB0dXJuCisgICAgICAgICAgICAgICAgICAgIC8vIGd0a19idXR0b25fbmV3X3dpdGhf bW5lbW9uaWMgaW50byBuZXdfd2l0aF9tbmVtb25pYworICAgICAgICAgICAgICAgICAgICAkY3Rv cl9mZV9uYW1lID0gc3Vic3RyKCRjdG9yX25hbWUsIHN0cmxlbihjb252ZXJ0X3R5cGVuYW1lKCRj dG9yLT5pc19jb25zdHJ1Y3Rvcl9vZikpKTsKKyAgICAgICAgICAgICAgICAgICAgJGZsYWdzID0g J1pFTkRfQUNDX1BVQkxJQ3xaRU5EX0FDQ19TVEFUSUMnOworICAgICAgICAgICAgICAgICAgICAk dGVtcGxhdGVfbmFtZSA9ICdzdGF0aWNfY29uc3RydWN0b3InOworICAgICAgICAgICAgICAgIH0K KworICAgICAgICAgICAgICAgICRkaWN0WydjdG9yX3dpdGhfcHJvcHMnXSA9IGZhbHNlOworICAg ICAgICAgICAgICAgIC8qIFVzZSBzaW1wbGUgbm8tcHJvcCBjb25zdHJ1Y3RvciBvbmx5IGZvciBk ZWZhdWx0IGNvbnN0cnVjdG9ycworICAgICAgICAgICAgICAgICAgIHdpdGggbm8gcGFyYW1ldGVy cy4gKi8KKyAgICAgICAgICAgICAgICBpZiAoJG9iamVjdC0+ZGVmX3R5cGUgPT0gJ29iamVjdCcg JiYgISRjdG9yLT5wYXJhbXMgJiYgJGZpcnN0KSB7CisgICAgICAgICAgICAgICAgICAgICR0ZW1w bGF0ZSA9IFRlbXBsYXRlczo6Y29uc3RydWN0b3Jfd2l0aG91dF9wcm9wczsKKyAgICAgICAgICAg ICAgICAgICAgJGRpY3RbJ2N0b3Jfd2l0aF9wcm9wcyddID0gdHJ1ZTsKKyAgICAgICAgICAgICAg ICB9IGVsc2UgaWYgKCRvYmplY3QtPmRlZl90eXBlID09ICdvYmplY3QnICYmICRjdG9yLT5wcm9w ZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgICAgICR0ZW1wbGF0ZSA9IFRlbXBsYXRlczo6Y29u c3RydWN0b3Jfd2l0aF9wcm9wczsKKyAgICAgICAgICAgICAgICAgICAgJGRpY3RbJ2N0b3Jfd2l0 aF9wcm9wcyddID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ICAgICAgICAkdGVtcGxhdGUgPSAkdGhpcy0+dGVtcGxhdGVfbWFwWyRvYmplY3QtPmRlZl90eXBl XVskdGVtcGxhdGVfbmFtZV07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg dHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCgkYXJnaW5mbywgJHJlZmxlY3Rpb25fZnVu YykgPSAkdGhpcy0+Z2VuUmVmbGVjdGlvbkFyZ0luZm8oJGN0b3IsICRvYmplY3QsICRjdG9yX2Zl X25hbWUpOworCisgICAgICAgICAgICAgICAgICAgIGlmICgoJG92ZXJyaWRlbiA9ICR0aGlzLT5v dmVycmlkZXMtPmlzX292ZXJyaWRlbigkY3Rvcl9uYW1lKSkpIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIGxpc3QoLCAkY3Rvcl9vdmVycmlkZSwgJGN0b3JfZmxhZ3MpID0gJHRoaXMtPm92ZXJy aWRlcy0+Z2V0X292ZXJyaWRlKCRjdG9yX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAg aWYgKCFlbXB0eSgkY3Rvcl9mbGFncykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZs YWdzID0gJGN0b3JfZmxhZ3M7CisgICAgICAgICAgICAgICAgICAgICAgICAkY3Rvcl9vdmVycmlk ZSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBfTUVUSE9EKS4qJCFtJywgInN0YXRpYyAkMSgkY3Rv ci0+aXNfY29uc3RydWN0b3Jfb2YsICRjdG9yX2ZlX25hbWUpIiwgJGN0b3Jfb3ZlcnJpZGUpOwor ICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlX292ZXJyaWRlKCRjdG9yX292ZXJy aWRlLCAkY3Rvci0+Y19uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICRkaWN0WyduYW1lJ10gPSAkY3Rvcl9mZV9uYW1lOworICAgICAg ICAgICAgICAgICAgICAgICAgJGNvZGUgPSAkdGhpcy0+d3JpdGVfY2FsbGFibGUoJGN0b3IsICR0 ZW1wbGF0ZSwgZmFsc2UsIGZhbHNlLCAkZGljdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAk dGhpcy0+ZnAtPndyaXRlKCRjb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg ICAgICAgICAgICAgICRjdG9yX2RlZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjptZXRob2RfZW50 cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN0b3ItPmlz X2NvbnN0cnVjdG9yX29mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICRjdG9yX2ZlX25hbWUsICRyZWZsZWN0aW9uX2Z1bmMsICRmbGFncyk7CisgICAgICAgICAg ICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlcyAgJS0xMXMgJXM6OiVzXG4iLCAkb3Zl cnJpZGVuPyIlJSI6IiAgIiwgImNvbnN0cnVjdG9yIiwgJG9iamVjdC0+Y19uYW1lLCAkY3Rvcl9m ZV9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgJG51bV93cml0dGVuKys7CisgICAgICAgICAg ICAgICAgICAgICR0aGlzLT5jb3ZlclsiY3RvcnMiXS0+d3JpdHRlbigpOworICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRhcmdpbmZvICE9PSBudWxsKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAkY3Rvcl9hcmdpbmZvcyAuPSAkYXJnaW5mbzsKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkg eworICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJub3RnZW4iLCAiICAlLTExcyAl czo6JXM6ICVzXG4iLCAiY29uc3RydWN0b3IiLCAkb2JqZWN0LT5jX25hbWUsICRjdG9yX2ZlX25h bWUsICRlLT5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgICAgICAgICAkbnVtX3NraXBwZWQr KzsKKyAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJjdG9ycyJdLT5za2lwcGVkKCk7 CisgICAgICAgICAgICAgICAgICAgIC8vIG1hcmsgY2xhc3MgYXMgbm9uLWluc3RhbnRpYWJsZSBk aXJlY3RseSBpZiB3ZSB3ZXJlIHRyeWluZworICAgICAgICAgICAgICAgICAgICAvLyB0byBnZW5l cmF0ZSBkZWZhdWx0IGNvbnN0cnVjdG9yCisgICAgICAgICAgICAgICAgICAgIGlmICgkY3Rvcl9m ZV9uYW1lID09ICdfX2NvbnN0cnVjdCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRjdG9y X2RlZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjpmdW5jdGlvbl9lbnRyeSwgJGN0b3JfZmVfbmFt ZSwgJ25vX2RpcmVjdF9jb25zdHJ1Y3RvcicsICRjdG9yX2ZlX25hbWUsICdub19kaXJlY3RfY29u c3RydWN0b3InKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAkZmlyc3QgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmhhdmVfZXh0cmFfbWV0aG9kcygk b2JqZWN0LT5jX25hbWUpKSB7CisgICAgICAgICAgICAgICAgJGN0b3JfbmFtZSA9ICdfX2NvbnN0 cnVjdCc7CisgICAgICAgICAgICAgICAgJGV4dHJhcyA9ICR0aGlzLT5vdmVycmlkZXMtPmdldF9l eHRyYV9tZXRob2RzKCRvYmplY3QtPmNfbmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKGlzc2V0 KCRleHRyYXNbJGN0b3JfbmFtZV0pKSB7CisgICAgICAgICAgICAgICAgICAgICRjdG9yX2JvZHkg PSAkZXh0cmFzWyRjdG9yX25hbWVdOworICAgICAgICAgICAgICAgICAgICAkY3Rvcl9ib2R5ID0g cHJlZ19yZXBsYWNlKCchXi4qKFBIUF9NRVRIT0QpLiokIW0nLCAic3RhdGljICQxKCRvYmplY3Qt PmNfbmFtZSwgJGN0b3JfbmFtZSkiLCAkY3Rvcl9ib2R5KTsKKyAgICAgICAgICAgICAgICAgICAg JHRoaXMtPndyaXRlX292ZXJyaWRlKCRjdG9yX2JvZHksICRvYmplY3QtPmNfbmFtZSwgJGN0b3Jf bmFtZSk7CisgICAgICAgICAgICAgICAgICAgICRjdG9yX2RlZnNbXSA9IHNwcmludGYoVGVtcGxh dGVzOjptZXRob2RfZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJG9iamVjdC0+Y19uYW1lLCAkY3Rvcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdOVUxMJywgJ1pFTkRfQUNDX1BVQkxJQycpOworICAgICAg ICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJnZW4iLCAiJSUlJSAgJS0xMXMgJXM6OiVzXG4i LCAiY29uc3RydWN0b3IiLCAkb2JqZWN0LT5jX25hbWUsICRjdG9yX25hbWUpOworICAgICAgICAg ICAgICAgICAgICAkbnVtX3dyaXR0ZW4rKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIG1hcmsgY2xhc3MgYXMgbm9uLWluc3RhbnRp YWJsZSBkaXJlY3RseSwgb25seSBpZiBpdCdzIG5vdAorICAgICAgICAgICAgICAgIC8vIEdPYmpl Y3QuIEZvciBHT2JqZWN0J3Mgd2UgbGV0IGl0IGNoYWluIHVwIHRvIEdPYmplY3QKKyAgICAgICAg ICAgICAgICAvLyBjb25zdHJ1Y3RvcgorICAgICAgICAgICAgICAgIGlmICgkb2JqZWN0LT5kZWZf dHlwZSAhPSAnb2JqZWN0JykgeworICAgICAgICAgICAgICAgICAgICAkY3Rvcl9kZWZzW10gPSBz cHJpbnRmKFRlbXBsYXRlczo6ZnVuY3Rpb25fZW50cnksICdfX2NvbnN0cnVjdCcsICdub19kaXJl Y3RfY29uc3RydWN0b3InLCAnX19jb25zdHJ1Y3QnLCAnbm9fZGlyZWN0X2NvbnN0cnVjdG9yJyk7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg JHRoaXMtPmxvZ19wcmludCgiKCVkIHdyaXR0ZW4sICVkIHNraXBwZWQpXG4iLCAkbnVtX3dyaXR0 ZW4sICRudW1fc2tpcHBlZCk7CisgICAgICAgIHJldHVybiBhcnJheSgkY3Rvcl9kZWZzLCAkY3Rv cl9hcmdpbmZvcyk7CisgICAgfS8vZnVuY3Rpb24gd3JpdGVfY29uc3RydWN0b3IoJG9iamVjdCkK KworICAgIGZ1bmN0aW9uIHdyaXRlX2NsYXNzZXMoKQorICAgIHsKKyAgICAgICAgJHJlZ2lzdGVy X2NsYXNzZXMgPSAnJzsKKworICAgICAgICBpZiAoJHRoaXMtPnBhcnNlci0+ZnVuY3Rpb25zIHx8 ICR0aGlzLT5wYXJzZXItPmVudW1zKSB7CisgICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJc biVzXG4lc1xuIiwgJHRoaXMtPnByZWZpeCwgc3RyX3JlcGVhdCgnficsIDUwKSk7CisgICAgICAg ICAgICAkZnVuY19kZWZzID0gJHRoaXMtPndyaXRlX2Z1bmN0aW9ucygpOworCisgICAgICAgICAg ICAkcmVnaXN0ZXJfY2xhc3NlcyAuPSBhcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0ZXJfY2xhc3Ms CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdjZScgPT4g JHRoaXMtPmxwcmVmaXggLiAnX2NlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2NsYXNzJyA9PiAkdGhpcy0+cHJlZml4LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWV0aG9kcycgPT4gJGZ1bmNfZGVmcyA/ ICR0aGlzLT5scHJlZml4IC4gJ19tZXRob2RzJyA6ICdOVUxMJywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudCcgPT4gJ05VTEwnLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2VfZmxhZ3MnID0+IDAs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9waW5m bycgPT4gJ05VTEwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnY3JlYXRlX2Z1bmMnID0+ICdOVUxMJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ3R5cGVjb2RlJyA9PiAwKSk7CisgICAgICAgIH0KKworICAg ICAgICAvKiBHSW50ZXJmYWNlJ3MgKi8KKyAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiXG5cbiIg LiAkdGhpcy0+bWFrZV9oZWFkZXIoIkludGVyZmFjZXMiLCA1MCwgJy0nKSk7CisgICAgICAgIGZv cmVhY2ggKCR0aGlzLT5wYXJzZXItPmludGVyZmFjZXMgYXMgJGludGVyZmFjZSkgeworICAgICAg ICAgICAgJHJlZ19pbmZvID0gJHRoaXMtPndyaXRlX2NsYXNzKCRpbnRlcmZhY2UpOworICAgICAg ICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMgLj0gYXByaW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2lu dGVyZmFjZSwgJHJlZ19pbmZvKTsKKyAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5o YXZlX3Bvc3RfcmVnaXN0cmF0aW9uKCRpbnRlcmZhY2UtPmNfbmFtZSkpIHsKKyAgICAgICAgICAg ICAgICAkcmVnaXN0ZXJfY2xhc3NlcyAuPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfcG9zdF9yZWdp c3RyYXRpb24oJGludGVyZmFjZS0+Y19uYW1lKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgLyogc2l6ZSBjaGVjayBnb2VzIGhlcmUgKi8KKyAgICAgICAgICAgIGlmICgkdGhpcy0+ZnAt PmNoZWNrX3NpemUoKSkgeworICAgICAgICAgICAgICAgIC8vIHdlIGhpdCBzaXplIHRvbyBiaWcs IHdyaXRlIG91dCBlbmQKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYo VGVtcGxhdGVzOjpyZWdpc3Rlcl9jbGFzc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICR0aGlzLT5scHJlZml4IC4gJHRoaXMtPmZwLT5nZXRfY3VycmVudCgpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7CisgICAgICAg ICAgICAgICAgJHJlZ2lzdGVyX2NsYXNzZXMgPSAnJzsKKyAgICAgICAgICAgICAgICAkdGhpcy0+ ZnAtPm5ld19maWxlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEk dGhpcy0+cGFyc2VyLT5pbnRlcmZhY2VzKSB7CisgICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50 KCIgIC0tIG5vbmUgLS0gICIpOworICAgICAgICB9CisKKyAgICAgICAgLyogR09iamVjdCdzICov CisgICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIlxuXG4iIC4gJHRoaXMtPm1ha2VfaGVhZGVyKCJP YmplY3RzIiwgNTAsICctJykpOworICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5vYmpl Y3RzIGFzICRvYmplY3QpIHsKKyAgICAgICAgICAgIC8qIHNraXAgaWdub3JlZCBvYmplY3RzICov CisgICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJyaWRlcy0+aXNfaWdub3JlZCgkb2JqZWN0LT5j X25hbWUpKSB7CisgICAgICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiXG4lcyAlc1xuIiwg JG9iamVjdC0+Y19uYW1lLCAiaXMgaWdub3JlZCBpbiB0aGUgb3ZlcnJpZGVzIGZpbGUiKTsKKyAg ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRyZWdf aW5mbyA9ICR0aGlzLT53cml0ZV9jbGFzcygkb2JqZWN0KTsKKyAgICAgICAgICAgICRyZWdpc3Rl cl9jbGFzc2VzIC49IGFwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9jbGFzcywgJHJlZ19pbmZv KTsKKyAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5oYXZlX3Bvc3RfcmVnaXN0cmF0 aW9uKCRvYmplY3QtPmNfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAkcmVnaXN0ZXJfY2xhc3Nl cyAuPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfcG9zdF9yZWdpc3RyYXRpb24oJG9iamVjdC0+Y19u YW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIHNpemUgY2hlY2sgZ29lcyBoZXJl ICovCisgICAgICAgICAgICBpZiAoJHRoaXMtPmZwLT5jaGVja19zaXplKCkpIHsKKyAgICAgICAg ICAgICAgICAvLyB3ZSBoaXQgc2l6ZSB0b28gYmlnLCB3cml0ZSBvdXQgZW5kCisgICAgICAgICAg ICAgICAgJHRoaXMtPmZwLT53cml0ZShzcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0ZXJfY2xhc3Nl cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bHByZWZpeCAuICR0 aGlzLT5mcC0+Z2V0X2N1cnJlbnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAkcmVnaXN0ZXJfY2xhc3NlcykpOworICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2Vz ID0gJyc7CisgICAgICAgICAgICAgICAgJHRoaXMtPmZwLT5uZXdfZmlsZSgpOworICAgICAgICAg ICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghJHRoaXMtPnBhcnNlci0+b2JqZWN0cykgewor ICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiICAtLSBub25lIC0tICAiKTsKKyAgICAgICAg fQorCisgICAgICAgIC8qIEdCb3hlZCAqLworICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJcblxu IiAuICR0aGlzLT5tYWtlX2hlYWRlcigiQm94ZWQgVHlwZXMiLCA1MCwgJy0nKSk7CisgICAgICAg IGZvcmVhY2ggKCR0aGlzLT5wYXJzZXItPmJveGVkIGFzICRib3hlZCkgeworICAgICAgICAgICAg JHJlZ19pbmZvID0gJHRoaXMtPndyaXRlX2NsYXNzKCRib3hlZCk7CisgICAgICAgICAgICAkcmVn aXN0ZXJfY2xhc3NlcyAuPSBhcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0ZXJfYm94ZWQsICRyZWdf aW5mbyk7CisgICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJyaWRlcy0+aGF2ZV9wb3N0X3JlZ2lz dHJhdGlvbigkYm94ZWQtPmNfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAkcmVnaXN0ZXJfY2xh c3NlcyAuPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfcG9zdF9yZWdpc3RyYXRpb24oJGJveGVkLT5j X25hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogc2l6ZSBjaGVjayBnb2VzIGhl cmUgKi8KKyAgICAgICAgICAgIGlmICgkdGhpcy0+ZnAtPmNoZWNrX3NpemUoKSkgeworICAgICAg ICAgICAgICAgIC8vIHdlIGhpdCBzaXplIHRvbyBiaWcsIHdyaXRlIG91dCBlbmQKKyAgICAgICAg ICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9jbGFz c2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5scHJlZml4IC4g JHRoaXMtPmZwLT5nZXRfY3VycmVudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7CisgICAgICAgICAgICAgICAgJHJlZ2lzdGVyX2NsYXNz ZXMgPSAnJzsKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPm5ld19maWxlKCk7CisgICAgICAg ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEkdGhpcy0+cGFyc2VyLT5ib3hlZCkgewor ICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiICAtLSBub25lIC0tICAiKTsKKyAgICAgICAg fQorCisgICAgICAgIC8qIEdQb2ludGVyICovCisgICAgICAgICR0aGlzLT5sb2dfcHJpbnQoIlxu XG4iIC4gJHRoaXMtPm1ha2VfaGVhZGVyKCJQb2ludGVycyIsIDUwLCAnLScpKTsKKyAgICAgICAg Zm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+cG9pbnRlcnMgYXMgJHBvaW50ZXIpIHsKKyAgICAgICAg ICAgICRyZWdfaW5mbyA9ICR0aGlzLT53cml0ZV9jbGFzcygkcG9pbnRlcik7CisgICAgICAgICAg ICAkcmVnaXN0ZXJfY2xhc3NlcyAuPSBhcHJpbnRmKFRlbXBsYXRlczo6cmVnaXN0ZXJfcG9pbnRl ciwgJHJlZ19pbmZvKTsKKyAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5oYXZlX3Bv c3RfcmVnaXN0cmF0aW9uKCRwb2ludGVyLT5jX25hbWUpKSB7CisgICAgICAgICAgICAgICAgJHJl Z2lzdGVyX2NsYXNzZXMgLj0gJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X3Bvc3RfcmVnaXN0cmF0aW9u KCRwb2ludGVyLT5jX25hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogc2l6ZSBj aGVjayBnb2VzIGhlcmUgKi8KKyAgICAgICAgICAgIGlmICgkdGhpcy0+ZnAtPmNoZWNrX3NpemUo KSkgeworICAgICAgICAgICAgICAgIC8vIHdlIGhpdCBzaXplIHRvbyBiaWcsIHdyaXRlIG91dCBl bmQKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpy ZWdpc3Rlcl9jbGFzc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlz LT5scHJlZml4IC4gJHRoaXMtPmZwLT5nZXRfY3VycmVudCgpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7CisgICAgICAgICAgICAgICAgJHJl Z2lzdGVyX2NsYXNzZXMgPSAnJzsKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPm5ld19maWxl KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEkdGhpcy0+cGFyc2Vy LT5wb2ludGVycykgeworICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiICAtLSBub25lIC0t ICAiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHJlZ2lzdGVyIGFsbCBjbGFzc2VzICovCisg ICAgICAgIGlmICgkcmVnaXN0ZXJfY2xhc3NlcyAhPT0gJycpIHsKKyAgICAgICAgICAgICAgICAk dGhpcy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpyZWdpc3Rlcl9jbGFzc2VzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmxwcmVmaXggLiAk dGhpcy0+ZnAtPmdldF9jdXJyZW50KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAkcmVnaXN0ZXJfY2xhc3NlcykpOworICAgICAgICB9CisKKyAgICAgICAgJHJl Z2lzdGVyX2NsYXNzZXMgPSAnJzsKKyAgICAgICAgJHRvdGFsID0gJHRoaXMtPmZwLT5nZXRfdG90 YWwoKTsKKyAgICAgICAgJGN1cnJlbnQgPSAwOworICAgICAgICB3aGlsZSgkY3VycmVudCA8ICR0 b3RhbCkgeworICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzIC49ICcJcGhwZ18nIC4g JHRoaXMtPmxwcmVmaXggLiAkY3VycmVudCAuICJfcmVnaXN0ZXJfY2xhc3NlcyhUU1JNTFNfQyk7 XG4iOworICAgICAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKCd2b2lkIHBocGdf JyAuICR0aGlzLT5scHJlZml4IC4gJGN1cnJlbnQgLiAiX3JlZ2lzdGVyX2NsYXNzZXMoVFNSTUxT X0QpO1xuIik7CisgICAgICAgICAgICAgICAgJGN1cnJlbnQrKzsKKyAgICAgICAgfQorICAgICAg ICAvKiB3cml0ZSB0aGUgIm1ldGEiIHJlZ2lzdGVyIGNsYXNzICovCisgICAgICAgICR0aGlzLT5m cC0+d3JpdGUoc3ByaW50ZihUZW1wbGF0ZXM6OnJlZ2lzdGVyX2NsYXNzZXMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bHByZWZpeCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWdpc3Rlcl9jbGFzc2VzKSk7CisK KyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gd3JpdGVfcHJvcF9oYW5kbGVycygkb2JqZWN0KQor ICAgIHsKKyAgICAgICAgZ2xvYmFsICRtYXRjaGVyOworCisgICAgICAgIGlmICghJG9iamVjdC0+ ZmllbGRzICYmICEkdGhpcy0+b3ZlcnJpZGVzLT5oYXZlX2V4dHJhX3Byb3BzKCRvYmplY3QtPmNf bmFtZSkpIHsKKyAgICAgICAgICAgIHJldHVybiAnTlVMTCc7CisgICAgICAgIH0KKworICAgICAg ICAkdGhpcy0+bG9nX3ByaW50KCIgICUtMjBzICIsICJwcm9wZXJ0eSBhY2Nlc3NvcnMiKTsKKyAg ICAgICAgJG51bV93cml0dGVuID0gJG51bV9za2lwcGVkID0gMDsKKworICAgICAgICAkY2xhc3Mg PSBzdHJ0b2xvd2VyKCRvYmplY3QtPmNfbmFtZSk7CisgICAgICAgICRwcm9wX2RlZnMgPSBhcnJh eSgpOworICAgICAgICAkZGljdCA9IGFycmF5KCk7CisKKyAgICAgICAgc3dpdGNoICgkb2JqZWN0 LT5kZWZfdHlwZSkgeworICAgICAgICAgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgICAgICAgICAg ICAkZGljdFsnY2FzdCddID0gcHJlZ19yZXBsYWNlKCchX1RZUEVfIScsICdfJywgJG9iamVjdC0+ dHlwZWNvZGUsIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNl ICdib3hlZCc6CisgICAgICAgICAgICBjYXNlICdwb2ludGVyJzoKKyAgICAgICAgICAgICAgICAk ZGljdFsnY2FzdCddID0gJG9iamVjdC0+Y19uYW1lIC4gJyAqJzsKKyAgICAgICAgICAgICAgICBi cmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg RXhjZXB0aW9uKCJ1bmhhbmRsZWQgZGVmaW5pdGlvbiB0eXBlIik7CisgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBmb3JlYWNoICgkb2JqZWN0LT5maWVsZHMgYXMg JGZpZWxkKSB7CisgICAgICAgICAgICBsaXN0KCRmaWVsZF90eXBlLCAkZmllbGRfbmFtZSkgPSAk ZmllbGQ7CisKKyAgICAgICAgICAgICRyZWFkX2Z1bmMgPSAiUEhQR19QUk9QX1JFQURfRk4oJG9i amVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSkiOworICAgICAgICAgICAgJHdyaXRlX2Z1bmMgPSAn TlVMTCc7CisgICAgICAgICAgICAkaW5mbyA9IG5ldyBXcmFwcGVyX0luZm8oKTsKKworICAgICAg ICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm92ZXJyaWRlcy0+aXNfcHJv cF9vdmVycmlkZW4oJG9iamVjdC0+Y19uYW1lLCAkZmllbGRfbmFtZSkpIHsKKyAgICAgICAgICAg ICAgICAgICAgJG92ZXJyaWRlcyA9ICR0aGlzLT5vdmVycmlkZXMtPmdldF9wcm9wX292ZXJyaWRl KCRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAo aXNzZXQoJG92ZXJyaWRlc1sncmVhZCddKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJHJl YWRfb3ZlcnJpZGUgPSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQR19QUk9QX1JFQURFUikuKiQhbScs ICIkMSgkb2JqZWN0LT5jX25hbWUsICRmaWVsZF9uYW1lKSIsICRvdmVycmlkZXNbJ3JlYWQnXSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJHJlYWRfb3Zl cnJpZGUsICRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUsICdyZWFkJyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJnZW4iLCAiJSUlJSAgJS0xMXMgJXMtPiVzXG4i LCAicmVhZGVyIGZvciIsICRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUpOworICAgICAgICAg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJHJlYWRfZnVuYyA9 ICdOVUxMJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAo aXNzZXQoJG92ZXJyaWRlc1snd3JpdGUnXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICR3 cml0ZV9vdmVycmlkZSA9IHByZWdfcmVwbGFjZSgnIV4uKihQSFBHX1BST1BfV1JJVEVSKS4qJCFt JywgInN0YXRpYyAkMSgkb2JqZWN0LT5jX25hbWUsICRmaWVsZF9uYW1lKSIsICRvdmVycmlkZXNb J3dyaXRlJ10pOworICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlX292ZXJyaWRl KCRvdmVycmlkZXNbJ3dyaXRlJ10sICRvYmplY3QtPmNfbmFtZSwgJGZpZWxkX25hbWUsICd3cml0 ZScpOworICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmRpdmVydCgiZ2VuICIsICIlJSUl ICAlLTExcyAlcy0+JXNcbiIsICJ3cml0ZXIgZm9yIiwgJG9iamVjdC0+Y19uYW1lLCAkZmllbGRf bmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgICAgICAgICAkaGFuZGxlciA9ICRtYXRjaGVyLT5nZXQoJGZpZWxkX3R5cGUp OworICAgICAgICAgICAgICAgICAgICAkaGFuZGxlci0+d3JpdGVfcmV0dXJuKCRmaWVsZF90eXBl LCBmYWxzZSwgJGluZm8pOworCisgICAgICAgICAgICAgICAgICAgICRkaWN0WyduYW1lJ10gPSAk ZmllbGRfbmFtZTsKKworICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKGFwcmlu dGYoVGVtcGxhdGVzOjpwcm9wX3JlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhcnJheSgnY2xhc3MnID0+ICRvYmplY3QtPmNfbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZScgPT4g JGZpZWxkX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ3Zhcl9saXN0JyA9PiAkaW5mby0+Z2V0X3Zhcl9saXN0KCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByZV9jb2RlJyA9PiAk aW5mby0+Z2V0X3ByZV9jb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3Bvc3RfY29kZScgPT4gJGluZm8tPmdldF9wb3N0X2NvZGUoKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJv cF9hY2Nlc3MnID0+IGFwcmludGYoJHRoaXMtPnRlbXBsYXRlX21hcFskb2JqZWN0LT5kZWZfdHlw ZV1bJ3Byb3AnXSwgJGRpY3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApKSk7CisgICAgICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdl biIsICIgICAgJS0xMXMgJXMtPiVzXG4iLCAicmVhZGVyIGZvciIsICRvYmplY3QtPmNfbmFtZSwg JGZpZWxkX25hbWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkcHJvcF9k ZWZzW10gPSBzcHJpbnRmKFRlbXBsYXRlczo6cHJvcF9pbmZvX2VudHJ5LCAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZF9uYW1lLCAkcmVhZF9mdW5jLCAkd3Jp dGVfZnVuYyk7CisgICAgICAgICAgICAgICAgJG51bV93cml0dGVuKys7CisgICAgICAgICAgICAg ICAgJHRoaXMtPmNvdmVyWyJwcm9wcyJdLT53cml0dGVuKCk7CisgICAgICAgICAgICB9IGNhdGNo IChFeGNlcHRpb24gJGUpIHsKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJub3RnZW4i LCAiICAlLTExcyAlcy0+JXM6ICVzXG4iLCAicmVhZGVyIGZvciIsICRvYmplY3QtPmNfbmFtZSwg JGZpZWxkX25hbWUsICRlLT5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgICAgICRudW1fc2tp cHBlZCsrOworICAgICAgICAgICAgICAgICR0aGlzLT5jb3ZlclsicHJvcHMiXS0+c2tpcHBlZCgp OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlk ZXMtPmhhdmVfZXh0cmFfcHJvcHMoJG9iamVjdC0+Y19uYW1lKSkgeworICAgICAgICAgICAgZm9y ZWFjaCAoJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X2V4dHJhX3Byb3BzKCRvYmplY3QtPmNfbmFtZSkg YXMgJHByb3BfbmFtZSA9PiAkb3ZlcnJpZGVzKSB7CisKKyAgICAgICAgICAgICAgICAkcmVhZF9m dW5jID0gIlBIUEdfUFJPUF9SRUFEX0ZOKCRvYmplY3QtPmNfbmFtZSwgJHByb3BfbmFtZSkiOwor ICAgICAgICAgICAgICAgICR3cml0ZV9mdW5jID0gJ05VTEwnOworICAgICAgICAgICAgICAgICRp bmZvID0gbmV3IFdyYXBwZXJfSW5mbygpOworCisgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRv dmVycmlkZXNbJ3JlYWQnXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgJHJlYWRfb3ZlcnJpZGUg PSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQR19QUk9QX1JFQURFUikuKiQhbScsICIkMSgkb2JqZWN0 LT5jX25hbWUsICRwcm9wX25hbWUpIiwgJG92ZXJyaWRlc1sncmVhZCddKTsKKyAgICAgICAgICAg ICAgICAgICAgJHRoaXMtPndyaXRlX292ZXJyaWRlKCRyZWFkX292ZXJyaWRlLCAkb2JqZWN0LT5j X25hbWUsICRwcm9wX25hbWUsICdyZWFkJywgJ2V4dHJhJyk7CisgICAgICAgICAgICAgICAgICAg ICR0aGlzLT5kaXZlcnQoImdlbiIsICIlJSUlICAlLTExcyAlcy0+JXNcbiIsICJyZWFkZXIgZm9y IiwgJG9iamVjdC0+Y19uYW1lLCAkcHJvcF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgJHRo aXMtPmNvdmVyWyJwcm9wcyJdLT53cml0dGVuKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICAgICAgICAgJHJlYWRfZnVuYyA9ICdOVUxMJzsKKyAgICAgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG92ZXJyaWRlc1snd3JpdGUnXSkpIHsK KyAgICAgICAgICAgICAgICAgICAgJHdyaXRlX292ZXJyaWRlID0gcHJlZ19yZXBsYWNlKCchXi4q KFBIUEdfUFJPUF9XUklURVIpLiokIW0nLCAic3RhdGljICQxKCRvYmplY3QtPmNfbmFtZSwgJHBy b3BfbmFtZSkiLCAkb3ZlcnJpZGVzWyd3cml0ZSddKTsKKyAgICAgICAgICAgICAgICAgICAgJHRo aXMtPndyaXRlX292ZXJyaWRlKCRvdmVycmlkZXNbJ3dyaXRlJ10sICRvYmplY3QtPmNfbmFtZSwg JHByb3BfbmFtZSwgJ3dyaXRlJywgJ2V4dHJhJyk7CisgICAgICAgICAgICAgICAgICAgICR0aGlz LT5kaXZlcnQoImdlbiAiLCAiJSUlJSAgJS0xMXMgJXMtPiVzXG4iLCAid3JpdGVyIGZvciIsICRv YmplY3QtPmNfbmFtZSwgJHByb3BfbmFtZSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg ICAgICAgICAgJHByb3BfZGVmc1tdID0gc3ByaW50ZihUZW1wbGF0ZXM6OnByb3BfaW5mb19lbnRy eSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJvcF9uYW1lLCAk cmVhZF9mdW5jLCAkd3JpdGVfZnVuYyk7CisgICAgICAgICAgICAgICAgJG51bV93cml0dGVuKys7 CisgICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJwcm9wcyJdLT53cml0dGVuKCk7CisgICAg ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCIoJWQgd3Jp dHRlbiwgJWQgc2tpcHBlZClcbiIsICRudW1fd3JpdHRlbiwgJG51bV9za2lwcGVkKTsKKworICAg ICAgICBpZiAoJHByb3BfZGVmcykgeworICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZShzcHJp bnRmKFRlbXBsYXRlczo6cHJvcF9pbmZvX2hlYWRlciwgJGNsYXNzKSk7CisgICAgICAgICAgICAk dGhpcy0+ZnAtPndyaXRlKGpvaW4oJycsICRwcm9wX2RlZnMpKTsKKyAgICAgICAgICAgICR0aGlz LT5mcC0+d3JpdGUoVGVtcGxhdGVzOjpwcm9wX2luZm9fZm9vdGVyKTsKKyAgICAgICAgICAgIHJl dHVybiAkY2xhc3MgLiAnX3Byb3BfaW5mbyc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICByZXR1cm4gJ05VTEwnOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gd3JpdGVf b2JqZWN0X2hhbmRsZXJzKCRvYmplY3QpCisgICAgeworICAgICAgICAkaGFuZGxlcnMgPSBhcnJh eSgpOworCisgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5oYW5kbGVycyBhcyAkaGFuZGxlcikgewor ICAgICAgICAgICAgaWYgKCR0aGlzLT5vdmVycmlkZXMtPmlzX2hhbmRsZXJfb3ZlcnJpZGVuKCRv YmplY3QtPmNfbmFtZSwgJGhhbmRsZXIpKSB7CisgICAgICAgICAgICAgICAgJG92ZXJyaWRlID0g JHRoaXMtPm92ZXJyaWRlcy0+Z2V0X2hhbmRsZXJfb3ZlcnJpZGUoJG9iamVjdC0+Y19uYW1lLCAk aGFuZGxlcik7CisgICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlX292ZXJyaWRlKCRvdmVycmlk ZSwgJG9iamVjdC0+Y19uYW1lLCAkaGFuZGxlcik7CisgICAgICAgICAgICAgICAgJGhhbmRsZXJz W10gPSAkaGFuZGxlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICgh JGhhbmRsZXJzKQorICAgICAgICAgICAgcmV0dXJuIGFycmF5KCdOVUxMJywgJycpOworCisgICAg ICAgICRkaWN0WydjbGFzcyddID0gc3RydG9sb3dlcigkb2JqZWN0LT5pbl9tb2R1bGUgLiAkb2Jq ZWN0LT5uYW1lKTsKKyAgICAgICAgc3dpdGNoICgkb2JqZWN0LT5kZWZfdHlwZSkgeworICAgICAg ICAgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgICAgICAgICAgICAkZGljdFsnY3JlYXRlX2Z1bmMn XSA9ICdwaHBnX2NyZWF0ZV9nb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAkZGljdFsnb3JpZ19o YW5kbGVycyddID0gJ3BocGdfZ29iamVjdF9oYW5kbGVycyc7CisgICAgICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgICAgIGNhc2UgJ2JveGVkJzoKKyAgICAgICAgICAgICAgICAkZGljdFsn Y3JlYXRlX2Z1bmMnXSA9ICdwaHBnX2NyZWF0ZV9nYm94ZWQnOworICAgICAgICAgICAgICAgICRk aWN0WydvcmlnX2hhbmRsZXJzJ10gPSAncGhwX2d0a19oYW5kbGVycyc7CisgICAgICAgICAgICAg ICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgJ3BvaW50ZXInOgorICAgICAgICAgICAgICAg ICRkaWN0WydjcmVhdGVfZnVuYyddID0gJ3BocGdfY3JlYXRlX2dwb2ludGVyJzsKKyAgICAgICAg ICAgICAgICAkZGljdFsnb3JpZ19oYW5kbGVycyddID0gJ3BocF9ndGtfaGFuZGxlcnMnOworICAg ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg ICAgIHRocm93IG5ldyBFeGNlcHRpb24oInVuaGFuZGxlZCBkZWZpbml0aW9uIHR5cGUiKTsKKyAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgICR0aGlzLT5mcC0+d3Jp dGUoYXByaW50ZihUZW1wbGF0ZXM6OmN1c3RvbV9jcmVhdGVfZnVuYywgJGRpY3QpKTsKKyAgICAg ICAgJGNyZWF0ZV9mdW5jID0gJ3BocGdfY3JlYXRlXycgLiAkZGljdFsnY2xhc3MnXTsKKworICAg ICAgICAkZXh0cmFfcmVnX2luZm8gPSBhcHJpbnRmKFRlbXBsYXRlczo6Y3VzdG9tX2hhbmRsZXJz X2luaXQsICRkaWN0KTsKKyAgICAgICAgZm9yZWFjaCAoJGhhbmRsZXJzIGFzICRoYW5kbGVyKSB7 CisgICAgICAgICAgICAkZGljdFsnaGFuZGxlciddID0gJGhhbmRsZXI7CisgICAgICAgICAgICAk ZXh0cmFfcmVnX2luZm8gLj0gYXByaW50ZihUZW1wbGF0ZXM6OmN1c3RvbV9oYW5kbGVyX3NldCwg JGRpY3QpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGFycmF5KCRjcmVhdGVfZnVuYywg JGV4dHJhX3JlZ19pbmZvKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtYWtlX21ldGhvZF9kZWZz KCRjbGFzcywgJG1ldGhvZF9lbnRyaWVzKQorICAgIHsKKyAgICAgICAgJG1ldGhvZF9kZWZzID0g YXJyYXkoKTsKKworICAgICAgICBpZiAoJGNsYXNzLT5kZWZfdHlwZSA9PSAnb2JqZWN0Jykgewor ICAgICAgICAgICAgZm9yZWFjaCAoJG1ldGhvZF9lbnRyaWVzIGFzICRtZSkgeworICAgICAgICAg ICAgICAgICRtZXRob2RfZGVmc1tdID0gdnNwcmludGYoVGVtcGxhdGVzOjptZXRob2RfZW50cnks ICRtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoJGNsYXNzLT5pbXBsZW1lbnRz KSB7CisgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNsYXNzLT5pbXBsZW1lbnRzIGFzICRpbnRl cmZhY2VfbmFtZSkgeworICAgICAgICAgICAgICAgICAgICAkaW50ZXJmYWNlID0gJHRoaXMtPnBh cnNlci0+aW50ZXJmYWNlc1skaW50ZXJmYWNlX25hbWVdOworICAgICAgICAgICAgICAgICAgICAk aWZhY2VfbWV0aG9kcyA9IGFycmF5X2RpZmZfa2V5KCRpbnRlcmZhY2UtPm1ldGhvZHMsICRtZXRo b2RfZW50cmllcyk7CisgICAgICAgICAgICAgICAgICAgICRtZXRob2RfZGVmc1tdID0gIlxuXHQv KioqICAgJGludGVyZmFjZV9uYW1lIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMgICAqKiovXG5c biI7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgk aWZhY2VfbWV0aG9kcyBhcyAkaWZhY2VfbWV0aG9kPT4kZHVtbXkpIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIGlmICgkZHVtbXkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICRyZWZsZWN0aW9uX2Z1bmMgPSAnTlVMTCc7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWZsZWN0aW9uX2Z1bmMgPSAnYXJn aW5mb18nIC4gc3RydG9sb3dlcigkaW50ZXJmYWNlLT5pbl9tb2R1bGUpIC4gJ18nIC4gc3RydG9s b3dlcigkaW50ZXJmYWNlLT5jX25hbWUpIC4gJ18nLiAkaWZhY2VfbWV0aG9kOworICAgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgJG1ldGhvZF9kZWZzW10g PSBzcHJpbnRmKFRlbXBsYXRlczo6YWxpYXNfZW50cnksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGludGVyZmFjZV9uYW1lLCAkaWZhY2VfbWV0aG9k LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZmFj ZV9tZXRob2QsICRyZWZsZWN0aW9uX2Z1bmMsICdaRU5EX0FDQ19QVUJMSUMnKTsKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg fSBlbHNlIGlmICgkY2xhc3MtPmRlZl90eXBlID09ICdib3hlZCcgfHwgJGNsYXNzLT5kZWZfdHlw ZSA9PSAncG9pbnRlcicpIHsKKyAgICAgICAgICAgIGZvcmVhY2ggKCRtZXRob2RfZW50cmllcyBh cyAkbWUpIHsKKyAgICAgICAgICAgICAgICAkbWV0aG9kX2RlZnNbXSA9IHZzcHJpbnRmKFRlbXBs YXRlczo6bWV0aG9kX2VudHJ5LCAkbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug aWYgKCRjbGFzcy0+ZGVmX3R5cGUgPT0gJ2ludGVyZmFjZScpIHsKKyAgICAgICAgICAgIGZvcmVh Y2ggKCRtZXRob2RfZW50cmllcyBhcyAkbWUpIHsKKyAgICAgICAgICAgICAgICAkbWV0aG9kX2Rl ZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjphYnNfbWV0aG9kX2VudHJ5LCAkbWVbMV0sICRtZVsw XSwgJG1lWzFdLCAkbWVbMl0sICdaRU5EX0FDQ19QVUJMSUN8WkVORF9BQ0NfQUJTVFJBQ1QnKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAkbWV0aG9kX2RlZnM7 CisgICAgfQorCisgICAgZnVuY3Rpb24gd3JpdGVfY2xhc3MoJGNsYXNzKQorICAgIHsKKyAgICAg ICAgJHRoaXMtPmxvZ19wcmludCgiXG4lc1xuJXNcbiIsICRjbGFzcy0+Y19uYW1lLCBzdHJfcmVw ZWF0KCd+JywgNTApKTsKKworICAgICAgICAkY2xhc3NfbW9kdWxlID0gc3RydG9sb3dlcigkY2xh c3MtPmluX21vZHVsZSk7CisgICAgICAgICRjbGFzc19sbmFtZSA9IHN0cnRvbG93ZXIoJGNsYXNz LT5uYW1lKTsKKworICAgICAgICAkY3JlYXRlX2Z1bmMgPSAnTlVMTCc7CisgICAgICAgICRleHRy YV9yZWdfaW5mbyA9ICcnOworICAgICAgICAkY3Rvcl9kZWZzID0gbnVsbDsKKyAgICAgICAgJHBy b3BfaW5mbyA9ICdOVUxMJzsKKyAgICAgICAgJGN0b3JfYXJnaW5mbyA9ICcnOworCisgICAgICAg IGlmICgkY2xhc3MtPmRlZl90eXBlICE9ICdpbnRlcmZhY2UnKSB7CisgICAgICAgICAgICAvKiBp bnRlcmZhY2VzIGRvbid0IGhhdmUgdGhlc2UgKi8KKyAgICAgICAgICAgIGxpc3QoJGN0b3JfZGVm cywgJGN0b3JfYXJnaW5mbykgPSAkdGhpcy0+d3JpdGVfY29uc3RydWN0b3IoJGNsYXNzKTsKKyAg ICAgICAgICAgICRwcm9wX2luZm8gPSAkdGhpcy0+d3JpdGVfcHJvcF9oYW5kbGVycygkY2xhc3Mp OworICAgICAgICAgICAgbGlzdCgkY3JlYXRlX2Z1bmMsICRleHRyYV9yZWdfaW5mbykgPSAkdGhp cy0+d3JpdGVfb2JqZWN0X2hhbmRsZXJzKCRjbGFzcyk7CisgICAgICAgIH0KKworICAgICAgICBs aXN0KCRtZXRob2RfZW50cmllcywgJG1ldGhvZF9hcmdpbmZvKSA9ICR0aGlzLT53cml0ZV9tZXRo b2RzKCRjbGFzcyk7CisgICAgICAgIGtzb3J0KCRtZXRob2RfZW50cmllcyk7CisgICAgICAgICRt ZXRob2RfZGVmcyAgICAgICAgICAgPSAkdGhpcy0+bWFrZV9tZXRob2RfZGVmcygkY2xhc3MsICRt ZXRob2RfZW50cmllcyk7CisgICAgICAgIAorICAgICAgICAkYXJnaW5mbyA9ICRjdG9yX2FyZ2lu Zm8gLiAkbWV0aG9kX2FyZ2luZm87CisKKyAgICAgICAgaWYgKCRjdG9yX2RlZnMpIHsKKyAgICAg ICAgICAgICRtZXRob2RfZGVmcyAgICAgICAgICAgPSBhcnJheV9tZXJnZSgkY3Rvcl9kZWZzLCAk bWV0aG9kX2RlZnMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCRtZXRob2RfZGVmcykgewor ICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgkYXJnaW5mbyk7CisgICAgICAgICAgICAkdGhp cy0+ZnAtPndyaXRlKHNwcmludGYoVGVtcGxhdGVzOjpmdW5jdGlvbnNfZGVjbCwgc3RydG9sb3dl cigkY2xhc3MtPmNfbmFtZSkpKTsKKyAgICAgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoam9pbign JywgJG1ldGhvZF9kZWZzKSk7CisgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKFRlbXBsYXRl czo6ZnVuY3Rpb25zX2RlY2xfZW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgkY2xhc3Mt PmRlZl90eXBlID09ICdvYmplY3QnICYmICRjbGFzcy0+aW1wbGVtZW50cykgeworICAgICAgICAg ICAgJGlmYWNlX2VudHJpZXMgPSBhcnJheSgpOworICAgICAgICAgICAgZm9yZWFjaCAoJGNsYXNz LT5pbXBsZW1lbnRzIGFzICRpbnRlcmZhY2UpIHsKKyAgICAgICAgICAgICAgICAkaWZhY2VfZW50 cmllc1tdID0gc3RydG9sb3dlcigkaW50ZXJmYWNlKSAuICdfY2UnOworICAgICAgICAgICAgfQor ICAgICAgICAgICAgJGV4dHJhX3JlZ19pbmZvIC49IGFwcmludGYoVGVtcGxhdGVzOjppbXBsZW1l bnRfaW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJy YXkoJ2NlJyA9PiAkY2xhc3MtPmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2lmYWNlcycgPT4gam9pbignLCAnLCAkaWZhY2VfZW50cmllcyksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtX2lmYWNlcycgPT4g Y291bnQoJGlmYWNlX2VudHJpZXMpKSk7CisgICAgICAgIH0KKyAgICAgICAgLyogRG8gbm90IHJl Z2lzdGVyIGd0eXBlIGNvbnN0YW50cyBmb3IgaW50ZXJmYWNlcywgc2luY2UgaW50ZXJmYWNlcyB3 aWxsIAorICAgICAgICAgICBuZXZlciBiZSBpbnN0YW50aWF0ZWQgYW55d2F5LiAqLworICAgICAg ICBpZiAoJGNsYXNzLT5kZWZfdHlwZSAhPSAnaW50ZXJmYWNlJykgeworICAgICAgICAgICAgJHRo aXMtPmd0eXBlX2NvbnN0YW50cyAuPSBzcHJpbnRmKFRlbXBsYXRlczo6Z3R5cGVfY29uc3RhbnQs ICRjbGFzcy0+Y2UsICRjbGFzcy0+dHlwZWNvZGUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0 dXJuIGFycmF5KCdjZScgPT4gJGNsYXNzLT5jZSwKKyAgICAgICAgICAgICAgICAgICAgICdjbGFz cycgPT4gJGNsYXNzLT5pbl9tb2R1bGUgLiAkY2xhc3MtPm5hbWUsCisgICAgICAgICAgICAgICAg ICAgICAnbWV0aG9kcycgPT4gJG1ldGhvZF9kZWZzID8gc3RydG9sb3dlcigkY2xhc3MtPmNfbmFt ZSkgLiAnX21ldGhvZHMnIDogJ05VTEwnLAorICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudCcg PT4gKCRjbGFzcy0+ZGVmX3R5cGUgPT0gJ29iamVjdCcgJiYgJGNsYXNzLT5wYXJlbnQpID8gc3Ry dG9sb3dlcigkY2xhc3MtPnBhcmVudCkgLiAnX2NlJyA6ICdOVUxMJywKKyAgICAgICAgICAgICAg ICAgICAgICdjZV9mbGFncycgPT4gJGNsYXNzLT5jZV9mbGFncyA/IGltcGxvZGUoJ3wnLCAkY2xh c3MtPmNlX2ZsYWdzKSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAndHlwZWNvZGUnID0+ICRj bGFzcy0+dHlwZWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlX2Z1bmMnID0+ICRj cmVhdGVfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICdleHRyYV9yZWdfaW5mbycgPT4gJGV4 dHJhX3JlZ19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgJ3Byb3BpbmZvJyA9PiAkcHJvcF9p bmZvKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB3cml0ZV9jb25zdGFudHMoKQorICAgIHsKKyAg ICAgICAgJGVudW1zX2NvZGUgPSAnJzsKKworICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2Vy LT5lbnVtcyBhcyAkZW51bSkgeworICAgICAgICAgICAgaWYgKCRlbnVtLT50eXBlY29kZSA9PT0g bnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oInVuaGFuZGxlZCBl bnVtIHR5cGUiKTsKKyAgICAgICAgICAgICAgICBmb3JlYWNoICgkZW51bS0+dmFsdWVzIGFzICRu aWNrID0+ICR2YWx1ZSkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgJGVudW1zX2NvZGUgLj0gc3ByaW50ZihUZW1wbGF0ZXM6OnJlZ2lz dGVyX2VudW0sICRlbnVtLT5kZWZfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICRlbnVtLT50eXBlY29kZSwgJHRoaXMtPmxwcmVmaXggLiAnX2NlJyk7CisgICAg ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKHNwcmludGYo VGVtcGxhdGVzOjpyZWdpc3Rlcl9jb25zdGFudHMsICR0aGlzLT5scHJlZml4LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJGVudW1zX2NvZGUgLiAiXG4iIC4gJHRoaXMtPm92ZXJy aWRlcy0+Z2V0X2NvbnN0YW50cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JHRoaXMtPmd0eXBlX2NvbnN0YW50cykpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHdyaXRlX2Z1 bmN0aW9ucygpCisgICAgeworICAgICAgICAkZnVuY19kZWZzID0gYXJyYXkoKTsKKworICAgICAg ICAkdGhpcy0+bG9nX3ByaW50KCIgICUtMjBzIiwgImZ1bmN0aW9ucyIpOworICAgICAgICAkbnVt X3dyaXR0ZW4gPSAkbnVtX3NraXBwZWQgPSAwOworCisgICAgICAgICRkaWN0WydzY29wZSddID0g JHRoaXMtPnByZWZpeDsKKyAgICAgICAgCisgICAgICAgICRmdW5jdGlvbl9hcmdpbmZvcyA9ICcn OworICAgICAgICAKKyAgICAgICAgJG9iamVjdCA9IG5ldyBzdGRjbGFzczsKKyAgICAgICAgJG9i amVjdC0+aW5fbW9kdWxlID0gJHRoaXMtPnByZWZpeDsKKyAgICAgICAgJG9iamVjdC0+Y19uYW1l ID0gJHRoaXMtPnByZWZpeDsKKworICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5mdW5j dGlvbnMgYXMgJGZ1bmN0aW9uKSB7CisgICAgICAgICAgICAkZnVuY19uYW1lID0gJGZ1bmN0aW9u LT5uYW1lOworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+bmFtZSA9PSAkZnVuY3Rpb24tPmNf bmFtZSkgeworICAgICAgICAgICAgICAgICRmdW5jX25hbWUgPSBzdWJzdHIoJGZ1bmN0aW9uLT5u YW1lLCBzdHJsZW4oJHRoaXMtPmxwcmVmaXgpICsgMSk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgICAkZGljdFsnbmFtZSddID0gJGZ1bmNfbmFtZTsKKworICAgICAgICAgICAgLyogc2tpcCBp Z25vcmVkIG1ldGhvZHMgKi8KKyAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5pc19p Z25vcmVkKCRmdW5jdGlvbi0+Y19uYW1lKSkgY29udGludWU7CisKKyAgICAgICAgICAgIHRyeSB7 CisgICAgICAgICAgICAgICAgbGlzdCgkYXJnaW5mbywgJHJlZmxlY3Rpb25fZnVuYykgPSAkdGhp cy0+Z2VuUmVmbGVjdGlvbkFyZ0luZm8oJGZ1bmN0aW9uLCAkb2JqZWN0KTsKKyAgICAgICAgICAg ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoKCRvdmVycmlkZW4gPSAkdGhpcy0+b3ZlcnJpZGVz LT5pc19vdmVycmlkZW4oJGZ1bmN0aW9uLT5jX25hbWUpKSkgeworICAgICAgICAgICAgICAgICAg ICBsaXN0KCRmdW5jX25hbWUsICRmdW5jdGlvbl9vdmVycmlkZSwgJGZsYWdzKSA9ICR0aGlzLT5v dmVycmlkZXMtPmdldF9vdmVycmlkZSgkZnVuY3Rpb24tPmNfbmFtZSk7CisgICAgICAgICAgICAg ICAgICAgIGlmIChlbXB0eSgkZnVuY19uYW1lKSB8fCAkZnVuY19uYW1lID09ICRmdW5jdGlvbi0+ Y19uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmNfbmFtZSA9ICRmdW5jdGlvbi0+ bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uX292ZXJyaWRlID0gcHJlZ19yZXBs YWNlKCchXi4qKFBIUF9NRVRIT0QpLiokIW0nLCAic3RhdGljICQxKCR0aGlzLT5wcmVmaXgsICRm dW5jX25hbWUpIiwgJGZ1bmN0aW9uX292ZXJyaWRlKTsKKyAgICAgICAgICAgICAgICAgICAgJHRo aXMtPndyaXRlX292ZXJyaWRlKCRmdW5jdGlvbl9vdmVycmlkZSwgJGZ1bmN0aW9uLT5jX25hbWUp OworICAgICAgICAgICAgICAgICAgICAkZnVuY19kZWZzW10gPSBzcHJpbnRmKFRlbXBsYXRlczo6 bWV0aG9kX2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICR0aGlzLT5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJGZ1bmNfbmFtZSwgJHJlZmxlY3Rpb25fZnVuYywgJGZsYWdzID8gJGZsYWdzIDogJ1pFTkRf QUNDX1BVQkxJQ3xaRU5EX0FDQ19TVEFUSUMnKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgICAgICAgICAkY29kZSA9ICR0aGlzLT53cml0ZV9jYWxsYWJsZSgkZnVuY3Rp b24sIFRlbXBsYXRlczo6ZnVuY3Rpb25fYm9keSwgdHJ1ZSwgZmFsc2UsICRkaWN0KTsKKyAgICAg ICAgICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgkY29kZSk7CisgICAgICAgICAgICAgICAg ICAgICRmdW5jX2RlZnNbXSA9IHNwcmludGYoVGVtcGxhdGVzOjptZXRob2RfZW50cnksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnByZWZpeCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY19uYW1lLCAkcmVm bGVjdGlvbl9mdW5jLCAnWkVORF9BQ0NfUFVCTElDfFpFTkRfQUNDX1NUQVRJQycpOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkdGhpcy0+ZGl2ZXJ0KCJnZW4iLCAiJXMgICUt MTFzICVzOjolc1xuIiwgJG92ZXJyaWRlbj8iJSUiOiIgICIsICJmdW5jdGlvbiIsICR0aGlzLT5w cmVmaXgsICRmdW5jdGlvbi0+bmFtZSk7CisgICAgICAgICAgICAgICAgJG51bV93cml0dGVuKys7 CisgICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJmdW5jcyJdLT53cml0dGVuKCk7CisKKyAg ICAgICAgICAgICAgICBpZiAoJGFyZ2luZm8gIT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAg ICAgJGZ1bmN0aW9uX2FyZ2luZm9zIC49ICRhcmdpbmZvOworICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgeworICAgICAgICAgICAgICAgICR0aGlz LT5kaXZlcnQoIm5vdGdlbiIsICIgICUtMTFzICVzOjolczogJXNcbiIsICJmdW5jdGlvbiIsICR0 aGlzLT5wcmVmaXgsICRmdW5jdGlvbi0+bmFtZSwgJGUtPmdldE1lc3NhZ2UoKSk7CisgICAgICAg ICAgICAgICAgJG51bV9za2lwcGVkKys7CisgICAgICAgICAgICAgICAgJHRoaXMtPmNvdmVyWyJm dW5jcyJdLT5za2lwcGVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBp ZiAoJHRoaXMtPm92ZXJyaWRlcy0+aGF2ZV9leHRyYV9tZXRob2RzKCR0aGlzLT5wcmVmaXgpKSB7 CisgICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfZXh0cmFfbWV0aG9k cygkdGhpcy0+cHJlZml4KSBhcyAkZnVuY19uYW1lID0+ICRvdmVycmlkZSkgeworICAgICAgICAg ICAgICAgIGxpc3QoJGZ1bmNfYm9keSwgJGZsYWdzKSA9ICRvdmVycmlkZTsKKyAgICAgICAgICAg ICAgICBsaXN0KCRhcmdpbmZvLCAkcmVmbGVjdGlvbl9mdW5jKSA9ICR0aGlzLT5nZW5SZWZsZWN0 aW9uQXJnSW5mbyhudWxsLCAkb2JqZWN0LCAkZnVuY19uYW1lKTsKKworICAgICAgICAgICAgICAg ICRmdW5jX2JvZHkgPSBwcmVnX3JlcGxhY2UoJyFeLiooUEhQX01FVEhPRCkuKiQhbScsICJzdGF0 aWMgJDEoJHRoaXMtPnByZWZpeCwgJGZ1bmNfbmFtZSkiLCAkZnVuY19ib2R5KTsKKyAgICAgICAg ICAgICAgICAkdGhpcy0+d3JpdGVfb3ZlcnJpZGUoJGZ1bmNfYm9keSwgJHRoaXMtPnByZWZpeCwg JGZ1bmNfbmFtZSk7CisgICAgICAgICAgICAgICAgJGZ1bmNfZGVmc1tdID0gc3ByaW50ZihUZW1w bGF0ZXM6Om1ldGhvZF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICR0aGlzLT5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAkZnVuY19uYW1lLCAkcmVmbGVjdGlvbl9mdW5jLCAnWkVORF9BQ0NfUFVCTElDfFpFTkRfQUND X1NUQVRJQycpOworICAgICAgICAgICAgICAgICR0aGlzLT5kaXZlcnQoImdlbiIsICIlJSUlICAl LTExcyAlczo6JXNcbiIsICJmdW5jdGlvbiIsICR0aGlzLT5wcmVmaXgsICRmdW5jX25hbWUpOwor ICAgICAgICAgICAgICAgICRudW1fd3JpdHRlbisrOworCisgICAgICAgICAgICAgICAgaWYgKCRh cmdpbmZvICE9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbl9hcmdpbmZv cyAuPSAkYXJnaW5mbzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg IH0KKworICAgICAgICBzb3J0KCRmdW5jX2RlZnMpOworICAgICAgICBpZiAoJGZ1bmNfZGVmcykg eworICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZSgkZnVuY3Rpb25fYXJnaW5mb3MpOworICAg ICAgICAgICAgJHRoaXMtPmZwLT53cml0ZShzcHJpbnRmKFRlbXBsYXRlczo6ZnVuY3Rpb25zX2Rl Y2wsIHN0cnRvbG93ZXIoJHRoaXMtPmxwcmVmaXgpKSk7CisgICAgICAgICAgICAkdGhpcy0+ZnAt PndyaXRlKGpvaW4oJycsICRmdW5jX2RlZnMpKTsKKyAgICAgICAgICAgICR0aGlzLT5mcC0+d3Jp dGUoVGVtcGxhdGVzOjpmdW5jdGlvbnNfZGVjbF9lbmQpOworICAgICAgICB9CisKKyAgICAgICAg JHRoaXMtPmxvZ19wcmludCgiKCVkIHdyaXR0ZW4sICVkIHNraXBwZWQpXG4iLCAkbnVtX3dyaXR0 ZW4sICRudW1fc2tpcHBlZCk7CisgICAgICAgIHJldHVybiAkZnVuY19kZWZzOworICAgIH0KKwor ICAgIGZ1bmN0aW9uIHdyaXRlX3Byb3BfbGlzdHMoKQorICAgIHsKKyAgICAgICAgZ2xvYmFsICAk Y2xhc3NfcHJvcF9saXN0X2hlYWRlciwKKyAgICAgICAgICAgICAgICAkY2xhc3NfcHJvcF9saXN0 X2Zvb3RlcjsKKyAgICAgICAgCisgICAgICAgICR0aGlzLT5mcC0+d3JpdGUoIlxuIik7CisgICAg ICAgIGZvcmVhY2ggKCR0aGlzLT5wYXJzZXItPm9iamVjdHMgYXMgJG9iamVjdCkgeworICAgICAg ICAgICAgaWYgKGNvdW50KCRvYmplY3QtPmZpZWxkcykgPT0gMCkgY29udGludWU7CisKKyAgICAg ICAgICAgICR0aGlzLT5mcC0+d3JpdGUoc3ByaW50ZigkY2xhc3NfcHJvcF9saXN0X2hlYWRlciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydG9sb3dlcigkb2JqZWN0LT5pbl9t b2R1bGUpIC4gJ18nIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydG9sb3dl cigkb2JqZWN0LT5uYW1lKSkpOworICAgICAgICAgICAgZm9yZWFjaCAoJG9iamVjdC0+ZmllbGRz IGFzICRmaWVsZF9kZWYpIHsKKyAgICAgICAgICAgICAgICBsaXN0KCwgJGZpZWxkX25hbWUpID0g JGZpZWxkX2RlZjsKKyAgICAgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlKCJcdFwiJGZpZWxk X25hbWVcIixcbiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0 ZSgkY2xhc3NfcHJvcF9saXN0X2Zvb3Rlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5j dGlvbiB3cml0ZV9jb3ZlcmFnZV9pbmZvKCkKKyAgICB7CisgICAgICAgICR0aGlzLT5sb2dfcHJp bnQoIlxuXG4iKTsKKyAgICAgICAgJHRoaXMtPmxvZ19wcmludCgkdGhpcy0+bWFrZV9oZWFkZXIo IiR0aGlzLT5wcmVmaXggQ292ZXJhZ2UiKSk7CisKKyAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmNv dmVyIGFzICRjb3ZlcmFnZSkgeworICAgICAgICAgICAgbGlzdCgkbmFtZSwgJHdyaXR0ZW4sICR0 b3RhbCwgJHBlcmNlbnQpID0gJGNvdmVyYWdlLT5nZXRfc3RhdHMoKTsKKyAgICAgICAgICAgIGlm ICgkdG90YWwpIHsKKyAgICAgICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCIlLTIwczogJTUu MWYlJSB3cml0dGVuICglZC8lZClcbiIsICRuYW1lLCAkcGVyY2VudCwgJHdyaXR0ZW4sICR0b3Rh bCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICR0aGlzLT5sb2dfcHJp bnQoIiUtMjBzOiBub25lIGZvdW5kXG4iLCAkbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAg IH0KKyAgICAgICAgJHRoaXMtPmxvZ19wcmludCgiXG5cbiIpOworICAgIH0KKworICAgIGZ1bmN0 aW9uIHdyaXRlX2NsYXNzX2VudHJpZXMoKQorICAgIHsKKyAgICAgICAgJHRoaXMtPmZwLT53cml0 ZSgiXG4iKTsKKyAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+aW50ZXJmYWNlcyBhcyAk aW50ZXJmYWNlKSB7CisgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2hlYWRlcihzcHJpbnRm KFRlbXBsYXRlczo6Y2xhc3NfZW50cnksICRpbnRlcmZhY2UtPmNlKSk7CisgICAgICAgIH0KKwor ICAgICAgICBmb3JlYWNoICgkdGhpcy0+cGFyc2VyLT5vYmplY3RzIGFzICRvYmplY3QpIHsKKyAg ICAgICAgICAgIGlmICghJHRoaXMtPm92ZXJyaWRlcy0+aXNfaWdub3JlZCgkb2JqZWN0LT5jX25h bWUpKSB7CisgICAgICAgICAgICAgICAgJHRoaXMtPmZwLT53cml0ZV9oZWFkZXIoc3ByaW50ZihU ZW1wbGF0ZXM6OmNsYXNzX2VudHJ5LCAkb2JqZWN0LT5jZSkpOworICAgICAgICAgICAgfQorICAg ICAgICB9CisKKyAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnBhcnNlci0+Ym94ZWQgYXMgJGJveGVk KSB7CisgICAgICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2hlYWRlcihzcHJpbnRmKFRlbXBsYXRl czo6Y2xhc3NfZW50cnksICRib3hlZC0+Y2UpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcmVh Y2ggKCR0aGlzLT5wYXJzZXItPnBvaW50ZXJzIGFzICRwb2ludGVyKSB7CisgICAgICAgICAgICAk dGhpcy0+ZnAtPndyaXRlX2hlYWRlcihzcHJpbnRmKFRlbXBsYXRlczo6Y2xhc3NfZW50cnksICRw b2ludGVyLT5jZSkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCR0aGlzLT5wYXJzZXItPmZ1 bmN0aW9ucyB8fCAkdGhpcy0+cGFyc2VyLT5lbnVtcykgeworICAgICAgICAgICAgJHRoaXMtPmZw LT53cml0ZV9oZWFkZXIoc3ByaW50ZihUZW1wbGF0ZXM6OmNsYXNzX2VudHJ5LCAkdGhpcy0+bHBy ZWZpeCAuICdfY2UnKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBtYWtlX2hl YWRlcigkc3RyaW5nLCAkd2lkdGggPSA3MiwgJGNoYXIgPSAnPScpCisgICAgeworICAgICAgICAk cmVzID0gIlxuIiAuIHN0cl9yZXBlYXQoJGNoYXIsICR3aWR0aCkgLiAiXG4iOworICAgICAgICAk cmVzIC49IHN0cl9wYWQoJHN0cmluZywgJHdpZHRoLCAiICIsIFNUUl9QQURfQk9USCkgLiAiXG4i OworICAgICAgICAkcmVzIC49IHN0cl9yZXBlYXQoJGNoYXIsICR3aWR0aCkgLiAiXG4iOworCisg ICAgICAgIHJldHVybiAkcmVzOworICAgIH0KKworICAgIGZ1bmN0aW9uIHdyaXRlX3NvdXJjZSgk c2F2ZWZpbGUpCisgICAgeworICAgICAgICAkdGhpcy0+bm90X2dlbmVyYXRlZF9saXN0ID0gYXJy YXkoKTsKKyAgICAgICAgJHRoaXMtPmxvZ19wcmludCgkdGhpcy0+bWFrZV9oZWFkZXIoIiR0aGlz LT5wcmVmaXggU3VtbWFyeSIpKTsKKworICAgICAgICAkdGhpcy0+ZnAgPSBuZXcgTGluZU91dHB1 dCgkc2F2ZWZpbGUpOworICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2hlYWRlcigiI2luY2x1ZGUg XCJwaHBfZ3RrLmhcIlxuIik7CisgICAgICAgICR0aGlzLT5mcC0+d3JpdGVfaGVhZGVyKCJcbiNp ZiBIQVZFX1BIUF9HVEtcbiIpOworICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2hlYWRlcigkdGhp cy0+b3ZlcnJpZGVzLT5nZXRfaGVhZGVycygpKTsKKyAgICAgICAgJHRoaXMtPndyaXRlX2NsYXNz X2VudHJpZXMoKTsKKyAgICAgICAgJHRoaXMtPndyaXRlX2NsYXNzZXMoKTsKKyAgICAgICAgJHRo aXMtPndyaXRlX2NvbnN0YW50cygpOworICAgICAgICAkdGhpcy0+ZnAtPndyaXRlX2FsbCgiXG4j ZW5kaWYgLyogSEFWRV9QSFBfR1RLICovXG4iKTsKKworICAgICAgICAkdGhpcy0+ZnAtPnNhdmUo KTsKKworICAgICAgICAkdGhpcy0+bG9nKCJcblxuIik7CisgICAgICAgICR0aGlzLT5sb2coJHRo aXMtPm1ha2VfaGVhZGVyKCIkdGhpcy0+cHJlZml4IEdlbmVyYXRlZCBJdGVtcyIpKTsKKyAgICAg ICAgJHRoaXMtPmxvZygiJSUlJSAtIG92ZXJyaWRkZW5cblxuIik7CisgICAgICAgICR0aGlzLT5s b2coIiVzIiwgJHRoaXMtPmRpdmVyc2lvbnNbImdlbiJdKTsKKworICAgICAgICAkdGhpcy0+bG9n KCJcblxuIik7CisgICAgICAgICR0aGlzLT5sb2coJHRoaXMtPm1ha2VfaGVhZGVyKCIkdGhpcy0+ cHJlZml4IE5vdCBHZW5lcmF0ZWQgSXRlbXMiKSk7CisgICAgICAgIGlmICghZW1wdHkoJHRoaXMt PmRpdmVyc2lvbnNbIm5vdGdlbiJdKSkgeworICAgICAgICAgICAgJHRoaXMtPmxvZygiJXMiLCAk dGhpcy0+ZGl2ZXJzaW9uc1sibm90Z2VuIl0pOworICAgICAgICB9CisKKyAgICAgICAgJHRoaXMt PndyaXRlX2NvdmVyYWdlX2luZm8oKTsKKyAgICAgICAgJHRoaXMtPndyaXRlX3VudXNlZF9pbmZv KCk7CisgICAgfQorICAgIAorICAgIAorICAgIAorICAgIC8qKgorICAgICogICBnZW5lcmF0ZXMg YW4gWkVORF9BUkdJTkZPIGVudHJ5IGZvciB0aGlzIG1ldGhvZAorICAgICogICBiYXNlZCBvbiB0 aGUgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBpdAorICAgICoKKyAgICAqICAgQHBhcmFtIE1ldGhv ZCAkbWV0aG9kICAgICAgICAgICBUaGUgbWV0aG9kIChvciBjb25zdHJ1Y3RvcikgdG8gZ2VuZXJh dGUgdGhlIGFyZ2luZm8gZm9yIChpZiBOVUxMLCB0aGVuIHdlIGNoZWNrIGZvciBvdmVycmlkZGVu IG9ubHkpCisgICAgKiAgIEBwYXJhbSBDbGFzcyAgJGNsYXNzICAgICAgICAgICAgVGhlIGNsYXNz IG9mIHRoZSBtZXRob2QKKyAgICAqICAgQHBhcmFtIHN0cmluZyAkZGV0X21ldGhvZF9uYW1lICBT cGVjaWFsIGRldGVybWluZWQgbWV0aG9kIG5hbWUgaWYgaXQgY2FuJ3QgYmUgY2FsY3VsYXRlZCBm cm9tIHRoZSBtZXRob2Qgb2JqZWN0CisgICAgKiAgIEByZXR1cm4gYXJyYXkgVGhlIGFyZ2luZm8g KHN0cmluZykgYW5kIHRoZSBuYW1lIG9mIHRoZSByZWZsZWN0aW9uIGZ1bmN0aW9uCisgICAgKi8K KyAgICBmdW5jdGlvbiBnZW5SZWZsZWN0aW9uQXJnSW5mbygkbWV0aG9kLCAkY2xhc3MsICRkZXRf bWV0aG9kX25hbWUgPSBudWxsKQorICAgIHsKKyAgICAgICAgaWYgKCRkZXRfbWV0aG9kX25hbWUg IT09IG51bGwpIHsKKyAgICAgICAgICAgICRsZW4gPSAyMCAtIHN0cmxlbigkZGV0X21ldGhvZF9u YW1lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRsZW4gPSAyMCAtIHN0cmxlbigk bWV0aG9kLT5uYW1lKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoJGxlbiA8IDApIHsgJGxlbiA9 IDA7IH0KKworICAgICAgICBpZiAoJG1ldGhvZCA9PT0gbnVsbCB8fCAoJG92ZXJyaWRlbiA9ICR0 aGlzLT5vdmVycmlkZXMtPmlzX292ZXJyaWRlbigkbWV0aG9kLT5jX25hbWUpKSkgeworICAgICAg ICAgICAgLy9vdmVycmlkZGVuIGZ1bmN0aW9uIC0gZXh0cmEgYXJnaW5mbyBpbiBvdmVycmlkZSBm aWxlPworICAgICAgICAgICAgJGNsYXNzX25hbWUgID0gJGNsYXNzLT5jX25hbWU7CisgICAgICAg ICAgICBpZiAoJGRldF9tZXRob2RfbmFtZSAhPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICRt ZXRob2RfbmFtZSA9ICRkZXRfbWV0aG9kX25hbWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgICAgICRvdmVycmlkZWluZm8gPSAkdGhpcy0+b3ZlcnJpZGVzLT5nZXRfb3ZlcnJp ZGUoJG1ldGhvZC0+Y19uYW1lKTsKKyAgICAgICAgICAgICAgICAkbWV0aG9kX25hbWUgPSAkb3Zl cnJpZGVpbmZvWzBdOworICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkbWV0aG9kX25hbWUpIHx8 ICRtZXRob2RfbmFtZSA9PSAkbWV0aG9kLT5jX25hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAg JG1ldGhvZF9uYW1lID0gJG1ldGhvZC0+bmFtZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIGlmICgkdGhpcy0+b3ZlcnJpZGVzLT5oYXNfZXh0cmFfYXJn aW5mbygkY2xhc3NfbmFtZSwgJG1ldGhvZF9uYW1lKSkgeworICAgICAgICAgICAgICAgICRyZWZs ZWN0aW9uX2Z1bmNuYW1lID0gZ3RrR2VuZXJhdG9yOjpnZXRSZWZsZWN0aW9uRnVuY05hbWUoJG1l dGhvZCwgJGNsYXNzLCAkZGV0X21ldGhvZF9uYW1lKTsKKyAgICAgICAgICAgICAgICAkcmVmbGVj dGlvbl9mdW5jID0gc3RyX3JlcGVhdCgnICcsICRsZW4pIC4gJHJlZmxlY3Rpb25fZnVuY25hbWU7 CisKKyAgICAgICAgICAgICAgICAkYXJnaW5mbyA9IHN0cl9yZXBsYWNlKCdBUkdJTkZPX05BTUUn LCAkcmVmbGVjdGlvbl9mdW5jbmFtZSwgJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X2V4dHJhX2FyZ2lu Zm8oJGNsYXNzX25hbWUsICRtZXRob2RfbmFtZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICAgICAvL25vIGFyZ2luZm8KKyAgICAgICAgICAgICAgICAkcmVmbGVjdGlvbl9m dW5jID0gc3RyX3JlcGVhdCgnICcsICRsZW4pIC4gJ05VTEwnOworICAgICAgICAgICAgICAgICRh cmdpbmZvID0gbnVsbDsKKyAgICAgICAgICAgICAgICAvL3Zhcl9kdW1wKCdObyBhcmdpbmZvIGZv ciBvdmVycmlkZGVuICcgLiAkcmVmbGVjdGlvbl9mdW5jbmFtZSk7CisgICAgICAgICAgICB9CisK KyAgICAgICAgfSBlbHNlIGlmIChjb3VudCgkbWV0aG9kLT5wYXJhbXMpID09IDApIHsKKyAgICAg ICAgICAgICRyZWZsZWN0aW9uX2Z1bmMgPSBzdHJfcmVwZWF0KCcgJywgJGxlbikgLiAnTlVMTCc7 CisgICAgICAgICAgICAkYXJnaW5mbyA9IG51bGw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAkcmVmbGVjdGlvbl9mdW5jbmFtZSA9IGd0a0dlbmVyYXRvcjo6Z2V0UmVmbGVjdGlvbkZ1 bmNOYW1lKCRtZXRob2QsICRjbGFzcyk7CisgICAgICAgICAgICAkcmVmbGVjdGlvbl9mdW5jID0g c3RyX3JlcGVhdCgnICcsICRsZW4pIC4gJHJlZmxlY3Rpb25fZnVuY25hbWU7CisKKyAgICAgICAg ICAgICRwYXJhbV9jb3VudCA9IDA7CisgICAgICAgICAgICAkb3B0cGFyYW1fY291bnQgPSAwOwor ICAgICAgICAgICAgJGFyZ3BhcmFtcyA9ICcnOworICAgICAgICAgICAgZm9yZWFjaCAoJG1ldGhv ZC0+cGFyYW1zIGFzICRwYXJhbWluZm8pIHsKKyAgICAgICAgICAgICAgICAkcGFyYW1fY291bnQr KzsKKyAgICAgICAgICAgICAgICBpZiAoJHBhcmFtaW5mb1syXSAhPT0gbnVsbCkgeworICAgICAg ICAgICAgICAgICAgICAvL2lmIHRoaXMgaXMgc2V0LCB3ZSd2ZSBnb3QgYSBkZWZhdWx0IHZhbHVl IC0+IG9wdGlvbmFsIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICAkb3B0cGFyYW1fY291 bnQrKzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAkcGFyYW10eXBlID0g c3RyX3JlcGxhY2UoJ2NvbnN0LScsICcnLCBzdHJfcmVwbGFjZSgnKicsICcnLCAkcGFyYW1pbmZv WzBdKSk7CisgICAgICAgICAgICAgICAgaWYgKGd0a0dlbmVyYXRvcjo6aXNfcGhwX3R5cGUoJHBh cmFtdHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgJGFyZ3BhcmFtcyAuPSBzcHJpbnRmKFRl bXBsYXRlczo6cmVmbGVjdGlvbl9hcmcsICRwYXJhbWluZm9bMV0pOworICAgICAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRhcmdwYXJhbXMgLj0gc3ByaW50ZihUZW1w bGF0ZXM6OnJlZmxlY3Rpb25fb2JqYXJnLCAkcGFyYW1pbmZvWzFdLCAkcGFyYW10eXBlKTsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoJG9wdHBhcmFt X2NvdW50ID4gMCkgeworICAgICAgICAgICAgICAgIC8vd2l0aCBvcHRpb25hbCBjb3VudAorICAg ICAgICAgICAgICAgICRhcmdpbmZvID0gc3ByaW50ZihUZW1wbGF0ZXM6OnJlZmxlY3Rpb25fYXJn aW5mb2V4X2JlZ2luLCAkcmVmbGVjdGlvbl9mdW5jbmFtZSwgJHBhcmFtX2NvdW50IC0gJG9wdHBh cmFtX2NvdW50KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy9zaW1w bGUgb25lCisgICAgICAgICAgICAgICAgJGFyZ2luZm8gPSBzcHJpbnRmKFRlbXBsYXRlczo6cmVm bGVjdGlvbl9hcmdpbmZvX2JlZ2luLCAkcmVmbGVjdGlvbl9mdW5jbmFtZSk7CisgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgICRhcmdpbmZvIC49ICRhcmdwYXJhbXM7CisgICAgICAgICAgICAk YXJnaW5mbyAuPSBUZW1wbGF0ZXM6OnJlZmxlY3Rpb25fYXJnaW5mb19lbmQ7CisgICAgICAgIH0K KyAgICAgICAgcmV0dXJuIGFycmF5KCRhcmdpbmZvLCAkcmVmbGVjdGlvbl9mdW5jKTsKKyAgICB9 Ly9mdW5jdGlvbiBnZW5SZWZsZWN0aW9uQXJnSW5mbygkbWV0aG9kLCAkY2xhc3MpCisKKworCisg ICAgZnVuY3Rpb24gZ2V0UmVmbGVjdGlvbkZ1bmNOYW1lKCRtZXRob2QsICRjbGFzcywgJGRldF9t ZXRob2RfbmFtZSA9IG51bGwpCisgICAgeworICAgICAgICBpZiAoJG1ldGhvZCA9PT0gbnVsbCkg eworICAgICAgICAgICAgJG1ldGhvZCA9IG5ldyBzdGRjbGFzczsKKyAgICAgICAgICAgICRtZXRo b2QtPm5hbWUgPSAkZGV0X21ldGhvZF9uYW1lOworICAgICAgICB9CisgICAgICAgIHJldHVybiAn YXJnaW5mb18nIC4gc3RydG9sb3dlcigkY2xhc3MtPmluX21vZHVsZSkgLiAnXycgLiBzdHJ0b2xv d2VyKCRjbGFzcy0+Y19uYW1lKSAuICdfJy4gJG1ldGhvZC0+bmFtZTsKKyAgICB9Ly9mdW5jdGlv biBnZXRSZWZsZWN0aW9uRnVuY05hbWUoJG1ldGhvZCwgJGNsYXNzLCAkZGV0X21ldGhvZF9uYW1l ID0gbnVsbCkKKworCisKKyAgICBmdW5jdGlvbiB3cml0ZV91bnVzZWRfaW5mbygpCisgICAgewor ICAgICAgICAkdW51c2VkID0gJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X3VudXNlZF9hcmdpbmZvKCk7 CisgICAgICAgIAorICAgICAgICAkdW51c2VkX2NvdW50ID0gMDsKKyAgICAgICAgJG91dHB1dCA9 ICcnOworICAgICAgICBmb3JlYWNoICgkdW51c2VkIGFzICRjbGFzcyA9PiAkbWV0aG9kcykgewor ICAgICAgICAgICAgZm9yZWFjaCAoJG1ldGhvZHMgYXMgJG1ldGhvZCA9PiAkdHJ1ZSkgeworICAg ICAgICAgICAgICAgICR1bnVzZWRfY291bnQrKzsKKyAgICAgICAgICAgICAgICBsaXN0KCRsaW5l LCAkZmlsZW5hbWUpID0gJHRoaXMtPm92ZXJyaWRlcy0+Z2V0X2xpbmVfaW5mbygiJGNsYXNzLiRt ZXRob2QuYXJnaW5mbyIpOworICAgICAgICAgICAgICAgICRvdXRwdXQgLj0gJyAnIC4gc3RyX3Bh ZCgkY2xhc3MgLiAnOjonIC4gJG1ldGhvZCwgNDApIC4gJyAnIC4gJGZpbGVuYW1lIC4gJyMnIC4g JGxpbmUgLiAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICgkdW51 c2VkX2NvdW50ID4gMCkgeworICAgICAgICAgICAgJHRoaXMtPmxvZ19wcmludCgnVW51c2VkIGFy Z2luZm8gb3ZlcnJpZGVzOicgLiAiXG4iKTsKKyAgICAgICAgICAgICR0aGlzLT5sb2dfcHJpbnQo JG91dHB1dCk7CisgICAgICAgICAgICAkdGhpcy0+bG9nX3ByaW50KCJcblxuIik7CisgICAgICAg IH0KKyAgICB9CisKKworCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIHRoZSBnaXZlbiB0eXBl IGlzIGEgc2ltcGxlIHBocCB0eXBlCisgICAgICoKKyAgICAgKiBBbGwgdW5zdXBwb3J0ZWQgY2xh c3NlcyBoYXZlIHRvIGJlIGhlcmUgYXMgcGhwNSBmdW5jdGlvbnMgd2VpcmQgaWYKKyAgICAgKiAg cmVmbGVjdGlvbiBpcyB1c2VkIHdpdGggdGhpcyBvbmVzLi4uCisgICAgICogVXNlIGdlbmVyYXRv ci9yZWZsZWN0aW9uX2NsYXNzX2NoZWNrZXIucGhwIHRvIG1pc3NpbmcgY2xhc3NlcywgYW5kCisg ICAgICogIGFkZCB0aGVtIGhlcmUKKyAgICAgKgorICAgICAqIEBhY2Nlc3MgcHVibGljCisgICAg ICogQHBhcmFtICBzdHJpbmcgJGluX3R5cGUgVGhlIEMgdHlwZS4KKyAgICAgKiBAcmV0dXJuIGJv b2xlYW4gdHJ1ZSBpZiBpdHMgYSBzaW1wbGUgdHlwZQorICAgICAqLworICAgIGZ1bmN0aW9uIGlz X3BocF90eXBlKCRpbl90eXBlKQorICAgIHsKKyAgICAgICAgLy8gS2V5ID0gQyBUeXBlLCBWYWwg PSBQSFAgdHlwZQorICAgICAgICBzdGF0aWMgJHR5cGVfbWFwID0gYXJyYXkoJ25vbmUnICAgICAg ICAgICA9PiAndm9pZCcsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFy KicgICAgICAgICAgPT4gJ3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnZ2NoYXIqJyAgICAgICAgID0+ICdzdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2NvbnN0LWNoYXIqJyAgICA9PiAnc3RyaW5nJywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdjb25zdC1nY2hhcionICAgPT4gJ3N0cmluZycsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nJyAgICAgICAgID0+ICdzdHJpbmcnLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRpY19zdHJpbmcnICA9PiAnc3RyaW5n JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNpZ25lZC1jaGFyKicgPT4g J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VjaGFyKicgICAg ICAgID0+ICdzdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hhcicgICAgICAgICAgID0+ICdjaGFyJywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnY2hhcicgICAgICAgICAgPT4gJ2No YXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1Y2hhcicgICAgICAgICA9 PiAnY2hhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdpbnQnICAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2ludCcgICAgICAgICAgID0+ICdpbnQnLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1aW50JyAgICAgICAgICA9PiAnaW50JywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG9ydCcgICAgICAgICAgPT4gJ2lu dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3Nob3J0JyAgICAgICAgID0+ ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1c2hvcnQnICAgICAg ICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb25nJyAgICAg ICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xvbmcn ICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1 bG9uZycgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1aW50OCcgICAgICAgICA9PiAn aW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnaW50OCcgICAgICAgICAg PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3VpbnQxNicgICAg ICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dpbnQxNicg ICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdndWlu dDMyJyAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Z2ludDMyJyAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3NpemUnICAgICAgICAgID0+ ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvL2FsbCBlbnVtZXJhdGlvbiBjbGFzc2VzIGhlcmUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZ3RrIGVudW1zCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnR3RrQWNjZWxGbGFncycgICAgICAgID0+ICdpbnQnLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0FuY2hvclR5cGUnICAgICAgICA9PiAnaW50 JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtBcnJvd1R5cGUnICAgICAg ICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrQXR0YWNo T3B0aW9ucycgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J0d0a0J1dHRvbkJveFN0eWxlJyAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdHdGtCdXR0b25zVHlwZScgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnR3RrQ2FsZW5kYXJEaXNwbGF5T3B0aW9ucycgPT4gJ2ludCcs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrQ2VsbFJlbmRlcmVyU3RhdGUn ID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0Nvcm5lclR5 cGUnICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH dGtDVHJlZUV4cGFuZGVyU3R5bGUnPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnR3RrQ1RyZWVMaW5lU3R5bGUnICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ0d0a0N1cnZlVHlwZScgICAgICAgICA9PiAnaW50JywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtEZWxldGVUeXBlJyAgICAgICAgPT4gJ2lu dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrRGVzdHJveU5vdGlmeScg ICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0RpYWxv Z0ZsYWdzJyAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdHdGtEaXJlY3Rpb25UeXBlJyAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnR3RrRXhwYW5kZXJTdHlsZScgICAgID0+ICdpbnQnLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ0d0a0ZpbGVDaG9vc2VyQWN0aW9uJyA9PiAnaW50JywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtGdW5jdGlvbicgICAgICAgICAgPT4g J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrSWNvbkxvb2t1cEZs YWdzJyAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0lj b25TaXplJyAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdHdGtJTVByZWVkaXRTdHlsZScgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnR3RrSU1TdGF0dXNTdHlsZScgICAgID0+ICdpbnQnLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a0p1c3RpZmljYXRpb24nICAgICA9PiAnaW50JywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtNYXRjaFR5cGUnICAgICAgICAg PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrTWVzc2FnZVR5 cGUnICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0 a01ldHJpY1R5cGUnICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdHdGtNb3ZlbWVudFN0ZXAnICAgICAgPT4gJ2ludCcsIAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ0d0a09yaWVudGF0aW9uJyAgICAgICA9PiAnaW50JywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQYWNrRGlyZWN0aW9uJyAgICAgPT4gJ2lu dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGFja1R5cGUnICAgICAg ICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1BhdGhQ cmlvcml0eVR5cGUnICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdHdGtQYXRoVHlwZScgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnR3RrUG9saWN5VHlwZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bvc2l0aW9uVHlwZScgICAgICA9PiAnaW50JywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcmV2aWV3VHlwZScgICAgICAgPT4g J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUHJvZ3Jlc3NCYXJP cmllbnRhdGlvbicgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn R3RrUHJvZ3Jlc3NCYXJTdHlsZScgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ0d0a1JlbGllZlN0eWxlJyAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdHdGtSZXNpemVNb2RlJyAgICAgICAgPT4gJ2ludCcsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU2Nyb2xsU3RlcCcgICAgICAgID0+ICdp bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Njcm9sbFR5cGUnICAg ICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTZWxl Y3Rpb25Nb2RlJyAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnR3RrU2hhZG93VHlwZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ0d0a1NpZGVUeXBlJyAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdHdGtTaXplR3JvdXBNb2RlJyAgICAgPT4gJ2ludCcsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU3BpbkJ1dHRvblVwZGF0ZVBvbGlj eScgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU3BpblR5 cGUnICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J0d0a1N0YXRlVHlwZScgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdHdGtTdG9ja0l0ZW0nICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnR3RrU3VibWVudURpcmVjdGlvbicgID0+ICdpbnQnLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1N1Ym1lbnVQbGFjZW1lbnQnICA9PiAn aW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtUZXh0RGlyZWN0aW9u JyAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrVGV4 dFNlYXJjaEZsYWdzJyAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ0d0a1RleHRXaW5kb3dUeXBlJyAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdHdGtUb29sYmFyU3R5bGUnICAgICAgPT4gJ2ludCcsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnR3RrVHJlZUNlbGxEYXRhRnVuYycgID0+ICdpbnQnLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1RyZWVNb2RlbCcgICAgICAgICA9 PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtUcmVlUGF0aCcg ICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3Rr VHJlZVZpZXdDb2x1bW5TaXppbmcnID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ0d0a1RyZWVWaWV3RHJvcFBvc2l0aW9uJyA9PiAnaW50JywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdHdGtUeXBlJyAgICAgICAgICAgICAgPT4gJ2ludCcsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrVUlNYW5hZ2VySXRlbVR5cGUnID0+ ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1VwZGF0ZVR5cGUn ICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtW aXNpYmlsaXR5JyAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnR3RrV2luZG93UG9zaXRpb24nICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ0d0a1dpbmRvd1R5cGUnICAgICAgICA9PiAnaW50JywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtXcmFwTW9kZScgICAgICAgICAgPT4gJ2ludCcs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrU29ydFR5cGUnICAgICAgICAg ID0+ICdpbnQnLAorCQkJCQkJCQkgLy8gMi4xMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ0d0a1VuaXQnICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdHdGtUcmVlVmlld0dyaWRMaW5lcycgICAgICAgICAgPT4gJ2ludCcsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrVGV4dEJ1ZmZlclRhcmdldEluZm8nICAg ICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Nl bnNpdGl2aXR5VHlwZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ0d0a1JlY2VudFNvcnRUeXBlJyAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtSZWNlbnRNYW5hZ2VyRXJyb3InICAgICAgICAg ID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1JlY2VudENo b29zZXJFcnJvciAnICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdHdGtQcmludFN0YXR1cycgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnR3RrUHJpbnRRdWFsaXR5JyAgICAgICAgICA9PiAnaW50JywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcmludFBhZ2VzJyAgICAgICAg PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUHJpbnRPcGVy YXRpb25SZXN1bHQnICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ0d0a1ByaW50T3BlcmF0aW9uQWN0aW9uJyAgICAgICAgICA9PiAnaW50JywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcmludEVycm9yJyAgICAgICAgICA9 PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQcmludER1cGxl eCcgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn R3RrUGFnZVNldCcgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ0d0a1BhZ2VPcmllbnRhdGlvbicgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnR3RrQ2VsbFJlbmRlcmVyQWNjZWxNb2RlJyAgICAgICAg ICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtBc3Npc3Rh bnRQYWdlVHlwZScgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvL2dkayBlbnVtcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dk a0F4aXNVc2UnICAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdHZGtCaXRtYXAnICAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnR2RrQnl0ZU9yZGVyJyAgICAgICAgID0+ICdpbnQnLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0NhcFN0eWxlJyAgICAgICAgICA9PiAnaW50 JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtDb2xvcnNwYWNlJyAgICAg ICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrQ3Vyc29y VHlwZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J0dka0Nyb3NzaW5nTW9kZScgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdHZGtEcmFnQWN0aW9uJyAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnR2RrRHJhZ1Byb3RvY29sJyAgICAgID0+ICdpbnQnLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0V2ZW50RXhwb3NlJyAgICAgICA9PiAn aW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtFdmVudEtleScgICAg ICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrRXZl bnRTZWxlY3Rpb24nICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ0dka0V2ZW50VHlwZScgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdHZGtFdmVudE1hc2snICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnR2RrRXh0ZW5zaW9uTW9kZScgICAgID0+ICdpbnQnLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0dyYXZpdHknICAgICAgICAgICA9 PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtGaWxsJyAgICAg ICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2Rr RmlsbFJ1bGUnICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ0dka0ZpbHRlclJldHVybicgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdHZGtGb250VHlwZScgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrRnVuY3Rpb24nICAgICAgICAgID0+ICdpbnQn LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0dDVmFsdWVzTWFzaycgICAg ICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtHcmFiU3Rh dHVzJyAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn R2RrSW1hZ2VUeXBlJyAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ0dka0lucHV0Q29uZGl0aW9uJyAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdHZGtJbnB1dFNvdXJjZScgICAgICAgPT4gJ2ludCcsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrSW5wdXRNb2RlJyAgICAgICAgID0+ICdp bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka0ludGVycFR5cGUnICAg ICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtKb2lu U3R5bGUnICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnR2RrTGluZVN0eWxlJyAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ0dka01vZGlmaWVyVHlwZScgICAgICA9PiAnaW50JywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdHZGtOYXRpdmVXaW5kb3cnICAgICAgPT4gJ2ludCcsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrTm90aWZ5VHlwZScgICAgICAgID0+ ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka092ZXJsYXBUeXBl JyAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtP d25lckNoYW5nZScgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnR2RrUGl4YnVmQWxwaGFNb2RlJyAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ0dka1Byb3BlcnR5U3RhdGUnICAgICA9PiAnaW50JywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtQcm9wTW9kZScgICAgICAgICAgPT4gJ2ludCcs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrUmdiRGl0aGVyJyAgICAgICAg ID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1Njcm9sbERp cmVjdGlvbicgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH ZGtTZXR0aW5nQWN0aW9uJyAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnR2RrU3Vid2luZG93TW9kZScgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ0dka1Zpc2liaWxpdHlTdGF0ZScgICA9PiAnaW50JywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtWaXN1YWxUeXBlJyAgICAgICAgPT4gJ2lu dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrV2luZG93QXR0cmlidXRl c1R5cGUnICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtX aW5kb3dDbGFzcycgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnR2RrV2luZG93RWRnZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ0dka1dpbmRvd0hpbnRzJyAgICAgICA9PiAnaW50JywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdHZGtXaW5kb3dTdGF0ZScgICAgICAgPT4gJ2ludCcs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2RrV2luZG93VHlwZUhpbnQnICAg ID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dka1dNRGVjb3Jh dGlvbicgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH ZGtXTUZ1bmN0aW9uJyAgICAgICAgPT4gJ2ludCcsCisKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIGxpYnNleHkgZW51bXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdTZXh5SWNvbkVudHJ5UG9zaXRpb24nID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ1NleHlTcGVsbEVycm9yJyAgICAgICAgPT4gJ2ludCcsCisKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGd0a2V4dHJhIGVudW1zCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnR3RrSWNvbkxpc3RNb2RlJyAgICAgICAgICAgID0+ICdp bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RQbGFuZScgICAg ICAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdH dGtQbG90QmFyVW5pdHMnICAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnR3RrUGxvdENhbnZhc0FjdGlvbicgICAgICAgID0+ICdpbnQnLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RDYW52YXNTZWxlY3Rpb24nICAg ICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90Q2Fu dmFzUG9zJyAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnR3RrUGxvdENhbnZhc1NlbGVjdGlvbk1vZGUnID0+ICdpbnQnLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RDYW52YXNQbG90UG9zJyAgICAgICA9PiAnaW50 JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90UHJvamVjdGlvbicg ICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3Rr UGxvdFNjYWxlJyAgICAgICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ0d0a1Bsb3RTeW1ib2xUeXBlJyAgICAgICAgICA9PiAnaW50JywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtQbG90U3ltYm9sU3R5bGUnICAgICAgICAg PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdEJvcmRl clN0eWxlJyAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ0d0a1Bsb3RMaW5lU3R5bGUnICAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdHdGtQbG90Q29ubmVjdG9yJyAgICAgICAgICAgPT4gJ2ludCcs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdEVycm9yJyAgICAgICAg ICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bs b3RPcmllbnRhdGlvbicgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdHdGtQbG90QXhpc1BvcycgICAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnR3RrUGxvdExhYmVsU3R5bGUnICAgICAgICAgID0+ ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RTY2FsZScg ICAgICAgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdHdGtQbG90UGFnZVNpemUnICAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnR3RrUGxvdFBhZ2VPcmllbnRhdGlvbicgICAgID0+ICdpbnQnLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0d0a1Bsb3RVbml0cycgICAgICAgICAg ICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHdGtTaGVl dEF0dHJUeXBlJyAgICAgICAgICAgPT4gJ2ludCcsCisKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vUGFuZ28gZW51bXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdQYW5nb0FsaWdubWVudCcgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnUGFuZ29EaXJlY3Rpb24nICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ1BhbmdvRWxsaXBzaXplTW9kZScgICA9PiAnaW50JywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQYW5nb0ZvbnRNYXNrJyAgICAgICAgPT4g J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGFuZ29SZWN0YW5nbGUn ICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Bhbmdv U3RyZXRjaCcgICAgICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdQYW5nb1N0eWxlJyAgICAgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnUGFuZ29UYWJBbGlnbicgICAgICAgID0+ICdpbnQnLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ1BhbmdvVmFyaWFudCcgICAgICAgICA9PiAnaW50JywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQYW5nb1dlaWdodCcgICAgICAgICAg PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGFuZ29XcmFwTW9k ZScgICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0F0ayBlbnVtcworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ0F0a1JvbGUnICAgICAgICAgICAgICA9PiAnaW50JywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdGtSZWxhdGlvblR5cGUnICAgICAgPT4g J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXRrU3RhdGVUeXBlJyAg ICAgICAgID0+ICdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F0a1Rl eHRBdHRyaWJ1dGUnICAgICA9PiAnaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy9zb21lIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdHRGVzdHJveU5vdGlmeScgICAgICAgPT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnR0Vycm9yJyAgICAgICAgICAgICAgID0+ICdpbnQnLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ0dTTGlzdCcgICAgICAgICAgICAgICA9PiAnaW50JywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHVmFsdWUnICAgICAgICAgICAgICAg PT4gJ2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdncG9pbnRlcicgICAgICAgICAgICAgPT4gJ2ludCcsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdnYm9vbGVhbicgICAgICAgPT4gJ2Jvb2wnLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG91Ymxl JyAgICAgICAgID0+ICdkb3VibGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2dkb3VibGUnICAgICAgICA9PiAnZG91YmxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdmbG9hdCcgICAgICAgICAgPT4gJ2RvdWJsZScsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZ2Zsb2F0JyAgICAgICAgID0+ICdkb3VibGUnLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn R2RrRHJhd2FibGUqJyAgID0+ICdHZGtXaW5kb3cnLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ0dka0F0b20nICAgICAgICA9PiAnc3RyaW5nJyk7CisgICAgICAgIAorICAgICAg ICByZXR1cm4gaXNzZXQoJHR5cGVfbWFwWyRpbl90eXBlXSk7CisgICAgfS8vZnVuY3Rpb24gaXNf cGhwX3R5cGUoJGluX3R5cGUpCit9CisKKy8qIHNpbXBsZSBmYXRhbF9lcnJvciBmdW5jdGlvbiAK KyAgICAgICAgLSB1c2VmdWwgaW4gNC4yLjAtZGV2IGFuZCBsYXRlciBhcyBpdCB3aWxsIGFjdHVh bGx5IGhhbHQgZXhlY3R1dGlvbiBvZiBtYWtlCisgICAgLSBuZWVkcyB0byBvdXRwdXQgdG8gc3Rk ZXJyIGFzIHRoZSBkZWZhdWx0IHByaW50IHdvdWxkIGVuZCB1cCBpbnNpZGUgdGhlIGNvZGUKKyAg ICAtIFRPRE8gLSB0aGUgbWFrZSBmaWxlIG91dHB1dHMgYW4gZW1wdHkgZmlsZSB0byBnZW5fWFhY LmMsIHRoZXJlIG11c3QgYmUgYQorICAgICAgYmV0dGVyIHdheSAgdG8gZGVsZXRlIGl0Li4uIC0g YnkgdXNpbmcgb3V0cHV0IGJ1ZmZlcmluZyBvciBzb210aGluZz8KKyovICAKK2Z1bmN0aW9uIGZh dGFsX2Vycm9yKCRtZXNzYWdlKSB7CisgICAgJGZoID0gZm9wZW4oInBocDovL3N0ZGVyciIsICJ3 Iik7CisgICAgICAgIGZ3cml0ZSgkZmgsIlxuXG5cblxuCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgCisg ICAgVGhlcmUgd2FzIGEgU2VyaW91cyBlcnJvciB3aXRoIHRoZSBQSFAtR1RLIGd0a0dlbmVyYXRv ciBzY3JpcHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSAgICAKKyAgICAkbWVzc2FnZQorPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ICAgIAorICAgIFlvdSBzaG91bGQgdHlwZSB0aGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBjIHNv dXJjZSBpcyBjb3JyZWN0bHkKKyAgICBnZW5lcmF0ZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gbWFr ZSBhZ2Fpbi4KKyAgICAKKyAgICAjZmluZCAuIHwgZ3JlcCBkZWZzIHwgeGFyZ3MgdG91Y2gKKwor ICAgIFxuXG5cblxuIik7CisgICAgZmNsb3NlKCRmaCk7CisgICAgZXhpdCgxKTsKK30KKworCisk b2xkX2Vycm9yX3JlcG9ydGluZyA9IGVycm9yX3JlcG9ydGluZyhFX0FMTCk7CisKK2lmICghaXNz ZXQoJF9TRVJWRVJbJ2FyZ3YnXSkpIAorICAgIGZhdGFsX2Vycm9yKCIKKyAgICAgICAgQ291bGQg bm90IHJlYWQgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBmb3IgZ3RrZ2VuZXJhdG9yLnBocCAKKyAg ICAgICAgUGxlYXNlIGVuc3VyZSB0aGF0IHRoaXMgb3B0aW9uIGlzIHNldCBpbiB5b3VyIHBocC5p bmkKKyAgICAgICAgcmVnaXN0ZXJfYXJnY19hcmd2ID0gT24gICAgIAorICAgICIpOworCisKK2lm IChpc3NldCgkX1NFUlZFUlsnYXJnYyddKSAmJgorICAgIGlzc2V0KCRfU0VSVkVSWydhcmd2J10p KSB7CisgICAgJGFyZ2MgPSAkX1NFUlZFUlsnYXJnYyddOworICAgICRhcmd2ID0gJF9TRVJWRVJb J2FyZ3YnXTsKK30KKworIAorJHJlc3VsdCA9IENvbnNvbGVfR2V0b3B0OjpnZXRvcHQoJGFyZ3Ys ICdsOm86cDpjOnI6Zjp2OicpOworaWYgKCEkcmVzdWx0IHx8IGNvdW50KCRyZXN1bHRbMV0pIDwg MikKKyAgICBkaWUoInVzYWdlOiBwaHAgZ3RrZ2VuZXJhdG9yLnBocCBbLWwgbG9nZmlsZV0gWy1v IG92ZXJyaWRlc2ZpbGVdIFstcCBwcmVmaXhdIFstYyBmdW5jdGlvbmNsYXNzIF0gWy1yIHR5cGVz ZmlsZV0gWy1mIHNhdmVmaWxlXSBbLXYgZ3RrbGlidmVyc2lvbl0gZGVmc2ZpbGVcbiIpOworCits aXN0KCRvcHRzLCAkYXJndikgPSAkcmVzdWx0OworCiskcHJlZml4ID0gJ0d0ayc7CiskZnVuY3Rp b25fY2xhc3MgPSBudWxsOworJG92ZXJyaWRlcyA9IG51bGw7CiskcmVnaXN0ZXJfZGVmcyA9IGFy cmF5KCk7Ciskc2F2ZWZpbGUgPSAndG1wLmMnOworJGxvZ2ZpbGUgPSAncGhwOi8vc3RkZXJyJzsK KyRndGt2ZXJzaW9uID0gJzIuNic7CisKK2ZvcmVhY2ggKCRvcHRzIGFzICRvcHQpIHsKKyAgICBs aXN0KCRvcHRfc3BlYywgJG9wdF9hcmcpID0gJG9wdDsKKyAgICBpZiAoJG9wdF9zcGVjID09ICdv JykgeworICAgICAgICAkb3ZlcnJpZGVzID0gJG9wdF9hcmc7CisgICAgfSBlbHNlIGlmICgkb3B0 X3NwZWMgPT0gJ3AnKSB7CisgICAgICAgICRwcmVmaXggPSAkb3B0X2FyZzsKKyAgICB9IGVsc2Ug aWYgKCRvcHRfc3BlYyA9PSAnYycpIHsKKyAgICAgICAgJGZ1bmN0aW9uX2NsYXNzID0gJG9wdF9h cmc7CisgICAgfSBlbHNlIGlmICgkb3B0X3NwZWMgPT0gJ3InKSB7CisgICAgICAgICRyZWdpc3Rl cl9kZWZzW10gPSAkb3B0X2FyZzsKKyAgICB9IGVsc2UgaWYgKCRvcHRfc3BlYyA9PSAnZicpIHsK KyAgICAgICAgJHNhdmVmaWxlID0gJG9wdF9hcmc7CisgICAgfSBlbHNlIGlmICgkb3B0X3NwZWMg PT0gJ2wnKSB7CisgICAgICAgICRsb2dmaWxlID0gJG9wdF9hcmc7CisgICAgfSBlbHNlIGlmICgk b3B0X3NwZWMgPT0gJ3YnKSB7CisgICAgICAgICRndGt2ZXJzaW9uID0gJG9wdF9hcmc7CisgICAg fQorfQorCitpZiAoZmlsZV9leGlzdHMoZGlybmFtZSgkYXJndlsxXSkgLiAnL2FyZ190eXBlcy5w aHAnKSkgeworICAgIGluY2x1ZGUoZGlybmFtZSgkYXJndlsxXSkgLiAnL2FyZ190eXBlcy5waHAn KTsKK30KKworJG92ZXJyaWRlcyA9IG5ldyBPdmVycmlkZXMoJG92ZXJyaWRlcywgJGd0a3ZlcnNp b24pOworJHBhcnNlciA9IG5ldyBEZWZzX1BhcnNlcigkYXJndlsxXSwgJGd0a3ZlcnNpb24pOwor JGdlbmVyYXRvciA9IG5ldyBndGtHZW5lcmF0b3IoJHBhcnNlciwgJG92ZXJyaWRlcywgJHByZWZp eCwgJGZ1bmN0aW9uX2NsYXNzKTsKKyRnZW5lcmF0b3ItPnNldF9sb2dmaWxlKCRsb2dmaWxlKTsK K2ZvcmVhY2ggKCRyZWdpc3Rlcl9kZWZzIGFzICRkZWZzKSB7CisgICAgJHR5cGVfcGFyc2VyID0g bmV3IERlZnNfUGFyc2VyKCRkZWZzLCAkZ3RrdmVyc2lvbik7CisgICAgJHR5cGVfcGFyc2VyLT5z dGFydF9wYXJzaW5nKCk7CisgICAgJGdlbmVyYXRvci0+cmVnaXN0ZXJfdHlwZXMoJHR5cGVfcGFy c2VyKTsKK30KKyRwYXJzZXItPnN0YXJ0X3BhcnNpbmcoKTsKKyRnZW5lcmF0b3ItPnJlZ2lzdGVy X3R5cGVzKCk7CiskZ2VuZXJhdG9yLT53cml0ZV9zb3VyY2UoJHNhdmVmaWxlKTsKKworZXJyb3Jf cmVwb3J0aW5nKCRvbGRfZXJyb3JfcmVwb3J0aW5nKTsKKworLyogdmltOiBzZXQgZXQgc3RzPTQ6 ICovCis/PgpkaWZmIC0tZ2l0IGEvbWFpbi9waHBfZ3RrLmggYi9tYWluL3BocF9ndGsuaAppbmRl eCBmNDVjODdjLi42MTNmN2FkIDEwMDY0NAotLS0gYS9tYWluL3BocF9ndGsuaAorKysgYi9tYWlu L3BocF9ndGsuaApAQCAtNzcsNiArNzcsMTUgQEAKICMgZGVmaW5lIFBIUEdUS19QUk9QRVJUWV9F TkQgLCBjb25zdCB6ZW5kX2xpdGVyYWwgKmtleSBUU1JNTFNfREMKICNlbmRpZgogCisvKiBnZXRf cHJvcGVydHlfcHRyX3B0ciBoYWQgdHlwZSBhZGRlZCBpbiA1LjUqLworI2lmIFBIUF9WRVJTSU9O X0lEID49IDUwNTAwCisjIGRlZmluZSBaRU5EX0dFVF9QUFRSX1RZUEVfREMgLCBpbnQgdHlwZQor IyBkZWZpbmUgWkVORF9HRVRfUFBUUl9UWVBFX0NDICwgdHlwZQorI2Vsc2UKKyMgZGVmaW5lIFpF TkRfR0VUX1BQVFJfVFlQRV9EQworIyBkZWZpbmUgWkVORF9HRVRfUFBUUl9UWVBFX0NDCisjZW5k aWYKKwogI2lmIEhBVkVfUEhQX0dUSwogCiAjaW5jbHVkZSAiemVuZF9vYmplY3RzX0FQSS5oIgpA QCAtMzA4LDcgKzMxNyw3IEBAIGludCBwaHBfZ3RrX3N0YXJ0dXBfZXh0ZW5zaW9ucyhwaHBfZ3Rr X2V4dF9lbnRyeSAqKmV4dCwgaW50IGV4dF9jb3VudCwgaW50IG1vZHVsCiAKIHp2YWwgKnBocGdf cmVhZF9wcm9wZXJ0eSh6dmFsICpvYmplY3QsIHp2YWwgKm1lbWJlciwgaW50IHR5cGUgUEhQR1RL X1BST1BFUlRZX0VORCk7CiB2b2lkIHBocGdfd3JpdGVfcHJvcGVydHkoenZhbCAqb2JqZWN0LCB6 dmFsICptZW1iZXIsIHp2YWwgKnZhbHVlIFBIUEdUS19QUk9QRVJUWV9FTkQpOwotenZhbCAqKnBo cGdfZ2V0X3Byb3BlcnR5X3B0cl9wdHIoenZhbCAqb2JqZWN0LCB6dmFsICptZW1iZXIgUEhQR1RL X1BST1BFUlRZX0VORCk7Cit6dmFsICoqcGhwZ19nZXRfcHJvcGVydHlfcHRyX3B0cih6dmFsICpv YmplY3QsIHp2YWwgKm1lbWJlciBaRU5EX0dFVF9QUFRSX1RZUEVfREMgUEhQR1RLX1BST1BFUlRZ X0VORCk7CiBIYXNoVGFibGUqIHBocGdfZ2V0X3Byb3BlcnRpZXMoenZhbCAqb2JqZWN0IFRTUk1M U19EQyk7CiBQSFBfR1RLX0FQSSB2b2lkIHBocGdfZ2V0X3Byb3BlcnRpZXNfaGVscGVyKHp2YWwg Km9iamVjdCwgSGFzaFRhYmxlICpodCBUU1JNTFNfREMsIC4uLik7CiAKZGlmZiAtLWdpdCBhL21h aW4vcGhwZ19zdXBwb3J0LmMgYi9tYWluL3BocGdfc3VwcG9ydC5jCmluZGV4IDZlYzY5ZWYuLmM1 YjNlOWIgMTAwNjQ0Ci0tLSBhL21haW4vcGhwZ19zdXBwb3J0LmMKKysrIGIvbWFpbi9waHBnX3N1 cHBvcnQuYwpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgcGhwZ193cml0ZV9wcm9wZXJ0eSh6dmFs ICpvYmplY3QsIHp2YWwgKm1lbWJlciwgenZhbCAqdmFsdWUgUEhQR1RLX1BST1BFUlRZCiAvKiB9 fX0gKi8KIAogLyoge3t7IHBocGdfZ2V0X3Byb3BlcnR5X3B0cl9wdHIoKSAqLwotenZhbCAqKnBo cGdfZ2V0X3Byb3BlcnR5X3B0cl9wdHIoenZhbCAqb2JqZWN0LCB6dmFsICptZW1iZXIgUEhQR1RL X1BST1BFUlRZX0VORCkKK3p2YWwgKipwaHBnX2dldF9wcm9wZXJ0eV9wdHJfcHRyKHp2YWwgKm9i amVjdCwgenZhbCAqbWVtYmVyIFpFTkRfR0VUX1BQVFJfVFlQRV9EQyBQSFBHVEtfUFJPUEVSVFlf RU5EKQogewogICAgIHBocGdfaGVhZF90ICpwb2ggPSBOVUxMOwogICAgIHp2YWwgdG1wX21lbWJl cjsKQEAgLTE1NSw3ICsxNTUsNyBAQCB6dmFsICoqcGhwZ19nZXRfcHJvcGVydHlfcHRyX3B0cih6 dmFsICpvYmplY3QsIHp2YWwgKm1lbWJlciBQSFBHVEtfUFJPUEVSVFlfRU5EKQogCSNpZiBQSFBf VkVSU0lPTl9JRCA8IDUwMzk5CiAJCXJlc3VsdCA9IHplbmRfZ2V0X3N0ZF9vYmplY3RfaGFuZGxl cnMoKS0+Z2V0X3Byb3BlcnR5X3B0cl9wdHIob2JqZWN0LCBtZW1iZXIgVFNSTUxTX0NDKTsKIAkj ZWxzZQotCQlyZXN1bHQgPSB6ZW5kX2dldF9zdGRfb2JqZWN0X2hhbmRsZXJzKCktPmdldF9wcm9w ZXJ0eV9wdHJfcHRyKG9iamVjdCwgbWVtYmVyLCBOVUxMIFRTUk1MU19DQyk7CisJCXJlc3VsdCA9 IHplbmRfZ2V0X3N0ZF9vYmplY3RfaGFuZGxlcnMoKS0+Z2V0X3Byb3BlcnR5X3B0cl9wdHIob2Jq ZWN0LCBtZW1iZXIgWkVORF9HRVRfUFBUUl9UWVBFX0NDLCBOVUxMIFRTUk1MU19DQyk7CiAJI2Vu ZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS93aW4zMi9jb25maWcudzMyLmluIGIvd2luMzIvY29u ZmlnLnczMi5pbgppbmRleCBmYWZhNjFlLi4yYzE5Y2I4IDEwMDY0NAotLS0gYS93aW4zMi9jb25m aWcudzMyLmluCisrKyBiL3dpbjMyL2NvbmZpZy53MzIuaW4KQEAgLTEwLDYgKzEwLDcgQEAgTVNW Q1ZFUlNbMTMxMF0gPSAnTVNWQzcuMSAoVmlzdWFsIEMrKyAyMDAzKSc7CiBNU1ZDVkVSU1sxNDAw XSA9ICdNU1ZDOCAoVmlzdWFsIEMrKyAyMDA1KSc7DQogTVNWQ1ZFUlNbMTUwMF0gPSAnTVNWQzkg KFZpc3VhbCBDKysgMjAwOCknOw0KIE1TVkNWRVJTWzE2MDBdID0gJ01TVkMxMCAoVmlzdWFsIEMr KyAyMDEwKSc7DQorTVNWQ1ZFUlNbMTcwMF0gPSAnTVNWQzExIChWaXN1YWwgQysrIDIwMTIpJzsN CiANCiBTVERPVVQuV3JpdGVCbGFua0xpbmVzKDEpOw== --664b1a9984c02278f5843cc7ba629263cfe5c5ea--