#FILE text/plain Ozs7IG1pbmd1cy1zdGF5cy1ob21lLmVsIC0tLQoKOzsgICAgICAgICAgICAgICAgICAgIF8gICAg ICAgICAgICAgICAgICAgIF8KOzsgIF8gX18gX19fICAgICAgX19ffCB8XyBfXyBfIF8gICBfIF9f XyAgfCB8X18gICBfX18gIF8gX18gX19fICAgX19fCjs7IHwgJ18gYCBfIFwgICAgLyBfX3wgX18v IF9gIHwgfCB8IC8gX198IHwgJ18gXCAvIF8gXHwgJ18gYCBfIFwgLyBfIFwKOzsgfCB8IHwgfCB8 IHxfICBcX18gXCB8fCAoX3wgfCB8X3wgXF9fIFwgfCB8IHwgfCAoXykgfCB8IHwgfCB8IHwgIF9f Lwo7OyB8X3wgfF98IHxfKF8pIHxfX18vXF9fXF9fLF98XF9fLCB8X19fLyB8X3wgfF98XF9fXy98 X3wgfF98IHxffFxfX198Cjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X19fLwoKOzsg Q29weXJpZ2h0IChDKSAyMDA2LTIwMDcgIE5pZWxzIEdpZXNlbiA8Y29tIGRvdCBnbWFpbCBhdCBu aWVsc2dpZXNlbiwgaW4gcmV2ZXJzZWQgb3JkZXI+Cgo7OyBBdXRob3I6IE5pZWxzIEdpZXNlbiA8 cGZ0IG9uICNlbWFjcz4KCjs7IFZlcnNpb246IFNlbGYgUG9ydHJhaXQgSW4gVGhyZWUgQ29sb3Jz LCBvcjogMC4yMwoKOzsgTkVXIGluIDAuMjM6Cgo7OyBSZW1vdmVkIHNpbGx5IGRlcGVuZGVuY2ll cyBmb3IgY2FsY3VsYXRpbmcgdGltZSBvZiBzb25nIChtcGQgYWxyZWFkeSBrbm93cyBhYm91dCB0 aGVtOiBSVEZNIGFmb3JlIHRob3UgcHJvZ2dlc3QgcGZ0ISkuCgo7OyBTdWJzdGl0dXRlZCBzZW50 aW5lbHMgZm9yIHRpbWVycy4KCjs7IE5FVyBpbiAwLjIyOgoKOzsgQWRkZWQgb2dnIGFuZCBmbGFj IHN1cHBvcnQgZm9yIG1ldGFkYXRhICh0aGUgbWluZ3VzLWlkMy0qIGZ1bmN0aW9ucykKOzsgQWRk ZWQgZmxhYyBhbmQgd2F2IHN1cHBvcnQgZm9yIGBtaW5ndXMtYnVybi1pdCcKOzsgRml4ZWQgYSBz aGl0bG9hZCBvZiBidWdzOyBpbnRyb2R1Y2VkIGp1c3QgYXMgbWFueSAoaG9wZWZ1bGx5IG5vdCku Cjs7IEluY3JlYXNlZCBudW1iZXIgb2YgZGVwZW5kZW5jaWVzIHRvIGRvIGFsbCB0aGlzIChzZWUg YmVsb3cgdW5kZXIgJ0Z1cnRoZXIgcmVxdWlyZW1lbnRzJykuCgo7OyBOT1RFIChhdCB2ZXJzaW9u IDAuMjEpIDogVmVyc2lvbiAwLjIxIGlzIGFjdHVhbGx5IHRoZSBmaXJzdCBwdWJsaXNoZWQgdmVy c2lvbiBvZgo7OyBtaW5ndXMtc3RheXMtaG9tZS4gVG8gcHJvdmlkZSBlYXN5IGNoZWNraW5nIHdo ZXRoZXIgdGhlIHZlcnNpb25zIG9mIG1pbmd1cy5lbCBhbmQKOzsgbWluZ3VzLXN0YXlzLWhvbWUg KHNob3VsZCkgd29yayB0b2dldGhlciwgaXQgd2FzIGRlY2lkZWQgdG8gZ2l2ZSB0aGVtIGNvbmN1 cnJlbnQKOzsgdmVyc2lvbiBudW1iZXJzLgoKOzsgS2V5d29yZHM6IG11bHRpbWVkaWEsIGVsaXNw LCBtdXNpYywgbXBkCgo7OyBUaGlzIGZpbGUgaXMgKk5PVCogcGFydCBvZiBHTlUgRW1hY3MKCjs7 IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKOzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKOzsgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIKOzsgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCgo7OyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKOzsgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKOzsg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKOzsgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0 b24sIE1BCjs7IDAyMTExLTEzMDcsIFVTQS4KCjs7OyBDT01NRU5UQVJZOgoKOzsgSU5TVEFMTEFU SU9OIElOU1RSVUNUSU9OUzoKCjs7IFB1dCB0aGUgZm9sbG93aW5nIGluIHlvdXIgLmVtYWNzOgoK OzsgIChyZXF1aXJlICdtaW5ndXMtc3RheXMtaG9tZSkKCjs7IElmIHlvdSBhbHJlYWR5IGhhZCBh IChyZXF1aXJlICdtaW5ndXMpIGluIHlvdXIgLmVtYWNzLCBSRVBMQUNFIHRoaXMgd2l0aCB0aGUg Y29kZQo7OyBhYm92ZS4gTWFrZSBzdXJlIHlvdSBoYXZlIGEgdmVyc2lvbiBvZiBtaW5ndXMuZWwg b2YgdGhlIHNhbWUgdmVyc2lvbiBudW1iZXIKOzsgYXZhaWxhYmxlLgoKOzs7IGdvYWw6IHByb3Zp ZGUgZXh0cmEgZnVuY3Rpb25hbGl0eSB0byBtaW5ndXMgdGhhdCBpcyBvbmx5IHBvc3NpYmxlIHdo ZW4gbXBkIGlzIHJ1bgo7OzsgbG9jYWxseSwgaS5lLiB0aGUgZnJvbnRlbmQgaGFzIGZ1bGwgYWNj ZXNzIHRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHRoZQo7OzsgZmlsZXN5c3RlbSB1c2Vk IGJ5IG1wZC4KCjs7OyBleHRlbnQ6IGN1cnJlbnRseSB1bmRlY2lkZWQsIGJ1dCBhdCBsZWFzdDoK Cjs7OyAqIGludGVncmF0aW9uIHdpdGggb3RoZXIgZW1hY3MtbW9kZXM6Cgo7OzsgKiogRElSRUQ6 Cgo7OzsgQWJpbGl0eSB0byBzbmFwIHRvIHRoZSBmaWxlIGxvY2F0aW9uIG9mIGEgc29uZyBpbnN0 YW50bHkgaW4gYGRpcmVkJywgc28gYXMgdG8KOzs7IHBlcmZvcm0gZmlsZSBtYW5hZ2VtZW50IG9y IG90aGVyIGFjdGlvbnMgb24gdGhlc2UgZmlsZXMgZWFzaWx5IChzdWNoIGFzIHJlbW92YWwsCjs7 OyBtb3ZlbWVudCBvciByZW5hbWluZyksIG9yIGp1c3QgdG8gY2hlY2sgd3RmcyAnMy5vZ2cnIGFj dHVhbGx5IHJlZmVycyB0by4KCjs7OyBZb3UgbWlnaHQgd2FudCB0byBjaGFuZ2UgdGhlIGBkaXJl ZC1tb2RlLW1hcCcgc28gdGhhdCBpdCB3aWxsIHBsYXkgd2VsbCB3aXRoIE1pbmd1cy4KOzs7IElm IHlvdSB3YW50IHRvLCB5b3UgY2FuIHNldCB0aGUgdmFyaWFibGUgYG1pbmd1cy1kaXJlZC1hZGQt a2V5cycgdG8gdDsgdGhpcyBjYW4gYmUKOzs7IGRvbmUgd2l0aCBgbWluZ3VzLWN1c3RvbWl6ZScu IEl0IHdpbGwgc2V0ICJTUEMiIHRvIGBtaW5ndXMtZGlyZWQtYWRkJywgIkMtdSBTUEMiIHRvCjs7 OyBgbWluZ3VzLWRpcmVkLWFkZC1hbmQtcGxheScgYW5kIGFkZCBhbiBpdGVtIGZvciBgbWluZ3Vz LWRpcmVkLWFkZCcgdG8gdGhlIG1lbnUtYmFyCjs7OyBpbiBkaXJlZC4gYG1pbmd1cy1kd2ltLWFk ZCcgYW5kIGBtaW5ndXMtZHdpbS1hZGQtYW5kLXBsYXknIChzZWUgYmVsb3cpIGNhbGxzCjs7OyBt aW5ndXMtZGlyZWQtYWRkIHdoZW4gaW4gZGlyZWQsIHNvIGJpbmRpbmcgdGhpcyB0byBhIGdsb2Jh bCBrZXkgbWlnaHQgYmUgYSBuaWNlCjs7OyBzb2x1dGlvbiB0b28uCgo7OzsgKiogTUlOSUJVRkZF UiBDT01QTEVUSU9OOgoKOzs7IHVzaW5nIHRoZSBtaW5pYnVmZmVyIGluIGEgYmV0dGVyIHdheSB0 byBhZGQgc29uZ3Mgb3IgZGlyZWN0b3JpZXMsIHRoYW4gbWluZ3VzLWluc2VydAo7OzsgcHJldmlv dXNseSBkaWQuIFRoaXMgaXMgZG9uZSB3aXRoIHRoZSBmdW5jdGlvbiBgbWluZ3VzLWR3aW0tYWRk Jy4gYG1pbmd1cy1pbnNlcnQnCjs7OyBrZWVwcyBpdHMgb2xkIGJlaGF2aW91ci4KCjs7OyAqKiBJ RDMtVEFHR0lORzoKCjs7OyBzZWUgYG1pbmd1cy1pZDMtc2V0JyBhbmQgYG1pbmd1cy1pZDMtZXJh c2UnIChvbmx5IHRvIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBgbWluZ3VzJykKCjs7OyAqKiBCVVJO SU5HIENEJ1Mgd2l0aCBgbWluZ3VzLWJ1cm5zJyEgSW4gREVWRUxPUE1FTlQgc3RhZ2UsIGJ1dCBu b25ldGhlbGVzcyB1c2FibGUuCgo7OzsgTWFrZSBzdXJlIHRoZSBkaXJlY3RvcnkgcmVmZXJyZWQg dG8gYnkgdGhlIHZhcmlhYmxlIGBtaW5ndXMtYnVybnMtdG1wLXdhdi1kaXInCjs7OyAoZGVmYXVs dDogIn4vLm1pbmd1cy90bXAiKSBleGlzdHMuIFRoaXMgaXMgd2hlcmUgdGhlIGludGVybWVkaWF0 ZSBmaWxlcyBpbiB0aGUKOzs7IGJ1cm5pbmcgcHJvY2VzcyB3aWxsIGdvLgoKOzs7IE5PVEUgbWlu Z3VzLWJ1cm5zIGN1cnJlbnRseSBkb2VzIE5PVCBjaGVjayBmb3IgdGhlIGNhcGFjaXR5IG9mIHRo ZSBpbnNlcnRlZCBkaXNrLAo7Ozsgbm9yIHdoZXRoZXIgaXQgaXMgd3JpdGFibGUuIFlvdSBhcmUg bGVmdCB0byB5b3VyIG93biBkZXZpY2VzIGZvciB0aGlzLiBUaGUKOzs7IGdyZWVuLXJlZG5lc3Mg aWYgdGhlIGluZGljYXRpb24gYmFyIGRpc3BsYXlzIGp1c3Qgd2hhdCBpcyB1c3VhbGx5Cjs7OyBl bmNvdW50ZXJlZC4KCjs7OyBJTkZPOiBtaW5ndXMtYnVybnMgcmVjb3JkcyBjZCdzIHdpdGggdGhl IGNvbnRlbnRzIG9mIHRoZSBjdXJyZW50IHBsYXlsaXN0IG9mIG1wZC4gSXQKOzs7IGNhbiBhbHNv IGp1c3QgYmUgdXNlZCB0byBzZWUgd2hhdCB0aGUgZHVyYXRpb24gb2YgYSBwbGF5bGlzdCBhbmQg aXRzIHJlc3BlY3RpdmUKOzs7IHNvbmdzIChPTkxZIGlmIGluIG9nZy0gb3IgbXAzIGZvcm1hdCkg aXMuIEN1cnJlbnRseSB0aGUgcGxheWxpc3QtZWRpdGluZyBmdW5jdGlvbnMKOzs7IGFyZSAqbm90 KiBhcyB3aWRlIGFzIGluIHRoZSBub3JtYWwgcGxheWxpc3QgYnVmZmVyICh0YWdnZWQgYCpNaW5n dXMqJykuIEhvd2V2ZXIsCjs7OyBiYXNpYyBzdXBwb3J0IGZvciBkZWxldGlvbiBvZiBzb25nIGF0 IHBvaW50IGFuZCBvZiBzb25ncyBpbiByZWdpb24gZG9lcyBleGlzdCwgd2l0aAo7OzsgcmVzcGVj dCBmb3IgdGhlIHZhcmlhYmxlcyBgKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRpb24qJyBhbmQKOzs7 IGAqbWluZ3VzLW1hcmtlZC1saXN0KicuIFlvdSBjYW4gYWRkIHNvbmdzIHdpdGhvdXQgbGVhdmlu ZyB0aGUgKk1pbmd1cyBCdXJucyogYnVmZmVyCjs7OyBhcyB3ZWxsLCBieSB1c2Ugb2YgbWluZ3Vz LWR3aW0tYWRkLiBBZGRpbmcgc29uZ3MgbGVhZHMgdG8gYSBjb21wbGV0ZSByZWNvbXB1dGF0aW9u Cjs7OyBvZiBzb25nIGR1cmF0aW9uLCB3aGljaCBtYXkgdGFrZSBhIHdoaWxlLCBzbyB0aGUgZmFz dGVzdCB3YXkgdG8gYWNoaWV2ZSBuaWNlCjs7OyBjb250ZW50cyBmb3IgeW91ciBDRCBpcyB0byBm aXJzdCBhZGQgYSBidW5jaCBvZiBzb25ncyAoYnV0IG5vdCB3YXkgdG8gbXVjaCBvZgo7OzsgY291 cnNlKSwgYW5kIHRoZW4gZGVsZXRlIHRoZSBvbmVzIHlvdSBjYW4gZG8gd2l0aG91dC4gSXQgbG9v a3MgbW9yZSBhdHRyYWN0aXZlIHRoYW4KOzs7IHRoZSBkZWZhdWx0IHBsYXlsaXN0IGJ1ZmZlciwg YnV0IGJlY2F1c2Ugb2YgdGhlIHNsb3duZXNzIGluaGVyZW50IGluIGNvbXB1dGluZwo7OzsgZHVy YXRpb24sIGl0IGlzIG5vdCBwbGFubmVkIHRvIGJlIGEgZnVsbCBzdWJzdGl0dXRlIGZvciBpdCwg YXQgbGVhc3Qgbm90IGluIHRoZSBuZWFyCjs7OyBmdXR1cmUuCgo7OzsgUkVRVUlSRU1FTlRTOgoK Ozs7IHZlcnNpb24gMC4yMiByZXF1aXJlZCB0b28gbXVjaCwgZ2xhZCB0byBiZSBhYmxlIHRvIHRy aW0gaXQgZG93biBhZ2FpbiBpbiB2ZXJzaW9uCjs7OyAwLjIzIGFmdGVyIGhhdmluZyByZWFkIHNv bWUgZG9jdW1lbnRhdGlvbjoKCjs7OyBUQUdHSU5HCgo7OzsgbWV0YWZsYWMgLS0gZm9yIGZsYWMg ZmlsZXMKCjs7OyBpZDN2MiAtLSBmb3IgbXAzcwoKOzs7IHZvcmJpc2NvbW1lbnQgLS0gZm9yIG9n Z3MKCjs7OyAoZG9lcyBhbnlvbmUga25vdyBvZiBhIGdvb2QgTk9OaW50ZXJhY3RpdmUgbXVsdGl0 YWdnZXI/KQoKOzs7IGRlY29kaW5nOgoKOzs7IHNveCAtLSBmb3IgZGVjb2Rpbmcgc29uZ3MgdG8g dGhlIC53YXYgZm9ybWF0LgoKOzs7IGZsYWMgLS0gZm9yIGRlY29kaW5nIGZsYWNzIHRvIHRoZSAu d2F2IGZvcm1hdC4gTXVzdCBnZXQgZmxhYyBpbnRvIHNveC4uLgoKCjs7OyBidXJuaW5nOgoKOzs7 IGNkcmVjb3JkIChvcjogd29kaW0sIGlmIHlvdSBzdGljayB0byBEZWJpYW4gZ3VpZGVsaW5lcykg LS0gZm9yIGJ1cm5pbmcgdGhlCjs7OyBjZC4gQWN0dWFsbHksIHRoaXMgY2FuIGJlIGN1c3RvbWl6 ZWQgd2l0aCB0aGUgdmFyaWFibGVzIGBtaW5ndXMtYmxhbmstc3RyaW5nJwo7OzsgYW5kIGBtaW5n dXMtYnVybnMtZm9ybWF0LXN0cmluZycKCgo7OzsgKiogVklFVyBDT1ZFUiBBUlQgKGFjaCwgd2h5 IG5vdD8pCgo7Ozsgd2hlbiBhdmFpbGFibGUsIHlvdSBjYW4gdXNlIGB0aHVtYnMnIHRvIHZpZXcg Y292ZXIgYXJ0IGZyb20gd2l0aGluIE1pbmd1czogc2VlCjs7OyBgbWluZ3VzLXRodW1icycgKGtl eTogIlQiKQoKOzs7IGtub3duIGJ1Z3M6IHNvbWV0aW1lcyB1bmljb2RlIHN0cmluZ3MgaW4gdGFn cyBjYW4gbGVhZCB0byBlcnJvcnMuCgo7OzsgRm9yIGFueSBxdWVzdGlvbnMsIHN1Z2dlc3Rpb25z IGFuZCBzbyBmb3J0aCwgY29udGFjdCBuaWVsc2dpZXNlbiBhdCBpYmJ1IGRvdCBubAoKOzs7ICgg dXNlIGR0bydzIC0tYWxyZWFkeSBkZXByZWNhdGVkLS0gZ29saXNwLW1vZGUgdG8gbWFrZSB1c2Ug b2YgdGhlIGluZGV4aW5nIGluIHRoaXMKOzs7IGZpbGU6IGZpbmQgaXQgYXQgaHR0cDovL2R0by5m cmVlc2hlbGwub3JnL25vdGVib29rL0dvTGlzcC5odG1sICkKCjs7OyBDb2RlOgoocmVxdWlyZSAn bWluZ3VzKQoKOzs7OyB7e1VwZGF0ZSBIZWxwIFRleHR9fQoKKHNldHEgbWluZ3VzLWhlbHAtdGV4 dAogICAgICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCiAgICAgICAiTU9SRSBFTEFCT1JBVEUg SU5TVFJVQ1RJT05TOiIKICAgICAgICJCVVJORVIgS0VZUzoKCkIgICAgICAgICAgICAgICAgICAg ICAgIG1pbmd1cy1idXJuLWl0CkQgICAgICAgICAgICAgICAgICAgICAgIG1pbmd1cy1idXJucy1k ZWNvZGUtcGxheWxpc3QKRSAgICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLWJsYW5rLWRpc2sK Ck1PUkUgRUxBQk9SQVRFIElOU1RSVUNUSU9OUzoiCiAgICAgICAocmVwbGFjZS1yZWdleHAtaW4t c3RyaW5nCgkiVSAgICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLXVubWFyay1hbGwiCgkiVSAg ICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLXVubWFyay1hbGwKIyAgICAgICAgICAgICAgICAg ICAgICAgbWluZ3VzLWlkMy1zZXQKZSAgICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLWlkMy1l cmFzZSIKCShyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKCSAibWluZ3VzLWJyb3dzZXI6ICAgIDMi CgkgIm1pbmd1cy1icm93c2VyOiAgICAzCm1pbmd1cy1idXJuczogICAgICA0Cm1pbmd1cy1kaXJl ZC1maWxlOiAwXG4iIG1pbmd1cy1oZWxwLXRleHQgdCkgdCkgdCkpCgoKOzs7OyB7e1VwZGF0ZSAq bWluZ3VzLWhlYWRlci13aGVuLWVtcHR5Kn19CgoKKHNldHEgKm1pbmd1cy1oZWFkZXItd2hlbi1l bXB0eSogIlByZXNzID8gZm9yIGhlbHAsIDMgZm9yIE1pbmd1cyBCcm93c2VyLCA0IGZvciBNaW5n dXMgQnVybnMgYW5kIDAgZm9yIGRpcmVkXG5cblByZXNzIDIgdG8gY29tZSBiYWNrIGhlcmUgZnJv bSB3aXRoaW4gTWluZ3VzIGJ1ZmZlcnMsIE0teCBtaW5ndXMgZnJvbSBlbHNld2hlcmUuIikKCgo7 Ozs7ICB7e0dlbmVyaWMgRnVuY3Rpb25zfX0KCgooZGVmdW4gbWluZ3VzLW1ha2UtYWxpc3QgKGxp c3QpCiAgIk1ha2UgYW4gYWxpc3Qgb3V0IG9mIGEgZmxhdCBsaXN0LCB3aGVyZWJ5IGV2ZXJ5IHBh aXIgaXMgcmV2ZXJzZWQuIgogIChpZiAoZW5kcCBsaXN0KQogICAgICBuaWwKICAgIChjb25zIChj b25zIChjYWRyIGxpc3QpIChjYXIgbGlzdCkpCgkgIChtaW5ndXMtbWFrZS1hbGlzdCAoY2RkciBs aXN0KSkpKSkKCgooZGVmdW4gbWluZ3VzLWdldC1jb25maWctb3B0aW9uIChmaWxlIG9wdGlvbikK ICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGZpbGUpCiAgICAo cmUtc2VhcmNoLWZvcndhcmQgKGZvcm1hdCAiJXMgKyIgb3B0aW9uKSkKICAgIChnb3RvLWNoYXIg KHJlLXNlYXJjaC1mb3J3YXJkICJcIiIpKQogICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVy dGllcyAocG9pbnQpICgxLSAocmUtc2VhcmNoLWZvcndhcmQgIlwiIikpKSkpCgoKKGRlZmdyb3Vw IG1pbmd1cy1zdGF5cy1ob21lIG5pbAogICJHcm91cCBmb3IgY3VzdG9taXphdGlvbiBvZiB2YXJp YWJsZXMgdXNlZCB3aGVuIG1wZCBpcyBydW4gb24KICAgICAgICB0aGUgc2FtZSBjb21wdXRlciBh cyBtaW5ndXMiCiAgOmdyb3VwICdtaW5ndXMpCgoKKGRlZmN1c3RvbSBtaW5ndXMtbXBkLWNvbmZp Zy1maWxlICJ+Ly5tcGRjb25mIgogICJGaWxlIHVzZWQgYnkgbXBkIGFzIGEgY29uZmlndXJhdGlv biBmaWxlIgogIDpncm91cCAnbWluZ3VzLXN0YXlzLWhvbWUKICA6dHlwZSAnKHN0cmluZykpCgoK KGRlZmNvbnN0IG1pbmd1cy1tcGQtcm9vdCAoZXhwYW5kLWZpbGUtbmFtZSAoY29uY2F0IChtaW5n dXMtZ2V0LWNvbmZpZy1vcHRpb24gbWluZ3VzLW1wZC1jb25maWctZmlsZSAibXVzaWNfZGlyZWN0 b3J5IikgIi8iKSkgIlJvb3QgZm9yIG1wZCIpCgo7Ozs7IHt7U2hlbGx9fQo7OzsgZnVuY3Rpb25z IGZvciByZXRyaWV2aW5nIHRoZSB0cnVlIGZpbGVuYW1lcyBmb3IgaW50ZXJhY3Rpb24gd2l0aCBh IHNoZWxsIGFuZAo7OzsgYGRpcmVkJzsgdGhpcyBuZWVkcyByZXZpZXdpbmcgZm9yIGNvbnNpc3Rl bmN5IGFuZCB1c2UKCgo7OyBhcyBhIGxpc3QuLgooZGVmdW4gbWluZ3VzLWdldC1maWxlbmFtZS1m cm9tLXBsYXlsaXN0ICgmb3B0aW9uYWwgbGlzdCkKICAiSW4gYG1pbmd1cycsIHJldHJpZXZlIGZp bGVuYW1lcyBmcm9tIHRoZSBwbGF5bGlzdCBhbmQgcHV0IHRoZW0gaW4gYSBsaXN0IgogIChsZXQg KChsaXN0IChvciBsaXN0IChsaXN0IChtaW5ndXMtbGluZS1udW1iZXItYXQtcG9zKSkpKSkKICAg ICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgIChpbnNlcnQgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5n ICJtcGMgcGxheWxpc3QgLS1mb3JtYXQgJWZpbGUlIikpCiAgICAgIChnb3RvLWNoYXIgKHBvaW50 LW1pbikpCiAgICAgIChtYXBjYXIgKGxhbWJkYSAobGlzdCkKCQkoY29uY2F0IG1pbmd1cy1tcGQt cm9vdAoJCQkoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChnb3RvLWNoYXIgKHJlLXNl YXJjaC1mb3J3YXJkIChmb3JtYXQgIiMlZCkgIiBsaXN0KSkgKShwb2ludC1hdC1lb2wpKSkpCgkg ICAgICAoc29ydCBsaXN0ICMnPCkpKSkpCgoKOzsgYXMgb25lIHdlbGwtcXVvdGVkIHN0cmluZy4u CihkZWZ1biBtaW5ndXMtZ2V0LWZpbGVuYW1lLWZyb20tcGxheWxpc3QtZm9yLXNoZWxsICgmb3B0 aW9uYWwgaW50ZWdlcikKICAiSW4gYG1pbmd1cycsIHJldHVybiBhIHNoZWxsLXF1b3RlZCBzdHJp bmcgZmlsZW5hbWVzIGZyb20gcGxheWxpc3QiCiAgKGxldCAoKGxpc3QgKG9yICh3aGVuIGludGVn ZXIgKGxpc3QgaW50ZWdlcikpIChzb3J0IChjb3B5LWxpc3QgbWluZ3VzLW1hcmtlZC1saXN0KSAj JzwpIChsaXN0IChtaW5ndXMtbGluZS1udW1iZXItYXQtcG9zKSkpKSkKICAgICh3aXRoLXRlbXAt YnVmZmVyCiAgICAgIChpbnNlcnQgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nICJtcGMgcGxheWxp c3QgLS1mb3JtYXQgJWZpbGUlIikpCiAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAg IChtYXBjb25jYXQKICAgICAgIChsYW1iZGEgKG51bWJlcikKCSAobGV0ICgoc29uZyAoYnVmZmVy LXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChnb3RvLWNoYXIgKHJlLXNlYXJjaC1mb3J3YXJkIChm b3JtYXQgIiMlZCkgIiBudW1iZXIpKSkocG9pbnQtYXQtZW9sKSkpKQoJICAgKHVubGVzcyAobG9v a2luZy1hdCAiaHR0cDovLyIpCgkgICAgIChzaGVsbC1xdW90ZS1hcmd1bWVudCAoY29uY2F0IG1p bmd1cy1tcGQtcm9vdCBzb25nKSkpKSkgbGlzdCAiICIpKSkpCgoKKGRlZnVuIG1pbmd1cy1nZXQt ZmlsZW5hbWUtZnJvbS1icm93c2VyLWZvci1zaGVsbCAoKQogIChsaXN0IChtaW5ndXMtZ2V0LXNp bmdsZS1maWxlbmFtZS1mcm9tLWJyb3dzZXItZm9yLXNoZWxsKSkpCgoKKGRlZnVuIG1pbmd1cy1n ZXQtc2luZ2xlLWZpbGVuYW1lLWZyb20tYnJvd3Nlci1mb3Itc2hlbGwgKCkKICAoY29uY2F0IG1p bmd1cy1tcGQtcm9vdCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludC1hdC1i b2wpKHBvaW50LWF0LWVvbCkpKSkKCgooZGVmdW4gbWluZ3VzLWdldC1zaW5nbGUtZmlsZW5hbWUt Zm9yLXNoZWxsICgmb3B0aW9uYWwgaW50ZWdlcikKICAoY2FzZSBtYWpvci1tb2RlCiAgICAoJ21p bmd1cy1icm93c2UtbW9kZQogICAgIChzaGVsbC1xdW90ZS1hcmd1bWVudCAobWluZ3VzLWdldC1z aW5nbGUtZmlsZW5hbWUtZnJvbS1icm93c2VyLWZvci1zaGVsbCkpKQogICAgKCdtaW5ndXMtcGxh eWxpc3QtbW9kZQogICAgIChtaW5ndXMtZ2V0LWZpbGVuYW1lLWZyb20tcGxheWxpc3QtZm9yLXNo ZWxsKSkpKQoKCihkZWZ1biogbWluZ3VzLWdldC1maWxlbmFtZXMtZnJvbS1icm93c2VyLWZvci1z aGVsbCAoJm9wdGlvbmFsIGJlZyBlbmQpCiAgIkdldCBldmVyeXRoaW5nIHVuZGVyIHRoZSByZWdp b24sIHNsb3BwaWx5LiIKICAoaW50ZXJhY3RpdmUgInIiKQogIChsZXQgKChyZXMgbmlsKQoJKGJl ZyAoaWYgbWFyay1hY3RpdmUgYmVnIChwb2ludC1hdC1ib2wpKSkKCShlbmQgKGlmIG1hcmstYWN0 aXZlIGVuZCAocG9pbnQtYXQtZW9sKSkpKQogICAgKGdvdG8tY2hhciAob3IgYmVnIChwb2ludC1h dC1ib2wpKSkKICAgICh3aGlsZSAoPCAocG9pbnQpIGVuZCkKICAgICAgKHNldGYgcmVzIChjb25z IChjb25jYXQgbWluZ3VzLW1wZC1yb290IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMg KHBvaW50LWF0LWJvbCkgKHBvaW50LWF0LWVvbCkpKSByZXMpKQogICAgICAoZm9yd2FyZC1saW5l IDEpKSByZXMpKQoKCihkZWZ1biBtaW5ndXMtZ2V0LWZpbGVuYW1lLWZvci1zaGVsbCAoJm9wdGlv bmFsIGludGVnZXIpCiAgKGNhc2UgbWFqb3ItbW9kZQogICAgKCdtaW5ndXMtYnJvd3NlLW1vZGUK ICAgICAobWluZ3VzLWdldC1maWxlbmFtZS1mcm9tLWJyb3dzZXItZm9yLXNoZWxsKSkKICAgICgn bWluZ3VzLXBsYXlsaXN0LW1vZGUKICAgICAobWluZ3VzLWdldC1maWxlbmFtZS1mcm9tLXBsYXls aXN0IChsaXN0IGludGVnZXIpKSkpKQoKCjs7Ozsge3tEaXJlZH19Cjs7IGdldCBhbGwgc3ltbGlu a3MgdW5kZXIgbWluZ3VzLW1wZC1yb290OgooZGVmdW4gbWluZ3VzLXJldHJpZXZlLXN5bWxpbmtz ICgpCiAgIlJldHJpZXZlIGFsbCBzeW1saW5rcyB1bmRlciBtcGQgcm9vdCwgYW5kIG1ha2UgYW4g YWxpc3Qgb3V0IG9mIHRoZW0uClRvIGJlIHVzZWQgZm9yIHBhc3NpbmcgdGhlIHJpZ2h0IGRhdGEg dG8gbXBkIGluIGRpcmVkLiIKICAoY29ucyAoY29ucyBtaW5ndXMtbXBkLXJvb3QgIiIpCgkobWlu Z3VzLW1ha2UtYWxpc3QKCSAocmVtb3ZlICIiIChzcGxpdC1zdHJpbmcgKHNoZWxsLWNvbW1hbmQt dG8tc3RyaW5nIChmb3JtYXQgInN5bWxpbmtzIC1jcnYgJXMiIG1pbmd1cy1tcGQtcm9vdCkpCgkJ CQkgIChmb3JtYXQgIlxcKFxcKFxuKnJlbGF0aXZlOlxcfFxuKm90aGVyX2ZzOlxcfFxuKmRhbmds aW5nOlxcfCAtPlxcKSBcXHwlc1xcfFxuXFwpIiBtaW5ndXMtbXBkLXJvb3QpKSkpKSkKCgooZGVm dW4gbWluZ3VzLXJlcGxhY2UtYWJzb2x1dGUtcGF0aC13aXRoLXJlbGF0aXZlLW9uZSAoc3RyaW5n KQogICJJbiBTVFJJTkcsIHJlcGxhY2UgdGhlIGFic29sdXRlIHBhdGggd2l0aCB0aGUgYXNzb2Np YXRlZCBzeW1saW5rIHVuZGVyIGBtaW5ndXMtbXBkLXJvb3QnOwpJZiBmb3VuZCwgYWxzbyBxdW90 ZSBpdC4gVXNlZCBpbiBgbWluZ3VzLWRpcmVkLWFkZCciCiAgKGxldCAoKGZvdW5kLWFzc29jaWF0 aW9uIChhc3NvYyogc3RyaW5nIChtaW5ndXMtcmV0cmlldmUtc3ltbGlua3MpIDp0ZXN0CgkJCQkg ICAnKGxhbWJkYSAocGxhY2Utb2YtZmlsZSBwYXJlbnQtZGlyKSA7OyAoc3RyaW5nLW1hdGNoIHBh cmVudC1kaXIgcGxhY2Utb2YtZmlsZSkKCQkJCSAgICAgIDs7IGFjY291bnQgZm9yIHJlbGF0aXZl IGludGVycHJldGF0aW9uIGJ5IHRoZSBzaGVsbCBvZiBzeW1saW5rcwoJCQkJICAgICAgKHN0cmlu Zy1tYXRjaCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJcXC5cXC4vIiAiIiBwYXJlbnQtZGly KSBwbGFjZS1vZi1maWxlKSkpKSkKICAgIChpZiBmb3VuZC1hc3NvY2lhdGlvbgoJKHNoZWxsLXF1 b3RlLWFyZ3VtZW50CgkgKGNvbmNhdCAoY2RyIGZvdW5kLWFzc29jaWF0aW9uKSAoc3Vic3RyaW5n IHN0cmluZyA7OyhsZW5ndGggKGNhciBmb3VuZC1hc3NvY2lhdGlvbikKCQkJCQkJICAgIDs7IGFj Y291bnQgZm9yIHJlbGF0aXZlIGludGVycHJldGF0aW9uIGJ5IHRoZSBzaGVsbCBvZiBzeW1saW5r cwoJCQkJCQkgICAgKGFwcGx5IChpZiAoc3RyaW5nLW1hdGNoICJcXC5cXC4vIiAoY2FyIGZvdW5k LWFzc29jaWF0aW9uKSkgJzErICcrKQoJCQkJCQkJICAgOzsgYWNjb3VudCBmb3IgcmVsYXRpdmUg aW50ZXJwcmV0YXRpb24gYnkgdGhlIHNoZWxsIG9mIHN5bWxpbmtzCgkJCQkJCQkgICAobGVuZ3Ro IChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIlxcLlxcLi8iICIiIChjYXIgZm91bmQtYXNzb2Np YXRpb24pKSkgbmlsKSkpKSkpKQoKCihkZWZ1biBtaW5ndXMtZGlyZWQtYWRkICgpCiAgIkluIGBk aXJlZCcsIGFkZCBtYXJrZWQgZmlsZXMgb3IgZmlsZSBhdCBwb2ludCB0byB0aGUgbXBkIHBsYXls aXN0OwoKSWYgbXBkIGlzIHVud2FyeSBvZiB0aGVzZSBmaWxlcywgYXNrIHdoZXRoZXIgdG8gbWFr ZSBhIHN5bWxpbmsuCkNyZWF0ZSBhIHN5bWxpbmssIGFuZCBvcHRpb25hbGx5IHVwZGF0ZSBkYXRh YmFzZS4KCklmIHVwZGF0aW5nIHRha2VzIHRvbyBsb25nLCBpdCBtaWdodCBiZSB0aGF0IHRoaXMg ZG9lcyBub3Qgd29yayBpbiBvbmUgZ28uClRyeSBhZ2FpbiBhdCBhIGxhdGVyIHRpbWUgaWYgdGhp cyBoYXBwZW5zLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKG9sZC1sZW5ndGggKG1pbmd1cy1w bGF5bGlzdC1sZW5ndGgpKSkKICAgIChtaW5ndXMtYWRkIChtYXBjb25jYXQgJ21pbmd1cy1yZXBs YWNlLWFic29sdXRlLXBhdGgtd2l0aC1yZWxhdGl2ZS1vbmUgKGRpcmVkLWdldC1tYXJrZWQtZmls ZXMpICIgIikpCiAgICA7OyBtYWtlIHN1cmUgbWluZ3VzLWFkZCBoYXMgaW5kZWVkIGFkZGVkIHRo ZSBzdHVmZjoKICAgIChpZiAoPSBvbGQtbGVuZ3RoIChtaW5ndXMtcGxheWxpc3QtbGVuZ3RoKSkK CTs7IGlmIG5vdCwgYXNrIHNvbWUgcXVlc3Rpb25zCgkod2hlbiAoeWVzLW9yLW5vLXAgKGZvcm1h dCAiU29tZXRoaW5nIGhhcyBnb25lIHdyb25nLiBQb3NzaWJseSBtcGQgZG9lcyBub3Qga25vdyBh Ym91dCB0aGUgZmlsZS4KRG8geW91IHdhbnQgdG8gc3ltbGluayB0aGUgcGFyZW50IGRpcmVjdG9y eT8gOiAiICkpCgkgIChzaGVsbC1jb21tYW5kLXRvLXN0cmluZyAoZm9ybWF0ICJsbiAtcyAlcyAl cyIgKHNoZWxsLXF1b3RlLWFyZ3VtZW50IChkaXJlZC1jdXJyZW50LWRpcmVjdG9yeSkpCgkJCQkJ ICAgKHNoZWxsLXF1b3RlLWFyZ3VtZW50IG1pbmd1cy1tcGQtcm9vdCkpKQoKCSAgKHdoZW4gKHll cy1vci1uby1wICJVcGRhdGUgdGhlIGRhdGFiYXNlID8gOiAiKQoJICAgIChtaW5ndXMtdXBkYXRl KQoJICAgIChtZXNzYWdlICJUaGlzIG1pZ2h0IHRha2UgYSB3aGlsZSwgcmVwZWF0IGBtaW5ndXMt ZGlyZWQtYWRkJyB3aGVuIHRoYXQgcmF0dGxpbmcgc291bmQgb2YgeW91ciBoYXJkZGlzayBoYXMg c3Vic2lkZWQiKSkpKSkpCgoKOzsgY3JlYXRlIGZ1bmN0aW9uIG1pbmd1cy1kaXJlZC1hZGQtYW5k LXBsYXkKKG1pbmd1cy1hbmQtcGxheSBtaW5ndXMtZGlyZWQtYWRkIG1pbmd1cy1kaXJlZC1hZGQt YW5kLXBsYXkpCgo7OyBtYWtlIHN1cmUgbWluZ3VzLWRpcmVkLWFkZCBoYW5kbGVzIHBvaW50LW9m LWluc2VydGlvbiBhbmQgbWluZ3VzLW1hcmtlZC1saXN0CihtaW5ndXMtaW5zZXJ0aW9uLWFkdmlj ZSBtaW5ndXMtZGlyZWQtYWRkKQoKOzsgYWxyaWdodCwgYSBjdXN0b21pemF0aW9uIGlzIGluIHBs YWNlIGZvciBpbnRlcmZlcmluZyB3aXRoIGRpcmVkJ3MgZGVmYXVsdHM6CihkZWZjdXN0b20gbWlu Z3VzLWRpcmVkLWFkZC1rZXlzIG5pbAogICJBZGQga2V5cyBmb3IgaW50ZXJhY3Rpb24gdG8gZGly ZWQtbW9kZS1tYXA7Cgp0aGUgZmlsZSBcIm1pbmd1cy1zdGF5cy1ob21lLmVsY1wiIG5lZWRzIHRv IGJlIHJlbG9hZGVkIGZvciBhIGNoYW5nZSBoZXJlIHRvIGhhdmUgZWZmZWN0LiIKICA6Z3JvdXAg J21pbmd1cwogIDp0eXBlICcoYm9vbGVhbikpCgooZXZhbC13aGVuIChsb2FkKQogICh3aGVuIG1p bmd1cy1kaXJlZC1hZGQta2V5cwogIChkZWZpbmUta2V5IGRpcmVkLW1vZGUtbWFwICIgIiAnbWlu Z3VzLWRpcmVkLWFkZCkKICAoZGVmaW5lLWtleSBkaXJlZC1tb2RlLW1hcCAiXEMtdSAiICdtaW5n dXMtZGlyZWQtYWRkLWFuZC1wbGF5KQogICh1bmxlc3MgKHN0cmluZy1tYXRjaCAiR05VIEVtYWNz IDIxIiAodmVyc2lvbikpIDtmaXhtZTogbWFrZSB0aGlzIHdvcmsgaW4gZW1hY3MyMSB0b28KICAg IChkZWZpbmUta2V5LWFmdGVyIGRpcmVkLW1vZGUtbWFwIFttZW51LWJhciBvcGVyYXRlIG1pbmd1 c10KICAgICAgJygiQWRkIHRvIE1pbmd1cyIgIC4gbWluZ3VzLWRpcmVkLWFkZCkgJ3F1ZXJ5LXJl cGxhY2UpKSkpCgooZGVmdW4gbWluZ3VzLWRpcmVkLWZpbGUgKCkKICAiT3BlbiBkaXJlZCB3aXRo IHBhcmVudCBkaXIgb2Ygc29uZyBhdCBwb2ludC4iCiAgKGludGVyYWN0aXZlKQogIChkaXJlZCAo bWluZ3VzLWdldC1wYXJlbnQtZGlycykpICItYWwiKQoKKGRlZnVuIG1pbmd1cy1nZXQtcGFyZW50 LWRpcnMgKCkKICAiR2V0IHBhcmVudCBkaXIgb2Ygc29uZyBhdCBwb2ludC4iCiAgKGNhc2UgbWFq b3ItbW9kZQogICAgKCdtaW5ndXMtYnJvd3NlLW1vZGUKICAgICAobWluZ3VzLWdldC1wYXJlbnQt ZGlyLWZyb20tYnJvd3NlcikpCiAgICAodAogICAgIChtaW5ndXMtZ2V0LXBhcmVudC1kaXItZnJv bS1wbGF5bGlzdCkpKSkKCihkZWZ1biBtaW5ndXMtZ2V0LXBhcmVudC1kaXItZnJvbS1icm93c2Vy ICgpCiAgIkdldCBwYXJlbnQgZGlyIG9mIHRoZSBzb25nIGF0IHBvaW50IGluIGBtaW5ndXMtYnJv d3NlJy4iCiAgKGxldCAoKHN0cmluZyAoY29uY2F0IG1pbmd1cy1tcGQtcm9vdCAoYnVmZmVyLXN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludC1hdC1ib2wpKHBvaW50LWF0LWVvbCkpKSkpCiAg ICAoc3RyaW5nLW1hdGNoICIvLiovIiBzdHJpbmcpCiAgICAobWF0Y2gtc3RyaW5nIDAgc3RyaW5n KSkpCgoKIChkZWZ1biBtaW5ndXMtZ2V0LXBhcmVudC1kaXItZnJvbS1wbGF5bGlzdCAoKQogICJH ZXQgIHBhcmVudCBkaXIgb2YgdGhlIHNvbmcgYXQgcG9pbnQgaW4gYG1pbmd1cycuIgogIChsZXQg KChudW1iZXIgKG1pbmd1cy1saW5lLW51bWJlci1hdC1wb3MpKSkKICAgICh3aXRoLXRlbXAtYnVm ZmVyCiAgICAgIChpbnNlcnQgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nICJtcGMgcGxheWxpc3Qg LS1mb3JtYXQgJWZpbGUlIikpCiAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgIChs ZXQgKChzdHJpbmcgKGNvbmNhdCBtaW5ndXMtbXBkLXJvb3QKCQkJICAgIChidWZmZXItc3Vic3Ry aW5nLW5vLXByb3BlcnRpZXMgKGdvdG8tY2hhciAob3IgKHJlLXNlYXJjaC1mb3J3YXJkIChmb3Jt YXQgIiMlZCkgIiBudW1iZXIpIG5pbCB0KSAocG9pbnQtbWluKSkpKHBvaW50LWF0LWVvbCkpKSkp CgkgICAgKGlmICAobG9va2luZy1hdCAiaHR0cDovLyIpCgkJICAoZXJyb3IgIk5vdCBhIGxvY2Fs IGZpbGUhIikKCSAgICAgIChzdHJpbmctbWF0Y2ggIi8uKi8iIHN0cmluZykKCSAgICAgIChtYXRj aC1zdHJpbmcgMCBzdHJpbmcpKSkpKSkKCgo7OyBhZGQgc29tZSBrZXlzIHRvIHRoZSB2YXJpb3Vz IG1vZGVzIGZvciBkaXJlZCBsb29rLXVwcwooZGVmaW5lLWtleSBtaW5ndXMtcGxheWxpc3QtbWFw ICIwIiAnbWluZ3VzLWRpcmVkLWZpbGUpCihkZWZpbmUta2V5IG1pbmd1cy1icm93c2UtbWFwICIw IiAnbWluZ3VzLWRpcmVkLWZpbGUpCihkZWZpbmUta2V5IG1pbmd1cy1oZWxwLW1hcCAiMCIgIyco bGFtYmRhICgpCgkJCQkgICAgKGludGVyYWN0aXZlKQoJCQkJICAgIChkaXJlZCBtaW5ndXMtbXBk LXJvb3QpKSkKCihkZWZpbmUta2V5IG1pbmd1cy1wbGF5bGlzdC1tYXAgIiMiICdtaW5ndXMtaWQz LXNldCkKKGRlZmluZS1rZXkgbWluZ3VzLXBsYXlsaXN0LW1hcCAiZSIgJ21pbmd1cy1pZDMtZXJh c2UpCgooZXZhbC13aGVuIChsb2FkKQogICh1bmxlc3MgKHN0cmluZy1tYXRjaCAiR05VIEVtYWNz IDIxIiAodmVyc2lvbikpIDtmaXhtZTogbWFrZSB0aGlzIHdvcmsgaW4gZW1hY3MyMSB0b28KICAg IChkZWZpbmUta2V5LWFmdGVyIG1pbmd1cy1wbGF5bGlzdC1tYXAgW21lbnUtYmFyIG1pbmd1cyBk aXJlZF0KICAgICAgJygiRGlyZWQgZmlsZSIgLiBtaW5ndXMtZGlyZWQtZmlsZSkgJ3JlcGVhdCkK ICAgIChkZWZpbmUta2V5LWFmdGVyIG1pbmd1cy1wbGF5bGlzdC1tYXAgW21lbnUtYmFyIG1pbmd1 cyBpZDMtc2V0XQogICAgICAnKCJTZXQgSUQzIHRhZyIgLiBtaW5ndXMtaWQzLXNldCkgJ2RpcmVk KQogICAgKGRlZmluZS1rZXktYWZ0ZXIgbWluZ3VzLXBsYXlsaXN0LW1hcCBbbWVudS1iYXIgbWlu Z3VzIGlkMy1lcmFzZV0KICAgICAgJygiRXJhc2UgSUQzIHRhZyIgLiBtaW5ndXMtaWQzLWVyYXNl KSAnaWQzLXNldCkpKQoKOzs7OyB7e01pbmlidWZmZXJ9fQoKKGRlZnVuIG1pbmd1cy1kd2ltLWFk ZCAoKQogICJJbiBgZGlyZWQnLCBhZGQgbWFya2VkIGZpbGVzIG9yIGZpbGUgYXQgcG9pbnQgdG8g dGhlIG1wZCBwbGF5bGlzdC4KSW4gb3RoZXIgbW9kZXMsIHVzZSB0aGUgbWluaWJ1ZmZlci4KCgpJ ZiBtcGQgaXMgdW53YXJ5IG9mIHRoZXNlIGZpbGVzLCBhc2sgd2hldGhlciB0byBtYWtlIGEgc3lt bGluay4KQ3JlYXRlIGEgc3ltbGluaywgYW5kIG9wdGlvbmFsbHkgdXBkYXRlIGRhdGFiYXNlLgoK SWYgdXBkYXRpbmcgdGFrZXMgdG9vIGxvbmcsIGl0IG1pZ2h0IGJlIHRoYXQgdGhpcyBkb2VzIG5v dCB3b3JrIGluIG9uZSBnby4KVHJ5IGFnYWluIGF0IGEgbGF0ZXIgdGltZSBpZiB0aGlzIGhhcHBl bnMuIgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgob2xkLWxlbmd0aCAobWluZ3VzLXBsYXlsaXN0 LWxlbmd0aCkpKQogICAgKGNhc2UgbWFqb3ItbW9kZQogICAgICAoJ2RpcmVkLW1vZGUKICAgICAg IChtaW5ndXMtYWRkIChtYXBjb25jYXQgJ21pbmd1cy1yZXBsYWNlLWFic29sdXRlLXBhdGgtd2l0 aC1yZWxhdGl2ZS1vbmUgKGRpcmVkLWdldC1tYXJrZWQtZmlsZXMpICIgIikpKQogICAgICAodAog ICAgICAgKG1pbmd1cy1hZGQgKG1pbmd1cy1yZXBsYWNlLWFic29sdXRlLXBhdGgtd2l0aC1yZWxh dGl2ZS1vbmUgKGV4cGFuZC1maWxlLW5hbWUgKHJlYWQtZmlsZS1uYW1lICJBZGQ6ICIpKSkpKSkK ICAgIDs7IG1ha2Ugc3VyZSBtaW5ndXMtYWRkIGhhcyBpbmRlZWQgYWRkZWQgdGhlIHN0dWZmOgog ICAgKGlmICg9IG9sZC1sZW5ndGggKG1pbmd1cy1wbGF5bGlzdC1sZW5ndGgpKQoJOzsgaWYgbm90 LCBhc2sgc29tZSBxdWVzdGlvbnMKCSh3aGVuICh5ZXMtb3Itbm8tcCAoZm9ybWF0ICJTb21ldGhp bmcgaGFzIGdvbmUgd3JvbmcuIFBvc3NpYmx5IG1wZCBkb2VzIG5vdCBrbm93IGFib3V0IHRoZSBm aWxlLgpEbyB5b3Ugd2FudCB0byBzeW1saW5rIHRoZSBwYXJlbnQgZGlyZWN0b3J5PyA6ICIgKSkK CSAgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nIChmb3JtYXQgImxuIC1zICVzICVzIiAoc2hlbGwt cXVvdGUtYXJndW1lbnQgKGRpcmVkLWN1cnJlbnQtZGlyZWN0b3J5KSkKCQkJCQkgICAoc2hlbGwt cXVvdGUtYXJndW1lbnQgbWluZ3VzLW1wZC1yb290KSkpCgoJICAod2hlbiAoeWVzLW9yLW5vLXAg IlVwZGF0ZSB0aGUgZGF0YWJhc2UgPyA6ICIpCgkgICAgKG1pbmd1cy11cGRhdGUpCgkgICAgKG1l c3NhZ2UgIlRoaXMgbWlnaHQgdGFrZSBhIHdoaWxlLCByZXBlYXQgYG1pbmd1cy1kaXJlZC1hZGQn IHdoZW4gdGhhdCByYXR0bGluZyBzb3VuZCBvZiB5b3VyIGhhcmRkaXNrIGhhcyBzdWJzaWRlZCIp KSkKICAgICAgKGNhc2UgbWFqb3ItbW9kZQoJKCdtaW5ndXMtYnVybnMgKG1pbmd1cy1idXJucykp KSkpKQoKCihtaW5ndXMtYW5kLXBsYXkgbWluZ3VzLWR3aW0tYWRkIG1pbmd1cy1kd2ltLWFkZC1h bmQtcGxheSkKCjs7Ozsge3tJZDN9fQo7OyBHZXQgbWV0YWRhdGEgZGlyZWN0bHkgZnJvbSBtcGQs IHVuYW1iaWd1b3VzbHkuCihkZWZ1biBtaW5ndXMtcmVhZC1lbnRpcmUtbWV0YWRhdGEgKCkKICAo cmVhZAogICAoY29uY2F0ICIoIgoJICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAgIiNcXChb MC05XStcXCkpIiAnKGxhbWJkYSAoaXRlbSkKCQkJCQkJCSAgKGZvcm1hdCAiKDpudW1iZXIgJXMi IChtYXRjaC1zdHJpbmcgMSBpdGVtKSkpCgkJCQkgICAgICAoc2hlbGwtY29tbWFuZC10by1zdHJp bmcKCQkJCSAgICAgICAoY29uY2F0ICJtcGMgLS1mb3JtYXQgXCIiCgkJCQkJICAgICAgICJbOm5h bWUgXFxcIiVuYW1lJVxcXCJdIgoJCQkJCSAgICAgICAiWzphcnRpc3QgXFxcIiVhcnRpc3QlXFxc Il0iCgkJCQkJICAgICAgICJbOnRpdGxlIFxcXCIldGl0bGUlXFxcIl0iCgkJCQkJICAgICAgICJb OmZpbGUgXFxcIiVmaWxlJVxcXCJdIgoJCQkJCSAgICAgICAiWzphbGJ1bSBcXFwiJWFsYnVtJVxc XCJdIgoJCQkJCSAgICAgICAiWzp0aW1lIFxcXCIldGltZSVcXFwiXSIKCQkJCQkgICAgICAgIls6 dHJhY2sgXFxcIiV0cmFjayVcXFwiXSIKCQkJCQkgICAgICAgIls6bmFtZSBcXFwiJW5hbWUlXFxc Il0iCgkJCQkJICAgICAgICIpXCIgcGxheWxpc3QiKSkpICIpIikpKQoKCgo7Ozs7IHt7SWQzIC0g RGF0YXN0cnVjdHVyZXN9fQooZGVmdmFyICptaW5ndXMtaWQzLWl0ZW1zKgogICcoYXJ0aXN0IGFs YnVtIHNvbmcgdHJhY2s7IHllYXIKIGNvbW1lbnQgZ2VucmUpCiAgIkEgbGlzdCBmb3Igc3Rvcmlu ZyBpbmZvcm1hdGlvbiBvbiBoYW5kbGluZyBpZDMtcmVsYXRlZCBmdW5jdGlvbnMgYW5kIGRhdGEg Zm9yIGBtaW5ndXMtaWQzLXNldCc7CgpJdHMgcHJvcGVydHkgbGlzdCBpcyBvZiBncmVhdCBpbXBv cnRhbmNlLiIpCgoKOzsgY3JlYXRlIGEgc3RydWN0dXJlIGZvciB1c2UgaW4gdGhlIHBsaXN0IG9m IGAqbWluZ3VzLWlkMy1pdGVtcyonCihkZWZzdHJ1Y3QgKGlkMy1pdGVtKQogIChtaW5pYnVmZmVy LXN0cmluZyBuaWwpCiAgKG9wdGlvbi1zdHJpbmcgbmlsKQogICh2b3JiaXNjb21tZW50IG5pbCkK ICAobGx0YWctc3RyaW5nIG5pbCkKICAobGlzdC1vci1saXN0LWZ1bmN0aW9uKQogIChoaXN0b3J5 LWxpc3QgbmlsKSkKCihkZWZ1biBtaW5ndXMtaWQzLWdldC1pdGVtIChpdGVtKQogICJTaG9ydGN1 dCBmdW5jdGlvbiB0byBnZXQgYXQgYW4gaXRlbSBpbiB0aGUgcGxpc3Qgb2YgYCptaW5ndXMtaWQz LWl0ZW1zKiciCiAgKGdldCAnKm1pbmd1cy1pZDMtaXRlbXMqIGl0ZW0pKQoKOzsgZmlsbCB1cCB0 aGUgcGxpc3Qgb2YgYCptaW5ndXMtaWQzLWl0ZW1zKicKKHByb2duCiAgKHB1dCAnKm1pbmd1cy1p ZDMtaXRlbXMqICd0cmFjawogICAgICAgKG1ha2UtaWQzLWl0ZW0KCTptaW5pYnVmZmVyLXN0cmlu ZyAiVHJhY2sgbnVtYmVyLyhvcHRpb25hbDogdG90YWwgdHJhY2tzKTogIgoJOm9wdGlvbi1zdHJp bmcgIi1UIgoJOmxsdGFnLXN0cmluZyAiLW4iCgk6dm9yYmlzY29tbWVudCAiVFJBQ0tOVU1CRVIi Cgk6bGlzdC1vci1saXN0LWZ1bmN0aW9uCgknKGxhbWJkYSAoKQoJICAgKHNhdmUtZXhjdXJzaW9u CgkgICAgIChiZWdpbm5pbmctb2YtbGluZSkKCSAgICAgKGxldCAobGlzdCkKCSAgICAgICAod2hp bGUKCQkgICAocmUtc2VhcmNoLWZvcndhcmQgIlswLTldKyIgKC0gKHBvaW50LWF0LWVvbCkgMSkg dCkKCQkgKHB1c2ggKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDApIGxpc3QpKSBsaXN0KSkp Cgk6aGlzdG9yeS1saXN0ICcqbWluZ3VzLWlkMy10cmFjay1oaXN0b3J5KikpCgogIChwdXQgJypt aW5ndXMtaWQzLWl0ZW1zKiAnZ2VucmUKICAgICAgIChtYWtlLWlkMy1pdGVtCgk6bWluaWJ1ZmZl ci1zdHJpbmcgIkdlbnJlOiAiCgk6b3B0aW9uLXN0cmluZyAiLWciCgk6bGx0YWctc3RyaW5nICIt ZyIKCTp2b3JiaXNjb21tZW50ICJHRU5SRSIKCTpsaXN0LW9yLWxpc3QtZnVuY3Rpb24KCSdtaW5n dXMtbWFrZS1nZW5yZS1hbGlzdAoJOmhpc3RvcnktbGlzdCAnKm1pbmd1cy1pZDMtZ2VucmUtaGlz dG9yeSopKQoKICAocHV0ICcqbWluZ3VzLWlkMy1pdGVtcyogJ2FydGlzdAogICAgICAgKG1ha2Ut aWQzLWl0ZW0KCTptaW5pYnVmZmVyLXN0cmluZyAiQXJ0aXN0OiAiCgk6b3B0aW9uLXN0cmluZyAi LWEiCgk6bGx0YWctc3RyaW5nICItYSIKCTp2b3JiaXNjb21tZW50ICJBUlRJU1QiCgk6bGlzdC1v ci1saXN0LWZ1bmN0aW9uCgknKGxhbWJkYSAoKQoJICAgKHNhdmUtZXhjdXJzaW9uCgkgICAgICh3 aWRlbikKCSAgICAgKGVuZC1vZi1saW5lKQoJICAgICAobGV0ICgoYmVnIChvciAoYW5kIChyZS1z ZWFyY2gtYmFja3dhcmQgIi8iIChwb2ludC1hdC1ib2wpIHQpICgxKyAocG9pbnQpKSkKCQkJICAg IChwcm9nbiAoYmVnaW5uaW5nLW9mLWxpbmUpIChwb2ludCkpKSkpCgkgICAgICAgKGxpc3QKCQko aWYgKHJlLXNlYXJjaC1mb3J3YXJkICIgKi0gKiIgKHBvaW50LWF0LWVvbCkgdCkKCQkgICAgKGJ1 ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBiZWcgKG1hdGNoLWJlZ2lubmluZyAwKSkgIiIp KSkpKQoJOmhpc3RvcnktbGlzdCAnKm1pbmd1cy1pZDMtYXJ0aXN0LWhpc3RvcnkqKSkKCiAgKHB1 dCAnKm1pbmd1cy1pZDMtaXRlbXMqICdzb25nCiAgICAgICAobWFrZS1pZDMtaXRlbQoJOm1pbmli dWZmZXItc3RyaW5nICJTb25ndGl0bGU6ICIKCTpvcHRpb24tc3RyaW5nICItdCIKCTpsbHRhZy1z dHJpbmcgIi10IgoJOnZvcmJpc2NvbW1lbnQgIlRJVExFIgoJOmxpc3Qtb3ItbGlzdC1mdW5jdGlv bgoJJyhsYW1iZGEgKCkKCSAgIChzYXZlLWV4Y3Vyc2lvbgoJICAgICAoZW5kLW9mLWxpbmUpCgkg ICAgIChvciAocmUtc2VhcmNoLWJhY2t3YXJkICJcXC4iICgtIChwb2ludC1hdC1lb2wpIDUpIHQp CgkJIChyZS1zZWFyY2gtYmFja3dhcmQgIiAoWzAtOV0rKSIgKHBvaW50LWF0LWJvbCkgdCkpCgkg ICAgIChsZXQgKChwb3MgKHBvaW50KSkpCgkgICAgICAgKGxpc3QKCQkoYnVmZmVyLXN1YnN0cmlu Zy1uby1wcm9wZXJ0aWVzCgkJIChpZiAocmUtc2VhcmNoLWJhY2t3YXJkICAiICotICoiIChwb2lu dC1hdC1ib2wpIHQpCgkJICAgICAocHJvZ24KCQkgICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkICJb MC05XSsgIiAocG9pbnQtYXQtZW9sKSB0KQoJCSAgICAgICAobWF0Y2gtZW5kIDApKQoJCSAgIChw b2ludC1hdC1ib2wpKSBwb3MpKSkpKQoJOmhpc3RvcnktbGlzdCAnKm1pbmd1cy1pZDMtc29uZy1o aXN0b3J5KikpCgogIChwdXQgJyptaW5ndXMtaWQzLWl0ZW1zKiAneWVhcgogICAgICAgKG1ha2Ut aWQzLWl0ZW0KICAJOm1pbmlidWZmZXItc3RyaW5nICJZZWFyOiAiCiAgCTpvcHRpb24tc3RyaW5n ICIteSIKCTpsbHRhZy1zdHJpbmcgIi1kIgogIAk6dm9yYmlzY29tbWVudCAiWUVBUiIKICAJOmxp c3Qtb3ItbGlzdC1mdW5jdGlvbgogIAknKGxhbWJkYSAoKQogIAkgICAoc2F2ZS1leGN1cnNpb24K ICAJICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgCSAgICAgKGlmIChyZS1zZWFyY2gtZm9yd2Fy ZCAiWzAtOV1cXHs0XFx9IiAocG9pbnQtYXQtZW9sKSB0KQogIAkJIChsaXN0IChtYXRjaC1zdHJp bmctbm8tcHJvcGVydGllcyAwKSkpKSkKICAJOmhpc3RvcnktbGlzdCAnKm1pbmd1cy1pZDMteWVh ci1oaXN0b3J5KikpCgogIChwdXQgJyptaW5ndXMtaWQzLWl0ZW1zKiAnY29tbWVudAogICAgICAg KG1ha2UtaWQzLWl0ZW0KCTptaW5pYnVmZmVyLXN0cmluZyAiQ29tbWVudDogIgoJOm9wdGlvbi1z dHJpbmcgIi1jIgoJOnZvcmJpc2NvbW1lbnQgIkNPTU1FTlQiCgk6bGlzdC1vci1saXN0LWZ1bmN0 aW9uCgknKGxhbWJkYSAoKQoJICAgKGxpc3QpKQoJOmhpc3RvcnktbGlzdCAnKm1pbmd1cy1pZDMt Y29tbWVudC1oaXN0b3J5KikpCgogIChwdXQgJyptaW5ndXMtaWQzLWl0ZW1zKiAnYWxidW0KICAg ICAgIChtYWtlLWlkMy1pdGVtCgk6bWluaWJ1ZmZlci1zdHJpbmcgIkFsYnVtOiAiCgk6b3B0aW9u LXN0cmluZyAiLUEiCgk6dm9yYmlzY29tbWVudCAiQUxCVU0iCgk6bGlzdC1vci1saXN0LWZ1bmN0 aW9uCgknKGxhbWJkYSAoKQoJICAgKHNhdmUtZXhjdXJzaW9uCgkgICAgIChiZWdpbm5pbmctb2Yt bGluZSkKCSAgICAgKHJlLXNlYXJjaC1mb3J3YXJkICIgKi0gKiIgKC0gKHBvaW50LWF0LWVvbCkg NSkgdCkKCSAgICAgKGxldCAoKHBvcyAocG9pbnQpKSkKCSAgICAgICAobGlzdAoJCShidWZmZXIt c3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKCQkJKG9yIChhbmQgKHJlLXNlYXJjaC1mb3J3YXJkICAi ICotICoiIChwb2ludC1hdC1lb2wpIHQpIChtYXRjaC1iZWdpbm5pbmcgMCkpIHBvcykKCQkgICAg cG9zKSkpKSkKCTpoaXN0b3J5LWxpc3QgJyptaW5ndXMtaWQzLWFsYnVtLWhpc3RvcnkqKSkpCgoK OzsgaWQzLWhpc3RvcnkgdmFyaWFibGVzIChhcyBjb21wbGV0aW5nLXJlYWQgbmVlZHMgdGhlbSB0 byBiZSByZWZlcnJlZCB0byBhcyBhIHN5bWJvbCwgSSBjYW5ub3QgaGlkZSB0aGVtKQooZGVmdmFy ICptaW5ndXMtaWQzLXNvbmctaGlzdG9yeSogbmlsCiAgIkhpc3Rvcnkgb2YgaWQzLXNvbmdzIGZv ciB1c2UgaW4gTWluZ3VzIikKKGRlZnZhciAqbWluZ3VzLWlkMy1hcnRpc3QtaGlzdG9yeSogbmls CiAgIkhpc3Rvcnkgb2YgaWQzLWFydGlzdHMgZm9yIHVzZSBpbiBNaW5ndXMiKQooZGVmdmFyICpt aW5ndXMtaWQzLWFsYnVtLWhpc3RvcnkqIG5pbAogICJIaXN0b3J5IG9mIGlkMy1hbGJ1bXMgZm9y IHVzZSBpbiBNaW5ndXMiKQooZGVmdmFyICptaW5ndXMtaWQzLWdlbnJlLWhpc3RvcnkqIG5pbAog ICJIaXN0b3J5IG9mIGlkMy1nZW5yZXMgZm9yIHVzZSBpbiBNaW5ndXMiKQooZGVmdmFyICptaW5n dXMtaWQzLXllYXItaGlzdG9yeSogbmlsCiAgIkhpc3Rvcnkgb2YgaWQzLXllYXJzIGZvciB1c2Ug aW4gTWluZ3VzIikKKGRlZnZhciAqbWluZ3VzLWlkMy1jb21tZW50LWhpc3RvcnkqIG5pbAogICJI aXN0b3J5IG9mIGlkMy1jb21tZW50cyBmb3IgdXNlIGluIE1pbmd1cyIpCgoKCjs7Ozsge3tJZDMg LSBGdW5jdGlvbnN9fQooZGVmdW4gbWluZ3VzLW1ha2UtZ2VucmUtYWxpc3QgKCkKICAiTWFrZSBh biBhbGlzdCBvZiBhbGwga25vd24gaWQzIGdlbnJlcyB3aXRoIHRoZWlyIHJlc3BlY3RpdmUgY2Fu b25pY2FsIG51bWJlcnMiCiAgKGxldCAoKGNvdW50IC0xKSkKICAgIChtYXBjYXIgKGxhbWJkYSAo Z2VucmUpCgkgICAgICAoaW5jZiBjb3VudCkKCSAgICAgIChjb25zIChkb3duY2FzZSBnZW5yZSkg Y291bnQpKQoJICAgIChzcGxpdC1zdHJpbmcgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nICJpZDN2 MiAtTCIpICJcXChbIFxuMC05XSs6IFxcfFtcZlx0XG5cclx2XStcXCkiKSkpKQoKCjs7IG5lZWRz IGEgc3BsaXQgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiBmaWxlCihkZWZ1biBtaW5ndXMtaWQzLWVy YXNlICgpCiAgIkVyYXNlIGlkMyBjb250ZW50cyBmcm9tIHNvbmcgYXQgcG9pbnQsIGluIGVpdGhl ciBgbWluZ3VzJyBvciBgbWluZ3VzLWJyb3dzZSciCiAgKGludGVyYWN0aXZlKQogIChsZXQqICgo bmFtZSAoY2FyIChtaW5ndXMtZ2V0LWZpbGVuYW1lLWZvci1zaGVsbCAobWluZ3VzLWxpbmUtbnVt YmVyLWF0LXBvcykpKSkKCSAodHlwZSAobWluZ3VzLXdoYXQtdHlwZSBuYW1lKSkpCiAgICAoY2Fz ZSB0eXBlCiAgICAgIChmbGFjIChzaGVsbC1jb21tYW5kIChmb3JtYXQgIm1ldGFmbGFjIC0tcmVt b3ZlLWFsbC10YWdzICVzIiAoc2hlbGwtcXVvdGUtYXJndW1lbnQgbmFtZSkpKSkKICAgICAgKG1w MyAoc2hlbGwtY29tbWFuZCAoZm9ybWF0ICJpZDN2MiAtRCAlcyIgKHNoZWxsLXF1b3RlLWFyZ3Vt ZW50IG5hbWUpKSkpCiAgICAgICh0IChtZXNzYWdlICJEb24ndCBrbm93IGhvdyB0byBzdHJpcCB0 YWcgb2YgdHlwZSAlczsgbm90aWZ5IG1lIGlmIHlvdSBkbyBrbm93LiIgdHlwZSkpKSkpCgoKKGRl ZnVuIG1pbmd1cy13aGF0LXR5cGUgKHN0cmluZykKICAiUmV0dXJuIHN5bWJvbCwgYmFzZWQgb24g ZXh0ZW5zaW9uIgogIChzdHJpbmctbWF0Y2ggIlxcLlxcKFteLl0qXFwpJCIgc3RyaW5nKQogIChp bnRlcm4tc29mdCAoZG93bmNhc2UgKG1hdGNoLXN0cmluZyAxIHN0cmluZykpKSkKCgooZGVmdW4g bWluZ3VzLWlkMy1zZXQgKCZvcHRpb25hbCBsaXN0KQogICJTZXQgaWQzIG9yIG90aGVyIG1ldGFk YXRhIHRhZ3MgaW4gYG1pbmd1cycgb3IgYG1pbmd1cy1icm93c2UnLgpUaGlzIHdpbGwgcmVtb3Zl IHByZWV4aXN0aW5nIHRhZ3MsIGFsc28gd2hlbiBhbiBlbXB0eSBzdHJpbmcgaXMKcHJvdmlkZWQu ICBJZiBMSVNUIGlzIGdpdmVuLCBhbGwgdGFncyBpbiBMSVNUIHdpbGwgYmUgYXNrZWQ7IHRoZQp0 YWdzIGluIExJU1QgbXVzdCBiZSBhIHN1YnNldCBvZiAqbWluZ3VzLWlkMy1pdGVtcyouIEN1cnJl bnRseSwKdGhlIG9nZy1pbXBsZW1lbnRhdGlvbiBpcyB0aGUgbW9zdCBhbm5veWluZywgYXMgdm9y YmlzY29tbWVudApldmVuIHJlbW92ZXMgdW5wcm92aWRlZCB0YWdzIHdpdGggdGhlIC13IG9wdGlv bi4KCklmIExJU1QgaXMgbm90IHByb3ZpZGVkLCB0YWdzIGluICptaW5ndXMtaWQzLWl0ZW1zKiB3 aWxsIGJlIHVzZWQuCgpUaGUgZWZmZWN0IHdpbGwgb25seSBiZSBzaG93biBhZnRlciBhIGBtaW5n dXMtdXBkYXRlJyIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCogKChuYW1lIChjYXIgKG1pbmd1cy1n ZXQtZmlsZW5hbWUtZm9yLXNoZWxsIChtaW5ndXMtbGluZS1udW1iZXItYXQtcG9zKSkpKQoJICh0 eXBlIChtaW5ndXMtd2hhdC10eXBlIG5hbWUpKQoJICh3ZWxsLXF1b3RlZC1uYW1lIChzaGVsbC1x dW90ZS1hcmd1bWVudCBuYW1lKSkKCSAodGFnbGlzdCAob3IgbGlzdCAqbWluZ3VzLWlkMy1pdGVt cyopKSkKICAgIChjYXNlIHR5cGUKICAgICAgKG1wMwogICAgICAgKHNoZWxsLWNvbW1hbmQgKGZv cm1hdCAiaWQzdjIgJXMgJXMiCgkJCSAgICAgIChtYXBjb25jYXQgIycobGFtYmRhIChpdGVtKSBp dGVtKQoJCQkJCSAobWFwY2FyIChsYW1iZGEgKG9wdGlvbikKCQkJCQkJICAgKGNvbmNhdCAoaWQz LWl0ZW0tb3B0aW9uLXN0cmluZyAobWluZ3VzLWlkMy1nZXQtaXRlbSBvcHRpb24pKQoJCQkJCQkJ ICAgIiBcJyIgKGFwcGx5IG1pbmd1cy1pZDMtZm9ybWF0IChsaXN0IChtaW5ndXMtcmVhZC1pZDMt ZWx0IG9wdGlvbikpKSAiXCciKSkKCQkJCQkJIHRhZ2xpc3QpICIgIikKCQkJICAgICAgd2VsbC1x dW90ZWQtbmFtZSkpKQogICAgICAob2dnCiAgICAgICAoc2hlbGwtY29tbWFuZCAoZm9ybWF0ICJ2 b3JiaXNjb21tZW50IC13ICVzICVzIgogICAgICAJCQkgICAgICAobWFwY29uY2F0ICMnKGxhbWJk YSAoaXRlbSkgaXRlbSkKICAgICAgCQkJCQkgKG1hcGNhciAobGFtYmRhIChvcHRpb24pCiAgICAg IAkJCQkJCSAgIChjb25jYXQgIi10IFwiIiAoaWQzLWl0ZW0tdm9yYmlzY29tbWVudCAobWluZ3Vz LWlkMy1nZXQtaXRlbSBvcHRpb24pKQogICAgICAJCQkJCQkJICAgIj0iIChhcHBseSBtaW5ndXMt aWQzLWZvcm1hdCAobGlzdCAobWluZ3VzLXJlYWQtaWQzLWVsdCBvcHRpb24pKSkgIlwiIikpCiAg ICAgIAkJCQkJCSB0YWdsaXN0KSAiICIpCiAgICAgIAkJCSAgICAgICB3ZWxsLXF1b3RlZC1uYW1l KSkpCiAgICAgIChmbGFjCiAgICAgICAoc2hlbGwtY29tbWFuZCAoZm9ybWF0ICJtZXRhZmxhYyAl cyAlcyIKCQkJICAgICAgKG1hcGNvbmNhdCAjJyhsYW1iZGEgKGl0ZW0pIGl0ZW0pCgkJCQkJICht YXBjYXIgKGxhbWJkYSAob3B0aW9uKQoJCQkJCQkgICAoY29uY2F0ICItLXJlbW92ZS10YWc9IgoJ CQkJCQkJICAgKGlkMy1pdGVtLXZvcmJpc2NvbW1lbnQgKG1pbmd1cy1pZDMtZ2V0LWl0ZW0gb3B0 aW9uKSkKCQkJCQkJCSAgICAiIC0tc2V0LXRhZz1cIiIKCQkJCQkJCSAgIChpZDMtaXRlbS12b3Ji aXNjb21tZW50IChtaW5ndXMtaWQzLWdldC1pdGVtIG9wdGlvbikpCgkJCQkJCQkgICAiPSIKCQkJ CQkJCSAgIChhcHBseSBtaW5ndXMtaWQzLWZvcm1hdCAobGlzdCAobWluZ3VzLXJlYWQtaWQzLWVs dCBvcHRpb24pKSkKCQkJCQkJCSAgICJcIiIpKQoJCQkJCQkgdGFnbGlzdCkgIiAiKQoJCQkgICAg ICB3ZWxsLXF1b3RlZC1uYW1lKSkpCiAgICAgICh0IChtZXNzYWdlICJEb24ndCBrbm93IGhvdyB0 byBzZXQgdGFnIGZvciB0eXBlICVzIiB0eXBlKSkpKSkKOzsKKGRlZmN1c3RvbSBtaW5ndXMtaWQz LWZvcm1hdCAnZG93bmNhc2UKICAiRm9ybWF0IHVzZWQgYnkgYG1pbmd1cy1pZDMtc2V0JyBmb3Ig Zm9ybWF0dGluZyBpZDMtdGFnczsKCnZhbGlkIG9wdGlvbnMgYXJlOgpkb3duY2FzZSwKdXBjYXNl LApjYXBpdGFsaXplIgogIDpncm91cCAnbWluZ3VzCiAgOnR5cGUgJyhjaG9pY2UKCSAgKGNvbnN0 IDp0YWcgImRvd25jYXNlIiBkb3duY2FzZSkKCSAgKGNvbnN0IDp0YWcgInVwY2FzZSIgdXBjYXNl KQoJICAoY29uc3QgOnRhZyAiY2FwaXRhbGl6ZSIgY2FwaXRhbGl6ZSkpKQoKCihkZWZ1biBtaW5n dXMtcmVhZC1pZDMtZWx0IChpdGVtKSA7b3B0aW9uYWwgYXJncyBhcmUgYSB0ZXN0CiAgIlRyeSB0 byByZXRyaWV2ZSBpbmZvIG9mIHR5cGUgSVRFTSBvZiBzb25nIGF0IHBvaW50IGZvciBgbWluZ3Vz LWlkMy1zZXQnOwoKSVRFTSBtdXN0IGJlIG9uZSBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHZhcmlh YmxlIGAqbWluZ3VzLWlkMy1pdGVtcyonIgogIChsZXQqICgobGlzdCAoZnVuY2FsbCAoaWQzLWl0 ZW0tbGlzdC1vci1saXN0LWZ1bmN0aW9uIChtaW5ndXMtaWQzLWdldC1pdGVtIGl0ZW0pKSkpCgkg KHJlc3VsdCAoY29tcGxldGluZy1yZWFkLWFsbG93LXNwYWNlcyAoaWQzLWl0ZW0tbWluaWJ1ZmZl ci1zdHJpbmcgKG1pbmd1cy1pZDMtZ2V0LWl0ZW0gaXRlbSkpCgkJCQkgIGxpc3QKCQkJCSAgbmls IG5pbCAoY2FyIGxpc3QpIChpZDMtaXRlbS1oaXN0b3J5LWxpc3QgKG1pbmd1cy1pZDMtZ2V0LWl0 ZW0gaXRlbSkpKSkpCiAgICAoaWYgKGVxIGl0ZW0gJ2dlbnJlKQkJO29uZSBzcGVjaWFsIGNhc2Ug Zm9yIGdlbnJlcy4gT3RoZXJ3aXNlLCBJJ2QgaGF2ZSB0byBtYWtlCgkJCQkJO3RoaXMgd2hvbGUg ZnVuY3Rpb24gYSBtZXRob2QKCShjYXNlIChtaW5ndXMtd2hhdC10eXBlIChtaW5ndXMtZ2V0LXNp bmdsZS1maWxlbmFtZS1mb3Itc2hlbGwpKQoJICAobXAzIChudW1iZXItdG8tc3RyaW5nIChvciAo Y2RyIChhc3NvYyByZXN1bHQgKG1pbmd1cy1tYWtlLWdlbnJlLWFsaXN0KSkpIDApKSkKCSAgKHQg cmVzdWx0KSkKICAgICAgcmVzdWx0KSkpCgo7Ozs7IHt7VGh1bWJzfX0KCgooZXZhbC13aGVuIChj b21waWxlKQogICh3aGVuIChmZWF0dXJlcCAndGh1bWJzKQogICAgKGRlZnVuIG1pbmd1cy10aHVt YnMgKCkKICAgICAgIkluIG1pbmd1cywgb3BlbiBhIGJ1ZmZlciB3aXRoIGNvdmVyIGFydCBmb3Vu ZCBpbiB0aGUgZGlyZWN0b3J5IG9mIHNvbmcgYXQgcG9pbnQuIgogICAgICAoaW50ZXJhY3RpdmUp CiAgICAgICh0aHVtYnMgKG1pbmd1cy1nZXQtcGFyZW50LWRpcnMpKSkKCiAgICAoZGVmaW5lLWtl eSBtaW5ndXMtcGxheWxpc3QtbWFwICJUIiAnbWluZ3VzLXRodW1icykKICAgIChkZWZpbmUta2V5 IG1pbmd1cy1icm93c2UtbWFwICJUIiAnbWluZ3VzLXRodW1icykpKQoKOzs7OyB7e0N1c3RvbWl6 YXRpb259fQooZGVmZ3JvdXAgbWluZ3VzLWJ1cm5zIG5pbAogICJDdXN0b21pemF0aW9uIGdyb3Vw IGZvciByZWNvcmRpbmcgY2QncyB3aXRoIGBtaW5ndXMnIgogIDpncm91cCAnbWluZ3VzKQoKKGRl ZmN1c3RvbSBtaW5ndXMtYnVybnMtdG1wLXdhdi1kaXIgIn4vLm1pbmd1cy90bXAiCiAgIkRpcmVj dG9yeSB0byBob2xkIHRlbXBvcmFyeSAud2F2IGZpbGVzIGZvciBhIHJlY29yZGluZyBzZXNzaW9u LiIKICA6Z3JvdXAgJ21pbmd1cy1idXJucwogIDp0eXBlICcoZmlsZSkpCgooZGVmY3VzdG9tIG1p bmd1cy1idXJucy1mb3JtYXQtc3RyaW5nCiAgICJ3b2RpbSBkZXY9JXMgLWVqZWN0IC1wYWQgLWF1 ZGlvIC1zcGVlZD0lcyAtZml4IgogICAiRm9ybWF0IHN0cmluZyBmb3IgdGhlIGJ1cm5pbmcgcHJv Y2Vzcy4KVGhpcyBzdHJpbmcgY2FuIGJlIGZlZCwgaW4gb3JkZXI6CgptaW5ndXMtYnVybnMtZGV2 aWNlCm1pbmd1cy1idXJucy1zcGVlZAoKSG93ZXZlciwgeW91IGNhbiBqdXN0IGFzIHdlbGwgc3Bl Y2lmeSBpdCBkaXJlY3RseSBpbiB0aGlzIHN0cmluZy4iCiAgIDpncm91cCAnbWluZ3VzLWJ1cm5z CiAgIDp0eXBlICcoc3RyaW5nKSkKCihkZWZjdXN0b20gbWluZ3VzLWJ1cm5zLWRldmljZSAiL2Rl di9jZHJvbSIKICAiRGV2aWNlIG5hbWUgdG8gdXNlIGZvciByZWNvcmRpbmciCiAgOmdyb3VwICdt aW5ndXMtYnVybnMKICA6dHlwZSAnKGNob2ljZSAoZmlsZSA6dGFnICJGaWxlIChzdWNoIGFzIC9k ZXYvY2Ryb20pIikKCQkgKHN0cmluZyA6dGFnICJEZXNjcmlwdGlvbiAoc3VjaCBhcyBBVEE6MSww LDApIikpKQoKKGRlZmN1c3RvbSBtaW5ndXMtYnVybnMtc3BlZWQgMgogICJTcGVlZCBvZiBjZC1y ZWNvcmRpbmcgZGV2aWNlIgogIDpncm91cCAnbWluZ3VzLWJ1cm5zCiAgOnR5cGUgJ251bWJlcikK CihkZWZjdXN0b20gbWluZ3VzLWJsYW5rLXN0cmluZwogICJ3b2RpbSAtZWplY3QgYmxhbms9YWxs IgogICJDb21tYW5kIHdpdGggd2hpY2ggdG8gYmxhbmsgYSBjZC4iCiAgOmdyb3VwICdtaW5ndXMt YnVybnMKICA6dHlwZSAnc3RyaW5nKQoKCjs7Ozsge3tLZXltYXB9fQooZGVmY29uc3QgbWluZ3Vz LWJ1cm5pbi1tYXAgKGNvcHkta2V5bWFwIG1pbmd1cy1nbG9iYWwtbWFwKQogICJCdXJuaW4ga2V5 bWFwIGZvciBgbWluZ3VzJyIpCgooZGVmaW5lLWtleSBtaW5ndXMtYnVybmluLW1hcCAiICIgJ3Nj cm9sbC11cCkKKGRlZmluZS1rZXkgbWluZ3VzLWJ1cm5pbi1tYXAgIlxDLW0iICcobGFtYmRhICgp IChpbnRlcmFjdGl2ZSkKCQkJCQkoY29uZGl0aW9uLWNhc2UgbmlsIChtaW5ndXMtcGxheSAobnVt YmVyLXRvLXN0cmluZyAobWluZ3VzLWxpbmUtbnVtYmVyLWF0LXBvcykpKSkpKQooZGVmaW5lLWtl eSBtaW5ndXMtYnVybmluLW1hcCAiZCIgJ21pbmd1cy1idXJucy1kZWwpCgooZGVmaW5lLWtleSBt aW5ndXMtYnVybmluLW1hcCAiQiIgJ21pbmd1cy1idXJuLWl0KQooZGVmaW5lLWtleSBtaW5ndXMt YnVybmluLW1hcCAiRCIgJ21pbmd1cy1idXJucy1kZWNvZGUtcGxheWxpc3QpCihkZWZpbmUta2V5 IG1pbmd1cy1idXJuaW4tbWFwICJFIiAnbWluZ3VzLWJsYW5rLWRpc2spCgooZGVmaW5lLWtleSBt aW5ndXMtYnVybmluLW1hcCBbbWVudS1iYXIgbWluZ3VzIHNlcC1wbGF5bGlzdC1lZGl0aW5nXQog ICcobWVudS1pdGVtICItLSIpKQooZGVmaW5lLWtleSBtaW5ndXMtYnVybmluLW1hcCBbbWVudS1i YXIgbWluZ3VzIHVuc2V0XQogICcoIlVuc2V0IEluc2VydGlvbiBQb2ludCIgLiBtaW5ndXMtdW5z ZXQtaW5zZXJ0aW9uLXBvaW50KSkKKGRlZmluZS1rZXkgbWluZ3VzLWJ1cm5pbi1tYXAgW21lbnUt YmFyIG1pbmd1cyBzZXA0XQogICcobWVudS1pdGVtICItLSIpKQooZGVmaW5lLWtleSBtaW5ndXMt YnVybmluLW1hcCBbbWVudS1iYXIgbWluZ3VzIGJ1cm5dCiAgJyhtZW51LWl0ZW0gIkJ1cm4gQ0Qi IG1pbmd1cy1idXJuLWl0IDpidXJuaW4gIkJ1cm4gYSBjZCB3aXRoIGN1cnJlbnQgY29udGVudHMg b2YgdGhlIHBsYXlsaXN0IikpCihkZWZpbmUta2V5IG1pbmd1cy1idXJuaW4tbWFwIFttZW51LWJh ciBtaW5ndXMgZGVjb2RlXQogICcobWVudS1pdGVtICJEZWNvZGUgUGxheWxpc3QiIG1pbmd1cy1i dXJucy1kZWNvZGUtcGxheWxpc3QgOmJ1cm5pbiAiRGVjb2RlIGN1cnJlbnQgY29udGVudHMgb2Yg dGhlIHBsYXlsaXN0IHRvIC53YXYgZmlsZXMiKSkKKGRlZmluZS1rZXkgbWluZ3VzLWJ1cm5pbi1t YXAgW21lbnUtYmFyIG1pbmd1cyBibGFua10KICAnKG1lbnUtaXRlbSAiQmxhbmsgRGlzayIgbWlu Z3VzLWJsYW5rLWRpc2sgOmJ1cm5pbiAiQmxhbmsgZGlzayIpKQooZGVmaW5lLWtleSBtaW5ndXMt YnVybmluLW1hcCBbbWVudS1iYXIgbWluZ3VzIHNlcDNdCiAgJyhtZW51LWl0ZW0gIi0tIikpCgoo ZGVmaW5lLWtleSBtaW5ndXMtYnVybmluLW1hcCBbbWVudS1iYXIgbWluZ3VzIGJyb3dzZXJdCiAg JyhtZW51LWl0ZW0gIkJyb3dzZXIiIG1pbmd1cy1icm93c2UgOmJ1cm5pbiAiZ28gdG8gYnJvd3Nl ciIpKQooZGVmaW5lLWtleSBtaW5ndXMtYnVybmluLW1hcCBbbWVudS1iYXIgbWluZ3VzIHBsYXls aXN0XQogICcobWVudS1pdGVtICJQbGF5bGlzdCIgbWluZ3VzIDpidXJuaW4gImdvIHRvIHBsYXls aXN0IikpCgooZGVmaW5lLWtleSBtaW5ndXMtYnVybmluLW1hcCAiMCIgJ21pbmd1cy1kaXJlZC1m aWxlKQooZGVmaW5lLWtleSBtaW5ndXMtYnVybmluLW1hcCBbbWVudS1iYXIgbWluZ3VzIGRpcmVk XQogICcobWVudS1pdGVtICJEaXJlZCIgbWluZ3VzLWRpcmVkLWZpbGUgOmJ1cm5pbiAibG9vayBz b25nIHVwIGluIGRpcmVkIikpCgooZGVmaW5lLWtleSBtaW5ndXMtcGxheWxpc3QtbWFwICI0IiAn bWluZ3VzLWJ1cm5zKQoKKGRlZmluZS1rZXkgbWluZ3VzLXBsYXlsaXN0LW1hcCBbbWVudS1iYXIg bWluZ3VzIGJ1cm5lcl0KICAnKG1lbnUtaXRlbSAiQnVybmVyIiBtaW5ndXMtYnVybnMpKQoKKGRl ZmluZS1rZXkgbWluZ3VzLWJyb3dzZS1tYXAgIjQiICdtaW5ndXMtYnVybnMpCihkZWZpbmUta2V5 IG1pbmd1cy1oZWxwLW1hcCBbbWVudS1iYXIgbWluZ3VzIGJ1cm5lcl0KICAnKG1lbnUtaXRlbSAi QnVybmVyIiBtaW5ndXMtYnVybnMpKQoKKGRlZmluZS1rZXkgbWluZ3VzLWhlbHAtbWFwICI0IiAn bWluZ3VzLWJ1cm5zKQooZGVmaW5lLWtleSBtaW5ndXMtYnJvd3NlLW1hcCBbbWVudS1iYXIgbWlu Z3VzIGJ1cm5lcl0KICAnKG1lbnUtaXRlbSAiQnVybmVyIiBtaW5ndXMtYnVybnMpKQoKOzs7OyB7 e0dlbmVyaWMgRnVuY3Rpb25zfX0KCihkZWZ1biBtaW5ndXMtYnVybnMtZ2V0LW5hbWUtZm9yLXNo ZWxsICgpCiAgKHNoZWxsLXF1b3RlLWFyZ3VtZW50CiAgIChtaW5ndXMtYnVybnMtZ2V0LW5hbWUp KSkKCihkZWZ1biBtaW5ndXMtYnVybnMtZ2V0LW5hbWUgKCkKICAoZm9ybWF0ICIlcyVzIiBtaW5n dXMtbXBkLXJvb3QKCSAgKGdldGYgKGdldC10ZXh0LXByb3BlcnR5IChwb2ludC1hdC1ib2wpICdt ZXRhZGF0YSkgOmZpbGUpKSkKCjs7IGtlZXAgbWUKKGRlZnVuIG1pbmd1cy1idXJucy1jb2xvci1i YXIgKHBvcy1iZWctZnJvbS1ib2wgcG9zLWVuZC1mcm9tLWJvbCBjb2xvcikKICAocHV0LXRleHQt cHJvcGVydHkgICgrIHBvcy1iZWctZnJvbS1ib2wgKHBvaW50LWF0LWJvbCkpCgkJICAgICAgKCsg cG9zLWVuZC1mcm9tLWJvbCAocG9pbnQtYXQtYm9sKSkKCQkgICAgICAnZmFjZSBgKChiYWNrZ3Jv dW5kLWNvbG9yIC4gIiMwMDAwMDAiKQoJCQkgICAgICAoZm9yZWdyb3VuZC1jb2xvciAuICxjb2xv cikKCQkJICAgICAgKHdlaWdodCAuICJib2xkIikpKSkKCjs7IChkZWZ1biBtaW5ndXMtYnVybnMt cmVtb3ZlLW5vbi1sb2NhbC1maWxlcyAoY29udGVudHMpCjs7ICAgKG1hcGNvbmNhdCAnaWRlbnRp dHkgKHJlbW92ZS1pZiAobGFtYmRhIChpdGVtKSAoc3RyaW5nLW1hdGNoICJeI1swLTldKykgaHR0 cDovLyIgaXRlbSkpICAoc3BsaXQtc3RyaW5nIGNvbnRlbnRzICJcbiIpKSAiXG4iKSkKCgo7OyBT VElMTCBORUVEIFRPIEdFVCBTT01FVEhJTkcgRlJPTSBUSElTCjs7IChkZWZ1biBtaW5ndXMtYnVy bnMgKCkKOzsgICAiR28gdG8gdGhlIGJ1ZmZlciBpbiBgbWluZ3VzJyB3aGVyZSByZWNvcmRpbmcg dGFrZXMgcGxhY2UuIgo7OyAgIChpbnRlcmFjdGl2ZSkKOzsgICAoc3dpdGNoLXRvLWJ1ZmZlciAi Kk1pbmd1cyBCdXJucyoiKQo7OyAgIChzZXRxIG1ham9yLW1vZGUgJ21pbmd1cy1idXJucykKOzsg ICAoc2V0cSBtb2RlLW5hbWUgIk1pbmd1cy1idXJucyIpCjs7ICAgKHVzZS1sb2NhbC1tYXAgbWlu Z3VzLWJ1cm5pbi1tYXApCjs7ICAgKGxldCAoKGJ1ZmZlci1yZWFkLW9ubHkgbmlsKQo7OyAJKG5l dy1jb250ZW50cyAoc2hlbGwtY29tbWFuZC10by1zdHJpbmcgIm1wYyAtLWZvcm1hdCBcIiVmaWxl JVwiIHBsYXlsaXN0IikpKQo7OyAgICAgKGlmIChzdHJpbmctbWF0Y2ggIl4jWzAtOV0rKSBodHRw Oi8vIiBuZXctY29udGVudHMpCjs7IAkobWVzc2FnZSAiVGhlcmUgaXMgYSBub24tbG9jYWwgZmls ZSAoYSBzdHJlYW0pIGluIHRoZSBwbGF5bGlzdC4gUGxlYXNlIHJlbW92ZSBiZWZvcmUgdXNpbmcg bWluZ3VzLWJ1cm5zLiIpCjs7ICAgICAod2hlbiAob3IgKD0gKHBvaW50LW1heCkgKHBvaW50LW1p bikpIDtpZiB0aGVyZSdzIGFuIGVtcHR5LWJ1ZmZlciBvciB0aGUgcGxheWxpc3QgaGFzIGNoYW5n ZWQgaW4gdGhlIG1lYW4gdGltZQo7OyAJICAgICAgKG5vdCAoZXF1YWwgbmV3LWNvbnRlbnRzICpt aW5ndXMtYnVmZmVyLWNvbnRlbnRzKikpKQo7OyAgICAgICAoZXJhc2UtYnVmZmVyKQo7OyAgICAg ICAoY29uZCAoKDwgMSAobGVuZ3RoIG5ldy1jb250ZW50cykpCjs7IAkgICAgIChtZXNzYWdlICJD b21wdXRpbmcgbGVuZ3RocywgdGhpcyBtYXkgdGFrZSBhIHdoaWxlIikKOzsgCSAgICAgKGluc2Vy dCAoc2V0cSAqbWluZ3VzLWJ1ZmZlci1jb250ZW50cyogbmV3LWNvbnRlbnRzKSkKOzsgCSAgICAg KG1pbmd1cy1idXJucy1pbnZpc2libGUpCjs7IAkgICAgIChtaW5ndXMtY29tcHV0ZS1idWZmZXIt bGVuZ3RoKSkKOzsgCSAgICAodCAoaW5zZXJ0ICJQcmVzcyA/IGZvciBoZWxwLCAyIGZvciBNaW5n dXMgUGxheWxpc3QsIDMgZm9yIE1pbmd1cyBCcm93c2VyIGFuZCAwIGZvciBEaXJlZFxuXG5QcmVz cyA0IGZyb20gd2l0aGluIE1pbmd1cyBidWZmZXJzIHRvIGNvbWUgYmFjayBoZXJlLCBNLXggbWlu Z3VzLWJ1cm5zIGZyb20gZWxzZXdoZXJlLlxuXG5QbGF5bGlzdCBpcyBlbXB0eSwgcGxlYXNlIGFk ZCBzb21lIHNvbmdzLlxuXG5Zb3UgY2FuIGRvIHNvIHdpdGggZWl0aGVyIG1pbmd1cy1kd2ltLWFk ZCwgd2l0aCBtaW5ndXMtYnJvd3NlIG9yIGZyb20gd2l0aGluIGRpcmVkLiIpCjs7IAkgICAgICAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkpKSkpKQo7OyAgIChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkg dCkpCgoKOzsgdGhyb3cgbWUgYXdheQooZGVmdW4gbWluZ3VzLWJ1cm5zLWRlbCAoKQogIChpbnRl cmFjdGl2ZSkKICAoc2F2ZS1leGN1cnNpb24KICAgIChsZXQqICgoYnVmZmVyLXJlYWQtb25seSBu aWwpCgkgICAobWluOnNlY3MgKGdldGYgKGdldC10ZXh0LXByb3BlcnR5IChwb2ludC1hdC1ib2wp ICdtZXRhZGF0YSkgOnRpbWUpKQoJICAgKGxlbmd0aC1vZi1zb25nLWF0LXAgKGlmIG1pbjpzZWNz IChtaW46c2VjLT5zZWNzIG1pbjpzZWNzKSkpKQogICAgICAoaWYgKG51bGwgbWluOnNlY3MpICht ZXNzYWdlICJOb3RoaW5nIHRvIGRlbGV0ZSIpCgkoc2hlbGwtY29tbWFuZCAoZm9ybWF0ICJtcGMg ZGVsICVzIiAobWluZ3VzLWxpbmUtbnVtYmVyLWF0LXBvcykpKQoJKG1pbmd1cy1yZXNldC1wb2lu dC1vZi1pbnNlcnRpb24pCgkoZGVsZXRlLXJlZ2lvbiAocG9pbnQtYXQtYm9sKSAocG9pbnQtYXQt Ym9sIDIpKQoJKG1pbmd1cy1yZW1vdmUtY3VycmVudC1saW5lLWZyb20tbWFya2VkLWxpc3QpCgko ZGVjZiAoZ2V0ICcqbWluZ3VzLWItc2Vzc2lvbiogOnRvdGFsLXRpbWUpIGxlbmd0aC1vZi1zb25n LWF0LXApCgkoZ290by1saW5lICgxKyAobWluZ3VzLXBsYXlsaXN0LWxlbmd0aCkpKQoJKGRlbGV0 ZS1yZWdpb24gKHBvaW50KSAocG9pbnQtbWF4KSkKCShtaW5ndXMtMi1idXJucy1iYXIgKGdldCAn Km1pbmd1cy1iLXNlc3Npb24qIDp0b3RhbC10aW1lKSkpKQogICAgKGZvcndhcmQtbGluZSAtMSkp KQoKOzs7OyB7e1JlY29yZGluZ319CihkZWZ1biBtaW46c2VjLT5zZWNzIChtaW46c2VjcykKICAi Q29udmVydCBNSU46U0VDUywgYSBzdHJpbmcgZGVzaWduYXRpbmcgYSB0aW1lIHZhbHVlIGluIG1p bnV0ZXMgYW5kIHNlY29uZHMsIHRvIHNlY29uZHMsIGFuIGludGVnZXIuIgogIChtdWx0aXBsZS12 YWx1ZS1iaW5kIChtaW4gc2VjKQogICAgICAobWFwY2FyICdzdHJpbmctdG8tbnVtYmVyIChzcGxp dC1zdHJpbmcgbWluOnNlY3MgIjoiKSkKICAgICgrICgqIDYwIG1pbikgc2VjKSkpCgooZGVmdmFy ICptaW5ndXMtYi1zZXNzaW9uKikKCihkZWZ1biBtaW5ndXMtYi10aGUtY2QgKCkKICAiUGVyZm9t IHRoZSBhY3Qgb2YgYnVybmluZyBhIGNkIGZyb20gbXBkIHBsYXlsaXN0ClVzZSBNLXggbWluZ3Vz LWRlY29kZS1wbGF5bGlzdCBpZiB5b3UganVzdCB3YW50IHRvIGRlY29kZSB0aGUgZmlsZXMuIgog IChtZXNzYWdlICJNaW5ndXMtYS1CdXJuaW5nLi4uIEMteCBiICpNaW5ndXMtT3V0cHV0KiB0byB3 YXRjaCB0aGUgcHJvY2Vzcy4iKQogIChhcHBseSAnc3RhcnQtcHJvY2Vzcy1zaGVsbC1jb21tYW5k ICJtaW5nYnVybiIgIipNaW5ndXMtT3V0cHV0KiIKCSAoZm9ybWF0IG1pbmd1cy1idXJucy1mb3Jt YXQtc3RyaW5nIG1pbmd1cy1idXJucy1kZXZpY2UgbWluZ3VzLWJ1cm5zLXNwZWVkKQoJIChtYXBj YXIKCSAgKGxhbWJkYSAoaXRlbSkKCSAgICAobWluZ3VzLWRlYy10cmFuc2wtc3JjLT5kZXN0IChn ZXRmIGl0ZW0gOmZpbGUpKSkKCSAgKm1pbmd1cy1iLXNlc3Npb24qKSkKICAoaWYgKGdldC1wcm9j ZXNzICJtaW5nYnVybiIpCiAgICAgIChzZXQtcHJvY2Vzcy1zZW50aW5lbCAoZ2V0LXByb2Nlc3Mg Im1pbmdidXJuIikgJ21pbmd1cy1iLWFzay10by1rZWVwLXNlc3Npb24pKSkKCihkZWZ1biBtaW5n dXMtYi1hc2stdG8ta2VlcC1zZXNzaW9uICgmb3B0aW9uYWwgcHJvY2VzcyBldmVudCkgO2Egc2Vu dGluZWwKICAocHV0ICcqbWluZ3VzLWItc2Vzc2lvbiogOmJ1cm4gbmlsKSAJO2Fsd2F5cyByZXNl dCB0byBub3QgZ28gYnVybmluZyEKICAoaWYgKHktb3Itbi1wICJSZW1vdmUgdGVtcG9yYXJ5IHdh dmUgZmlsZXM/IikKICAgICAgKG1hcGNhciAnZGVsZXRlLWZpbGUKCSAgICAgKG1hcGNhciAobGFt YmRhIChpdGVtKQoJCSAgICAgICAobWluZ3VzLWRlYy10cmFuc2wtc3JjLT5kZXN0IChnZXRmIGl0 ZW0gOmZpbGUpKSkgKm1pbmd1cy1iLXNlc3Npb24qKSkpCiAgKHVubGVzcyAoeS1vci1uLXAgIktl ZXAgc2Vzc2lvbiBkYXRhPyAiKQogICAgKHNldHEgKm1pbmd1cy1iLXNlc3Npb24qIG5pbCkpKQoK KGRlZnVuIG1pbmd1cy1idXJuLWl0ICgpCiAgIkJ1cm4gYSBkaXNrIGZyb20gY3VycmVudCBzZXNz aW9uZGF0YSIKICAoaW50ZXJhY3RpdmUpCiAgKHVubGVzcyAgKGFuZCAqbWluZ3VzLWItc2Vzc2lv bioKCQkoeS1vci1uLXAgIlN0aWxsIGdvdCBhbiBvbGQgc2Vzc2lvbiBseWluZywgZG8geW91IHdh bnQgdG8gdXNlIHRoaXM/ICIpKQogICAgKHNldHEgKm1pbmd1cy1iLXNlc3Npb24qIChtaW5ndXMt cmVhZC1lbnRpcmUtbWV0YWRhdGEpKSkKICAocHV0ICcqbWluZ3VzLWItc2Vzc2lvbiogOmJ1cm4g dCkKICAobWluZ3VzLWRlYy1saXN0KSkKCihkZWZ1biBtaW5ndXMtYnVybnMtZGVjb2RlLXBsYXls aXN0ICgpCiAgIkRlY29kZSBjdXJyZW50IHBsYXlsaXN0IGFuZCBwdXQgdGhlIHJlc3VsdGluZyB3 YXZlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkgYG1pbmd1cy10bXAtd2F2LWRpciciCiAgKGludGVy YWN0aXZlKQogIChzZXRxICptaW5ndXMtYi1zZXNzaW9uKiAobWluZ3VzLXJlYWQtZW50aXJlLW1l dGFkYXRhKSkKICAocHV0ICcqbWluZ3VzLWItc2Vzc2lvbiogOmJ1cm4gbmlsKQogIChtaW5ndXMt ZGVjLWxpc3QpKQoKKGRlZnVuIG1pbmd1cy1kZWMtbGlzdCAoJm9wdGlvbmFsIHByb2Nlc3MgZXZl bnQpCiAgIkRlY29kZSBjb250ZW50cyByZWZlcnJlZCB0byBieSAqbWluZ3VzLWItc2Vzc2lvbiog YW5kIHB1dCB0aGUgcmVzdWx0aW5nIHdhdmUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBgbWluZ3Vz LXRtcC13YXYtZGlyJy4iCiAgKGxldCogKChkYXRhICptaW5ndXMtYi1zZXNzaW9uKikKCSAoZmls ZSAobWluZ3VzLWNkci1kb3duLXNlc3Npb25kYXRhIGRhdGEpKSkKICAgIChtZXNzYWdlICJBYm9y dCB3aXRoIE0teCBtaW5ndXMtZGVjLWFib3J0IikKICAgIChzaXQtZm9yIDIpCQkJCTtzbyBwZW9w bGUgY2FuIHNlZSB0aGUgbWVzc2FnZSBhYm92ZQogICAgKGNvbmQKICAgICAoZmlsZQogICAgICAo bWluZ3VzLWRlYy1maWxlLXJlbC10by1tcGQtcm9vdCBmaWxlKQogICAgICAoc2V0LXByb2Nlc3Mt c2VudGluZWwgKGdldC1wcm9jZXNzICJtaW5nZGVjIikKCQkJICAgICdtaW5ndXMtZGVjLWxpc3Qp KQogICAgICh0IChtZXNzYWdlICJEZWNvZGluZyBmaW5pc2hlZCEiKQoJKGlmIChnZXQgJyptaW5n dXMtYi1zZXNzaW9uKiA6YnVybikKCSAgICAobWluZ3VzLWItdGhlLWNkKSkpKSkpCgooZGVmdW4g bWluZ3VzLWRlYy1hYm9ydCAoKQogICJBYm9ydCBhIGRlY29kaW5nIHNlc3Npb24uIgogIChpbnRl cmFjdGl2ZSkKICAobGV0ICgoc2Vzc2lvbmRhdGEgKm1pbmd1cy1iLXNlc3Npb24qKSkKICAgIChz ZXRxICptaW5ndXMtYi1zZXNzaW9uKiBuaWwpCiAgICAoa2lsbC1wcm9jZXNzIChnZXQtcHJvY2Vz cyAibWluZ2RlYyIpKQogICAgKG1lc3NhZ2UgIkFib3J0aW5nIGRlY29kaW5nIHByb2Nlc3MuLi4i KQogICAgKHNpdC1mb3IgMikKICAgIChwdXQgJyptaW5ndXMtYi1zZXNzaW9uKiA6YnVybnAgbmls KQogICAgKGlmICh5LW9yLW4tcCAiS2VlcCBzZXNzaW9uIGRhdGE/ICIpCgkoc2V0cSAqbWluZ3Vz LWItc2Vzc2lvbiogc2Vzc2lvbmRhdGEpKSkpCgooZGVmdW4gbWluZ3VzLWNkci1kb3duLXNlc3Np b25kYXRhIChkYXRhKQogICJSZWN1cnNpdmVseSBmaW5kIHRoZSBmaXJzdCBub24tZXhpc3Rpbmcg ZGVzdGluYXRpb24gcGF0aG5hbWUgZnJvbSBEQVRBLiIKICAoY29uZCAoKG51bGwgZGF0YSkgbmls KQoJKHQgKGlmIChmaWxlLWV4aXN0cy1wIChtaW5ndXMtZGVjLXRyYW5zbC1zcmMtPmRlc3QgKGdl dGYgKGNhciBkYXRhKSA6ZmlsZSkpKQoJICAgICAgIChtaW5ndXMtY2RyLWRvd24tc2Vzc2lvbmRh dGEgKGNkciBkYXRhKSkKCSAgICAgKGdldGYgKGNhciBkYXRhKSA6ZmlsZSkpKSkpCgo7OyB0cmFu c2xhdGlvbiBmdW5jdGlvbnMKKGRlZnVuIG1pbmd1cy10cmFuc2wtbXBkLT5yZWFscm9vdCAoZmls ZSkKICAiUmV0dXJuIGFic29sdXRlIHBhdGggb2YgRklMRSwgd2hpY2ggaXMgYSBmaWxlIGluIGRl IG1wZCBkYXRhYmFzZSBpbiBmaWxlc3lzdGVtLiIKICAgKGZvcm1hdCAiJXMlcyIgbWluZ3VzLW1w ZC1yb290IGZpbGUpKQoKKGRlZnVuIG1pbmd1cy1kZWMtdHJhbnNsLXNyYy0+ZGVzdCAobmFtZSkK ICAiUmV0dXJuIE5BTUUsIHN0cmlwcGVkIG9mIGl0cyBwYXJlbnQgYW5kIGNvbmNhdGVuYXRlZCB0 byBgbWluZ3VzLWJ1cm5zLXRtcC13YXYtZGlyJyIKICAoY29uY2F0IChleHBhbmQtZmlsZS1uYW1l IG1pbmd1cy1idXJucy10bXAtd2F2LWRpcikgIi8iCgkgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJp bmcgIl4uKi8iICIiCgkgICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICAiXFwuXFwoW14uXSpc XCkkIiAid2F2IiBuYW1lIG5pbCBuaWwgMSkpKSkKCihkZWZ1biBtaW5ndXMtZGVjLWZpbGUtcmVs LXRvLW1wZC1yb290IChmaWxlKQogICJUYWtlIEZJTEUsIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRo ZSBtaW5ndXMtbXBkLXJvb3QsIGFuZCBkZWNvZGUgaXQgaW50byBgbWluZ3VzLXRtcC13YXYtZGly Jy4iCiAgKGxldCAoKHNyYyAobWluZ3VzLXRyYW5zbC1tcGQtPnJlYWxyb290IGZpbGUpKQoJKGRl c3QgKG1pbmd1cy1kZWMtdHJhbnNsLXNyYy0+ZGVzdCBmaWxlKSkpCiAgICAobWluZ3VzLWRlYyBz cmMgZGVzdCkpKQoKKGRlZnVuIG1pbmd1cy1kZWMgKHNyYyBkZXN0ICZvcHRpb25hbCBwKQogICJE ZWNvZGUgbXVzaWMgZmlsZSBTUkMgdG8gREVTVC4KQm90aCBmaWxlbmFtZSBhcmUgYWJzb2x1dGUg cGF0aHMgaW4gdGhlIGZpbGVzeXN0ZW0iCiAgKGludGVyYWN0aXZlIHApCiAgKHVubGVzcyAoYW5k IChub3QgcCkoZmlsZS1leGlzdHMtcCBkZXN0KSkKICAgIChjYXNlIChtaW5ndXMtd2hhdC10eXBl IHNyYykKICAgICAoZmxhYyAobWVzc2FnZSAiRGVjb2RpbmcgJXMgdG8gJXMiIHNyYyBkZXN0KQoJ ICAgKHN0YXJ0LXByb2Nlc3MgIm1pbmdkZWMiICIqTWluZ3VzLU91dHB1dCoiICJmbGFjIiAiLXNk IiBzcmMgIi1vIiBkZXN0KSkKICAgICAod2F2ICAobWFrZS1zeW1ib2xpYy1saW5rIHNyYyBkZXN0 KQoJICAgKHN0YXJ0LXByb2Nlc3MgIm1pbmdkZWMiICIqTWluZ3VzLU91dHB1dCoiICJmbGFjIikp IDtqdXN0IGEgZHVtbXkgc28gd2Ugd2lsbCBoYXZlIGEgcHJvY2VzcyEKICAgICAodCAobWVzc2Fn ZSAiRGVjb2RpbmcgJXMgdG8gJXMiIHNyYyBkZXN0KQoJKHN0YXJ0LXByb2Nlc3MgIm1pbmdkZWMi ICIqTWluZ3VzLU91dHB1dCoiICJzb3giICItViIgc3JjICItdCIgIi53YXYiIGRlc3QpKSkpKQoK KGRlZnVuIG1pbmd1cy1idXJucyAoKQogIChpbnRlcmFjdGl2ZSkKICAoc3dpdGNoLXRvLWJ1ZmZl ciAiKk1pbmd1cyBCdXJucyoiKQogIChzZXRxIG1ham9yLW1vZGUgJ21pbmd1cy1idXJucykKICAo c2V0cSBtb2RlLW5hbWUgIk1pbmd1cy1idXJucyIpCiAgKHVzZS1sb2NhbC1tYXAgbWluZ3VzLWJ1 cm5pbi1tYXApCiAgKGxldCogKChkYXRhIChtaW5ndXMtcmVhZC1lbnRpcmUtbWV0YWRhdGEpKQoJ ICh0b3RhbC10aW1lIDApCgkgYnVmZmVyLXJlYWQtb25seQoJIChodHRwcCAobWVtYmVyKiBuaWwg ZGF0YSA6dGVzdCAobGFtYmRhIChlbHQgaXRlbSkKCQkJCQkgIChudWxsIChnZXRmIGl0ZW0gOnRp bWUpKSkpKSkKICAgIChpZiBodHRwcCAKCShwcm9nbgoJICAobWVzc2FnZSAiVGhlcmUgaXMgYSBu b24tbG9jYWwgZmlsZSBpbiB0aGUgcGxheWxpc3QgKCVzKTtcblBsZWFzZSByZW1vdmUgaXQgYXMg SSBhbSAoc3RpbGwpIHRvbyBzdHVwaWQgdG8gaGFuZGxlIHRoaXMgc2l0dWF0aW9uICIgKGdldGYg KGNhciBodHRwcCkgOmZpbGUpKQoJICAoYnVyeS1idWZmZXIgIipNaW5ndXMgQnVybnMqIikpCiAg ICAgIAogICAgICAocHV0ICcqbWluZ3VzLWItc2Vzc2lvbiogOnRvdGFsLXRpbWUgdG90YWwtdGlt ZSkKICAgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAgKG1hcGNhcgogICAgICAgKGxhbWJkYSAoaXRl bSkKCSAoaW5zZXJ0IChmb3JtYXQgIiU1cyAlc1xuIiAoZ2V0ZiBpdGVtIDp0aW1lKSAoZ2V0ZiBp dGVtIDpmaWxlKSkpCgkgKGZvcndhcmQtbGluZSAtMSkKCSAobWluZ3VzLWJ1cm5zLWNvbG9yLWJh ciAwIDUgIm9yYW5nZSIpCgkgKG1pbmd1cy1idXJucy1jb2xvci1iYXIgNSAoLSAocG9pbnQtYXQt ZW9sKSAocG9pbnQtYXQtYm9sKSkgImxpZ2h0Ymx1ZSIpCgkgKHB1dC10ZXh0LXByb3BlcnR5Cgkg ICgrIDYgKHBvaW50LWF0LWJvbCkpCgkgIChvciAocmUtc2VhcmNoLWZvcndhcmQgIi4qLyIgKHBv aW50LWF0LWVvbCkgdCAxKSAoKyA3IChwb2ludC1hdC1ib2wpKSkKCSAgJ2ludmlzaWJsZSB0KQoJ IChwdXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQtYXQtYm9sKSAocG9pbnQtYXQtZW9sKSAnbWV0YWRh dGEgaXRlbSkKCSAoaW5jZiB0b3RhbC10aW1lIChtaW46c2VjLT5zZWNzIChnZXRmIGl0ZW0gOnRp bWUpKSkKCSAoZm9yd2FyZC1saW5lKSkKICAgICAgIGRhdGEpCiAgICAgIChwdXQgJyptaW5ndXMt Yi1zZXNzaW9uKiA6dG90YWwtdGltZSB0b3RhbC10aW1lKQogICAgICAobWluZ3VzLTItYnVybnMt YmFyIHRvdGFsLXRpbWUpKSkKICAoc2V0cSBidWZmZXItcmVhZC1vbmx5IHQpCiAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkpCgooZGVmdW4gbWluZ3VzLTItYnVybnMtYmFyIChzZWNvbmRzKQogIChp bnRlcmFjdGl2ZSkKICAobGV0KiAoKHRvdGFsLXNlY29uZHMgc2Vjb25kcykKCSAoYnVmZmVyLXJl YWQtb25seSBuaWwpCgkgKGJvcmRlciAoZm9ybWF0ICIlczMwJXM1MCVzNzAlczc1JXM4MCVzIiAo bWFrZS1zdHJpbmcgMjkgP1wtKSAobWFrZS1zdHJpbmcgMTggP1wtKSAobWFrZS1zdHJpbmcgMTgg P1wtKShtYWtlLXN0cmluZyAzID9cLSkgKG1ha2Utc3RyaW5nIDMgP1wtKSAobWFrZS1zdHJpbmcg KG1heCAoLSAod2luZG93LXdpZHRoKSA4MikgMCkgP1wtKSkpCgkgKHdpbmRvdy13aWR0aCAod2lu ZG93LXdpZHRoKSkKCSAoc3RyaW5nIChmb3JtYXQgIiVzXG4lcyAlcyBcbiVzIgoJCQkgYm9yZGVy IDtiYXIgcmVwcmVzZW50aW5nIHRvdGFsIGNkIHRpbWUKCQkJIChtYWtlLXN0cmluZyAobWluICgv IHRvdGFsLXNlY29uZHMgNjApICgtIHdpbmRvdy13aWR0aCA5KSkgP3wpIDtiYXIgcmVwcmVzZW50 aW5nIHBlcmNlbnRhZ2UgZmlsbGVkCgkJCSAobXVsdGlwbGUtdmFsdWUtYmluZCAobWluIHNlYykK CQkJICAgICAoZmxvb3IqIHRvdGFsLXNlY29uZHMgNjApCgkJCSAgIChmb3JtYXQgIiVkOiVzIiBt aW4gKGlmICg8IHNlYyAxMCkKCQkJCQkJICAgKGZvcm1hdCAiMCVkIiBzZWMpCgkJCQkJCSAoZm9y bWF0ICIlZCIgc2VjKSkpKQoJCQkgKG1ha2Utc3RyaW5nICgtIHdpbmRvdy13aWR0aCAxKSA/XC0p KSkpCTtiYXIgcmVwcmVzZW50aW5nIHRvdGFsIGNkIHRpbWUKICAgICAgKGluc2VydCBzdHJpbmcp CiAgICAgIChnb3RvLWxpbmUgKCsgKG1pbmd1cy1wbGF5bGlzdC1sZW5ndGgpIDEpKQogICAgICAo ZG90aW1lcyAoZm9vIDMpCgkobWluZ3VzLWJ1cm5zLWNvbG9yLWJhciAwIDM1ICJkYXJrZ3JlZW4i KQoJKG1pbmd1cy1idXJucy1jb2xvci1iYXIgMzUgNzUgImdyZWVuIikKCShtaW5ndXMtYnVybnMt Y29sb3ItYmFyIDc1IDgwICJvcmFuZ2UiKQoJKG1pbmd1cy1idXJucy1jb2xvci1iYXIgODAgKC0g KHBvaW50LWF0LWVvbCkgKHBvaW50LWF0LWJvbCkpICJyZWQiKQoJKGZvcndhcmQtbGluZSAxKSkp KQoKKGRlZnVuIG1pbmd1cy1ibGFuay1kaXNrICgpCiAgKGludGVyYWN0aXZlKQogIChzdGFydC1w cm9jZXNzLXNoZWxsLWNvbW1hbmQgIm1pbmdibGFuayIgIipNaW5ndXMtT3V0cHV0KiIgbWluZ3Vz LWJsYW5rLXN0cmluZykKICAobWVzc2FnZSAiQmxhbmtpbmcgZGlzayIpCiAgKHNldC1wcm9jZXNz LXNlbnRpbmVsIChnZXQtcHJvY2VzcyAibWluZ2JsYW5rIikgJ21pbmd1cy1ibGFuay1zZW50aW5l bCkpCgooZGVmdW4gbWluZ3VzLWJsYW5rLXNlbnRpbmVsIChwcm9jZXNzIGV2ZW50KQogICh3aGVu IChudWxsIChwcm9jZXNzLXN0YXR1cyAibWluZ2JsYW5rIikpCiAgICAobWVzc2FnZSAiRGlzayBi bGFua2VkIikpKQoKKHByb3ZpZGUgJ21pbmd1cy1zdGF5cy1ob21lKQo7OzsgbWluZ3VzLXN0YXlz LWhvbWUgZW5kcyBoZXJl