#FILE text/plain Ozs7IG1pbmd1cy5lbCAtLS0KCjs7ICAgICAgICAgICAgXwo7OyAgXyBfXyBfX18gKF8pXyBfXyAg IF9fIF8gXyAgIF8gX19fCjs7IHwgJ18gYCBfIFx8IHwgJ18gXCAvIF9gIHwgfCB8IC8gX198Cjs7 IHwgfCB8IHwgfCB8IHwgfCB8IHwgKF98IHwgfF98IFxfXyBcCjs7IHxffCB8X3wgfF98X3xffCB8 X3xcX18sIHxcX18sX3xfX18vCjs7ICAgICAgICAgICAgICAgICAgICB8X19fLwo7OyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo7OyBN UEQgSW50ZXJmYWNlIHRoYXQncyBObyBHYXJiYWdlLCBidXQgKGp1c3QpIFV0dGVybHkgU3R5bGlz aAo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo7OyAuLi4uLi4uLi4uLi4uLi4uLi4uLmJ1dCBhY3R1YWxseSBuYW1lZCBhZnRlciBh IG1hbiBzbyBuYW1lZAo7OwoKOzsgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcgIE5pZWxzIEdpZXNl biA8Y29tIGRvdCBnbWFpbCBhdCBuaWVsc2dpZXNlbiwgaW4gcmV2ZXJzZWQgb3JkZXI+Cgo7OyBB dXRob3I6IE5pZWxzIEdpZXNlbiA8cGZ0IG9uICNlbWFjcz4KOzsgVmVyc2lvbjogU2VsZiBQb3J0 cmFpdCBJbiBUaHJlZSBDb2xvcnMsIG9yOiAwLjIzCjs7IEtleXdvcmRzOiBtdWx0aW1lZGlhLCBl bGlzcCwgbXVzaWMsIG1wZAoKOzsgVGhpcyBmaWxlIGlzICpOT1QqIHBhcnQgb2YgR05VIEVtYWNz Cgo7OyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCjs7IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCjs7IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyCjs7IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Cjs7IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCjs7IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQQo7OyAwMjExMS0xMzA3LCBVU0EuCgo7OzsgQ29tbWVudGFyeToKCjs7IElOU1RB TExBVElPTiBJTlNUUlVDVElPTlM6Cjs7Cgo7OyBtYWtlIHN1cmUgeW91IGhhdmUgbXBjIGluc3Rh bGxlZC4gVGhpcyBpcyBqdXN0IGEgd3JhcHBlci4KCjs7IDEuIFdoZW4geW91IGluc3RhbGwgYm90 aCB0aGUgbWFpbiBtaW5ndXMgQU5EIG1pbmd1cy1zdGF5cy1ob21lIChyZWNvbW1lbmRlZCB3aGVu IHRoZQo7OyBjb21wdXRlciBydW5uaW5nIHRoZSBtcGQgc2VydmljZSBpcyB0aGUgc2FtZSBhcyB0 aGUgb25lIGZyb20gd2hpY2ggbWluZ3VzIGlzIGJlaW5nCjs7IHJ1biwgc2VlIG1vcmUgb24gdGhl IHJlYXNvbnMgZm9yIGluc3RhbGxpbmcgbWluZ3VzLXN0YXlzLWhvbWUgKGlkMyB0YWdnaW5nLAo7 OyBjZC1idXJuaW5nLCBpbnRlZ3JhdGlvbiB3aXRoIGRpcmVkIGFuZCB0aGUgc2hlbGwgZXRjIGV0 YyBpbiB0aGUgZmlsZQo7OyBtaW5ndXMtc3RheXMtaG9tZS5lbCkpIDoKCjs7IGJ5dGUtY29tcGls ZSwgSU4gT1JERVIsIHJlcGVhdDogSU4gT1JERVIsIHRoZSBmaWxlcyBtaW5ndXMuZWwgYW5kCjs7 IG1pbmd1cy1zdGF5cy1ob21lLmVsCgo7OyBBZGQgdGhlIGZvbGxvd2luZyB0byB5b3VyIC5lbWFj czoKCjs7IChhZGQtdG8tbGlzdCAnbG9hZC1wYXRoICIvcGF0aC90by93aGVyZS95b3UvcHV0L2Fs bC95b3VyL21pbmd1cy9maWxlcy8iKQo7OyAocmVxdWlyZSAnbWluZ3VzLXN0YXlzLWhvbWUpCgo7 OyAyLiBNaW5ndXMgb25seSAoc28gTk8gbWluZ3VzLXN0YXlzLWhvbWUpIDoKCjs7IGJ5dGUtY29t cGlsZSB0aGUgZmlsZSBtaW5ndXMuZWwKCjs7IEFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgLmVt YWNzOgoKOzsgKGFkZC10by1saXN0ICdsb2FkLXBhdGggIi9wYXRoL3RvL3doZXJlL3lvdS9wdXQv bWluZ3VzLmVsLyIpCjs7IChyZXF1aXJlICdtaW5ndXMpCgo7OyBEZXNpZ24gaXNzdWVzOgo7Owo7 OyBtaW5ndXMgaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgbXBjIGNvbW1hbmQgbGluZSB0b29sLCBh bmQgd29ya3MgdmlhCjs7IHNoZWxsLWNvbW1hbmRzLiBBcyBzdWNoLCBpdCBpcyBwcm9iYWJseSBz bG93ZXIgdGhhbiBjbGllbnRzIHVzaW5nIG1vZHVsZXMgb3Igc28sIGJ1dAo7OyBoYXMgdGhlIGFk dmFudGFnZSBvZiBlYXNpbmVzcyBvZiBpbnN0YWxsYXRpb246IGFsbCBvbmUgbmVlZHMgaXMgbXBj IChhbmQgbXBkLCBpZiBydW4KOzsgbG9jYWxseSkuIEN1cnJlbnRseSBtaW5ndXMgdXNlcyBwbGF5 bGlzdCBpZCdzLCBpbnN0ZWFkIG9mIHNvbmcgaWQncy4gVGhpcyBtYWtlcyBpdCBhCjs7IGxpdHRs ZSBtb3JlIGZyYWdpbGUgZm9yIHNpbXVsdGFuZW91cyB1c2UgYnkgZGlmZmVyZW50IHVzZXJzLgoK OzsgTm8gZWRpdGluZyBvZiBpZDMgdGFncyBpcyBwcm92aWRlZCBpbiBtaW5ndXMgaXRzZWxmLiBU aGlzIGlzLCBmaXJzdCwgYmVjYXVzZSBtcGQgaXMKOzsgZGVzaWduZWQgdG8gYmUgcnVuIGluIGEg bmV0d29yayBhcyBhIHNlcnZlciAoYWx0aG91Z2ggaXQgY2FuIGJlIHVzZWQgb24gYSBzaW5nbGUK Ozsgc3lzdGVtLCB3aGljaCwgaW4gZmFjdCwgaXMgd2hhdCBJIGRvKTsgYXMgc3VjaCwgY2xpZW50 cyB0byBtcGQgYXJlIHVuYXdhcmUgb2YgbXBkJ3MKOzsgcm9vdCBkaXIsIGFuZCBwb3NzaWJseS9w cm9iYWJseSBkbyBub3QgaGF2ZSB3cml0ZSBwZXJtaXNzaW9ucyBvbiB0aGUgbXVzaWMKOzsgZmls ZXMuIFNlY29uZCwgSSBwZXJzb25hbGx5IGRvIG5vdCBzZWUgdGhlIHVzZSBvZiBpZDMgdGFncy4g VGhleSBhcmUgdG8gbWUgYSBjbHVtc3kKOzsgd2F5IHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYmV0 dGVyIGhhbmRsZWQgaW4gdGhlIGZpbGVuYW1lL2ZpbGVzeXN0ZW0sIGFuZCBhcyBldmVyeW9uZQo7 OyBob2xkcyBkaWZmZXJlbnQgdGhvdWdodHMgb24gdGhlIGNvbnRlbnQgb2YgdGhvc2UgdGFncywg ZS5nLiB3aGF0IGNvbnN0aXR1dGVzIGEKOzsgJ2dlbnJlJyBvciB3aGV0aGVyIHN0dWZmIHNob3Vs ZCBiZSBkb3duL3VwY2FzZWQuIEVkaXRpbmcgZmlsZW5hbWVzIGlzIGp1c3Qgd2F5IG1vcmUKOzsg c3RyYWlnaHRmb3J3YXJkLgoKOzsgSWYgeW91IERPIHVzZSBtaW5ndXMtc3RheXMtaG9tZSwgSUQz LWVkaXRpbmcgSVMgcHJvdmlkZWQuIGBtaW5ndXMtaWQzLXNldCcgdHJpZXMgdG8KOzsgZ3Vlc3Mg dGhlIHZhbHVlcyBmb3IgYXJ0aXN0LCBzb25nLCB0cmFjayBudW1iZXIsIGFuZCBhbGJ1bSBmcm9t IHRoZSBuYW1lIGVuY291bnRlcmVkCjs7IGluIHRoZSBwbGF5bGlzdDsgSSBzdGlsbCB0aGluayBJ RDMgaXMgc3R1cGlkLCBidXQgaXQgd2FzIGZ1biBjb2RpbmcgaXQuLi4uCgo7OyBUaGUgaW50ZXJm YWNlIGlzIHJvdWdobHkgYmFzZWQgb24gdGhhdCBvbiBuY21wYywgYnV0IHNpbXBsZXIsIGFuZCBi ZXR0ZXIgOikgKGF0IHRoZQo7OyBleHBlbmNlIG9mIGEgYml0IG9mIHNwZWVkIHRob3VnaCkgLiAg TWFueSBrZXliaW5kaW5ncyBhcmUgYWxpa2UsIGV4Y2VwdCBmb3Igc29tZQo7OyBub3RvcmlvdXNs eSB2aS1zdHlsZS1vbmVzLiAgU29tZSBzaWduaWZpY2FudCBmZWF0dXJlcyAobWFpbiByZWFzb25z IHRvIHdyaXRlIHRoaXMKOzsgc3R1ZmYpIDoKCjs7IE1BUktJTkcgTm90aWNlIHNwZWNpZmljYWxs eSB0aGUgcG9zc2liaWxpdHkgdG8gbWFyayBtdWx0aXBsZSBzb25ncyBpbiB0aGUgcGxheWxpc3QK OzsgZm9yIG1vdmVtZW50IG9yIGRlbGV0aW9uIChieSBwcmVzc2luZyB0aGUgc3BhY2ViYXIgb25l IHRvZ2dsZXMgdGhlIG1hcmsgYXQgdGhlCjs7IGN1cnJlbnQgbGluZTsgaWYgdGhlcmUgaXMgYSBy ZWdpb24sIGl0IG1hcmtzIGFsbCBzb25ncyBpbiB0aGUgcmVnaW9uLikgVW5tYXJraW5nIGFsbAo7 OyBtYXJrcyBoYXBwZW5zIHdpdGggYSBzaW5nbGUgInUiLgoKOzsgSU5TRVJUSU9OIFBPSU5UIEFu b3RoZXIgbmljZSBmZWF0dXJlIGlzICJtaW5ndXMtc2V0LWluc2VydGlvbi1wb2ludCIgKEtleTog ImkiKSA6Cjs7IG1hcmsgYSBzb25nIGFmdGVyIHdoaWNoIHlvdSB3b3VsZCBsaWtlIHlvdXIgbmV4 dCBpbnNlcnRpb25zIHRvIHRha2UgcGxhY2UuIFRoZW4gZ28KOzsgaW5zZXJ0aW5nLiBVbnNldCB0 aGlzIGJlaGF2aW91ciB3aXRoICJ1IiAobWluZ3VzLXVuc2V0LWluc2VydGlvbi1wb2ludCksIGFu ZCBzb25ncwo7OyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHBsYXlsaXN0IGFnYWlu LiBOb3RpY2UgdGhhdCB0aGlzIGNhbiB0YWtlIHF1aXRlIHNvbWUKOzsgdGltZSAodGhlIG1vcmUg c29uZ3MsIHRoZSBsb25nZXIgeW91IHdpbGwgaGF2ZSB0byB3YWl0LCBhcyB0aGlzIGlzIGRvbmUg YnkgY2FsbGluZwo7OyBtcGMgbW92ZSwgd2hpY2ggdW5mb3J0dW5hdGVseSB0YWtlIHNvbmx5IHR3 byBhcmd1bWVudHMpLgoKOzsgTkI6IHJpZ2h0IG5vdyB0aGVzZSB0d28gZnVuY3Rpb25zIGFyZSBt dXR1YWxseSBleGNsdXNpdmUuCgo7OyBGb3IgdGhvc2UgYWxyZWFkeSBmYW1pbGlhciB3aXRoIG1w ZC9tcGMsIGFuZCBoYXZlIHNldCB0aGF0IHVwLCB5b3UncmUgZG9uZSBub3cuCgo7OyBJZiB5b3Ug Z2V0IGEgbWVzc2FnZSBsaWtlCgo7OyBNUERfSE9TVCBhbmQvb3IgTVBEX1BPUlQgZW52aXJvbm1l bnQgdmFyaWFibGVzIGFyZSBub3Qgc2V0Cjs7IG1lc3NhZ2U6IHByb2JsZW1zIGdldHRpbmcgYSBy ZXNwb25zZSBmcm9tICJsb2NhbGhvc3QiIG9uIHBvcnQgNjYwMCA6IENvbm5lY3Rpb24gcmVmdXNl ZAoKOzsgdGhlcmUgYXJlIHR3byBvcHRpb25zOgoKOzsgMS4geW91IHdhbnQgdG8gcnVuIGxvY2Fs bHksIHNvIHJ1biBtcGQKOzsgZmlyc3QuIERvIHNvIGZyb20gc29tZXdoZXJlIGVsc2Ugb3Igc2lt cGx5IGV2YWx1YXRlIChtaW5ndXMtc3RhcnQtZGFlbW9uKS4KOzsgT24gc29tZSBjb25maWd1cmF0 aW9ucyBvZiBtcGQgdGhpcyBtdXN0IGJlIGRvbmUgYXMgcm9vdC4KCjs7IEZvciB0aG9zZSB1bmZh bWlsaWFyIHdpdGggbXBkLCB0byBzZXQgaXQgdXAsIHB1dCBzb21ldGhpbmcgbGlrZSB0aGUgZm9s bG93aW5nIGluCjs7IH4vLm1wZGNvbmYgKHRoaXMgaXMgZm9yIHdoZW4gcnVuIGEgdXNlcikKCjs7 IHBvcnQgICAgICAgICAgICAgICAgIjY2MDAiCjs7IG11c2ljX2RpcmVjdG9yeSAgICAgIi95b3Vy L211c2ljL2RpcmVjdG9yeSIKOzsgcGxheWxpc3RfZGlyZWN0b3J5ICAifi9wbGF5bGlzdHMiCjs7 IGxvZ19maWxlICAgICAgICAgICAgIn4vLm1wZC5sb2ciCjs7IG1lc3NhZ2VfZmlsZSAgICAgICAg In4vLm1wZC5lcnIiCjs7Cjs7IHRoZW4gcnVuIG1wZAoKOzsgMi4geW91IHdhbnQgdG8gY29ubmVj dCB0byBhIHJlbW90ZSBob3N0LCBidXQgaGF2ZSBub3Qgc2V0IHRoZQo7OyBlbnZpcm9ubWVudCB2 YXJpYWJsZXMgTVBEX0hPU1QgYW5kL29yIE1QRF9QT1JULiBEbyBzbyBieSBjYWxsaW5nCjs7ICht aW5ndXMtc2V0LXZhcmlhYmxlcy1pbnRlcmFjdGl2ZWx5KSAoc2V0dGluZ3MgbG9zdCB3aGVuIGVt YWNzCjs7IHJlc3RhcnRlZCkgb3IgYnkgbWVhbnMgb2YgY3VzdG9taXphdGlvbiAoKG1pbmd1cy1j dXN0b21pemUpIG9yCjs7IChjdXN0b21pemUtZ3JvdXAgJ21pbmd1cyksIGFmdGVyIHdoaWNoIHlv dSBjYW4gY2FsbAo7OyAobWluZ3VzLXNldC12YXJpYWJsZXMpIGFnYWluKQoKOzsgTkVXIGluIG1p bmd1cyAwLjIxOiBgbWluZ3VzLXdha2UtdXAtY2FsbCc7IGZpeGVkIHRoZSBsaXNwLW1heC1ldmFs LWRlcHRoIGVycm9yCjs7IG1lc3NhZ2Ugd2hlbiBsZWF2aW5nIG1pbmd1cy1pbmZvIG9uIGZvciBh IHdoaWxlOyBhbGxvd2luZyBzcGFjZXMgaW4gbWluaWJ1ZmZlcgo7OyBvcGVyYXRpb25zLCBzdWNo IGFzIGxvYWRpbmcgYW5kIHNhdmluZyBvZiBwbGF5bGlzdHMsIHJhZGlvLXN0cmVhbXMgYW5kIHRo ZSBsaWtlLCBidXQKOzsgbW9zdCBvZiBhbGw6IGluY2x1c2lvbiBvZiBtaW5ndXMtc3RheXMtaG9t ZSwgd2hpY2ggcHJvdmlkZXMgbmljZSBpbnRlZ3JhdGlvbgo7OyBmZWF0dXJlcy4gU2VlIHRoYXQg ZmlsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gRW1hY3MyMSBjb21wYXRhYmxpdHksIGV4Y2VwdCBm cm8gcGFydHMKOzsgb2YgbWluZ3VzLXN0YXlzLWhvbWUuCgo7OyBLbm93biBidWdzOgoKOzsgKiBh IGZpbGUgbmFtZSBjYW5ub3QgaGF2ZSBhICIgKGRvdWJsZSBxdW90ZXMpIGluIGl0LiBEbyBub3Qg a25vdyBob3cgdG8gZml4IHRoYXQsIHNvCjs7IGlmIGFueW9uZSBmZWVscyBzbyBpbmNsaW5lZC4u LiBZb3UgQ0FOIHF1ZXJ5IHlvdXIgZGF0YWJhc2UgKE0teCBtaW5ndXMtcXVlcnktcmVnZXhwICIK OzsgUkVUKSB0byBrbm93IGlmIHlvdSBhcmUgaW4gdGhlIHBvc3Nlc3Npb24gb2Ygc3VjaCBmaWxl cywgc28geW91IGNhbiBhZGp1c3QgdGhlaXIKOzsgbmFtZXMgKHdpdGggbWluZ3VzLXN0YXlzLWhv bWUgaW5zdGFsbGVkOiBwcmVzcyAwICh6ZXJvKSB0byBnbyB0byBkaXJlZCB0byBkbyBzbykuIFRo ZQo7OyBvbmx5IHdheSB0byBpbnNlcnQgc3VjaCBmaWxlcyBpcyBieSBpbnNlcnRpbmcgdGhlaXIg cGFyZW50IGRpcmVjdG9yeS4KCjs7IHBvaW50LW9mLWluc2VydGlvbiBvbmx5IHdvcmtzIHdpdGgg b25lIGZpbGUgb3IgZGlyZWN0b3J5IGF0IGEgdGltZQoKOzs7IENvZGU6CgoocmVxdWlyZSAnY2wp CihyZXF1aXJlICdkaXJlZCkKKHJlcXVpcmUgJ3RpbWUtZGF0ZSkKCihkZWZ2YXIgKm1pbmd1cy1w b2ludC1vZi1pbnNlcnRpb24qIG5pbCAiSW5zZXJ0aW9uIHBvaW50IGZvciBtaW5ndXMiKQooZGVm dmFyICptaW5ndXMtcG9zaXRpb25zKiBuaWwgImN1cnNvciBwb3NpdGlvbnMgdG8gYmUgcmV0YWlu ZWQgaW4gKk1pbmd1cyBCcm93c2VyKiIpCihkZWZ2YXIgKm1pbmd1cy1oZWFkZXItd2hlbi1lbXB0 eSogIlByZXNzID8gZm9yIGhlbHAsIDMgZm9yIE1pbmd1cyBCcm93c2VyIiAiSGVhZGVyIHRvIHNo b3cgd2hlbiB0aGUgcGxheWxpc3QgaXMgZW1wdHkiKQoKKGRlZmdyb3VwIG1pbmd1cyBuaWwgIkdy b3VwIGN1c3RvbWl6YXRpb24gZm9yIG1pbmd1cyBtcGQgaW50ZXJmYWNlIgogIDpncm91cCAnZXh0 ZXJuYWwKICA6Z3JvdXAgJ211bHRpbWVkaWEKICA6Z3JvdXAgJ2FwcGxpY2F0aW9ucykKCihkZWZn cm91cCBtaW5ndXMtbW9kZS1saW5lIG5pbAogICJDdXN0b21pemF0aW9uIGdyb3VwIHRvIGNvbnRy b2wgdGhlIG1vZGVsaW5lIGZvciBgbWluZ3VzJyIKICA6Z3JvdXAgJ21pbmd1cykKCihkZWZjdXN0 b20gbWluZ3VzLW1wZC1lbnYtc2V0LXAgbmlsCiAgIldoZXRoZXIgdG8gc2V0IGVudmlyb25tZW50 IHZhcmlhYmxlcyBmcm9tIGVtYWNzLlxuRG8gbm90IHNldCB3aGVuIG5pbC5cbkRvIHNldCB3aGVu IHQuXG5EZWZhdWx0OiBuaWwuXG5UaGVzZSB2YXJpYWJsZXMgYXJlIHNldCB3aGVuIG1pbmd1cy5l bChjKSBpcyBsb2FkZWQgb3Igd2hlbiBtaW5ndXMtc2V0LXZhcmlhYmxlcyBpcyBjYWxsZWQuIgog IDpncm91cCAnbWluZ3VzCiAgOnR5cGUgJyhib29sZWFuKSkKCihkZWZjdXN0b20gbWluZ3VzLW1w ZC1ob3N0ICJsb2NhbGhvc3QiCiAgIlNldHRpbmcgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlIE1Q RF9IT1NUIgogIDpncm91cCAnbWluZ3VzCiAgOnR5cGUgJyhzdHJpbmcpKQoKKGRlZmN1c3RvbSBt aW5ndXMtbXBkLXBvcnQgNjYwMCAiU2V0dGluZyBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGUgTVBE X1BPUlQiCiAgOmdyb3VwICdtaW5ndXMKICA6dHlwZSAnKGludGVnZXIpKQoKKGRlZmN1c3RvbSBt aW5ndXMtc2Vlay1hbW91bnQgMTAKICAiRGVmYXVsdCBhbW91bnQgb2Ygc2Vjb25kcyBvciBwZXJj ZW50cyB0byBzZWVrIGJ5IHdoZW4gdXNpbmcgYG1pbmd1cy1zZWVrJy4iCiAgOmdyb3VwICdtaW5n dXMKICA6dHlwZSAnKGludGVnZXIpKQoKKHdoZW4gbWluZ3VzLW1wZC1lbnYtc2V0LXAKICAoc2V0 ZW52ICJNUERfSE9TVCIgbWluZ3VzLW1wZC1ob3N0KQogIChzZXRlbnYgIk1QRF9QT1JUIiAobnVt YmVyLXRvLXN0cmluZyBtaW5ndXMtbXBkLXBvcnQpKSkKCihkZWZjdXN0b20gbWluZ3VzLW1vZGUt YWx3YXlzLW1vZGVsaW5lIG5pbAogICJCZWhhdmlvdXIgb2YgbW9kZWxpbmU6IE5JTCBzaG93cyBj dXJyZW50IG1wZCBzdGF0dXMgb25seSBpbgptaW5ndXMgYnVmZmVyczsgQ3VycmVudCBtcGQgc3Rh dHVzIGlzIHNob3duIGluIGFsbCBidWZmZXJzIHdoZW4Kc2V0IHRvIHQuIgogIDpncm91cCAnbWlu Z3VzLW1vZGUtbGluZQogIDp0eXBlICcoYm9vbGVhbikpCgooZGVmY3VzdG9tIG1pbmd1cy1tb2Rl LWxpbmUtc3RyaW5nICJbWyVhcnRpc3QlIC0gXSV0aXRsZSVdfFslZmlsZSVdIgogICJGb3JtYXQt c3RyaW5nIHRvIGRpc3BsYXkgaW4gbW9kZWxpbmU7IHNlZSBmb3IgdmFsaWQgc3ludGF4IHRvCmJl IHVzZWQgdGhlIG1wYyBtYW5wYWdlLiBTZWUgYWxzbwpgbWluZ3VzLW1vZGUtbGluZS1zaG93LWVs YXBzZWQtdGltZScgYW5kCmBtaW5ndXMtbW9kZS1saW5lLXNob3ctZWxhcHNlZC1wZXJjZW50YWdl Jy4iCiAgOmdyb3VwICdtaW5ndXMtbW9kZS1saW5lCiAgOnR5cGUgJyhzdHJpbmcpKQoKKGRlZmN1 c3RvbSBtaW5ndXMtbW9kZS1saW5lLXN0cmluZy1tYXggNDAKICAiTWF4aW11bSBsZW5ndGggZm9y IChyZXN1bHQgb2YpIGBtaW5ndXMtbW9kZS1saW5lLXN0cmluZycuIgogIDpncm91cCAnbWluZ3Vz LW1vZGUtbGluZQogIDp0eXBlICcoaW50ZWdlcikpCgooZGVmY3VzdG9tIG1pbmd1cy1tb2RlLWxp bmUtc2hvdy1lbGFwc2VkLXRpbWUgdAogICJXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IGVsYXBz ZWQgdGltZSBpbiB0aGUgbW9kZS1saW5lLiIKICA6Z3JvdXAgJ21pbmd1cy1tb2RlLWxpbmUKICA6 dHlwZSAnKGJvb2xlYW4pKQoKKGRlZmN1c3RvbSBtaW5ndXMtbW9kZS1saW5lLXNob3ctZWxhcHNl ZC1wZXJjZW50YWdlIG5pbAogICJXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IGVsYXBzZWQgdGlt ZSBpbiB0aGUgbW9kZS1saW5lLiIKICA6Z3JvdXAgJ21pbmd1cy1tb2RlLWxpbmUKICA6dHlwZSAn KGJvb2xlYW4pKQoKKGRlZmN1c3RvbSBtaW5ndXMtbW9kZS1saW5lLXNob3ctc3RhdHVzIHQKICAi V2hldGhlciBvciBub3QgdG8gZGlzcGxheSBzdGF0dXMgaW5mb3JtYXRpb24gb24gdm9sdW1lLCBy ZXBlYXQgYW5kIHJhbmRvbSBpbiBtb2RlLWxpbmUuClNlZSBhbHNvIHRoZSB2YXJpYWJsZXMgYG1p bmd1cy1tb2RlLWxpbmUtc2hvdy12b2x1bWUnIGFuZCBgbWluZ3VzLW1vZGUtbGluZS1zaG93LXJh bmRvbS1hbmQtcmVwZWF0LXN0YXR1cyciIAogIDpncm91cCAnbWluZ3VzLW1vZGUtbGluZQogIDp0 eXBlICcoYm9vbGVhbikpCgooZGVmY3VzdG9tIG1pbmd1cy1tb2RlLWxpbmUtc2hvdy12b2x1bWUg dAogICJXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IHZvbHVtZSBpbmZvcm1hdGlvbiBpbiB0aGUg bW9kZS1saW5lLgptaW5ndXMtbW9kZS1saW5lLXNob3ctc3RhdHVzIHNob3VsZCBhbHNvIGJlIHNl dCB0byB0IGZvciB0aGlzIHZhcmlhYmxlIHRvIGhhdmUgZWZmZWN0IgogIDpncm91cCAnbWluZ3Vz LW1vZGUtbGluZQogIDp0eXBlICcoYm9vbGVhbikpCgooZGVmY3VzdG9tIG1pbmd1cy1tb2RlLWxp bmUtc2hvdy1yYW5kb20tYW5kLXJlcGVhdC1zdGF0dXMgdAogICJXaGV0aGVyIG9yIG5vdCB0byBk aXNwbGF5IHJhbmRvbSBhbmQgcmVwZWF0IHN0YXR1cyBpbiB0aGUgbW9kZS1saW5lLgpJZiByYW5k b20gaXMgc2hvd24sIGEgbGV0dGVyIHogaXMgc2hvd24sIGlmIHJlcGVhdCBpcyBvbiwgYSBsZXR0 ZXIgciBpcyBzaG93biB0b28uCm1pbmd1cy1tb2RlLWxpbmUtc2hvdy1zdGF0dXMgc2hvdWxkIGFs c28gYmUgc2V0IHRvIHQgZm9yIHRoaXMgdmFyaWFibGUgdG8gaGF2ZSBlZmZlY3QuIgogIDpncm91 cCAnbWluZ3VzLW1vZGUtbGluZQogIDp0eXBlICcoYm9vbGVhbikpCgo7OyBzb21lIGVtYWNzMjEg Y29tcGF0aWJpbGl0eToKKGlmIChub3QgKGZib3VuZHAgJ3JlYWQtbnVtYmVyKSkKICAgIChkZWZ1 biByZWFkLW51bWJlciAocHJvbXB0ICZvcHRpb25hbCBkZWZhdWx0KQogICAgICAobGV0ICgobiBu aWwpKQogICAgICAgICh3aGVuIGRlZmF1bHQKCSAgKHNldHEgcHJvbXB0CgkJKGlmIChzdHJpbmct bWF0Y2ggIlxcKFxcKTpbIFx0XSpcXCciIHByb21wdCkKCQkgICAgKHJlcGxhY2UtbWF0Y2ggKGZv cm1hdCAiIChkZWZhdWx0ICVzKSIgZGVmYXVsdCkgdCB0IHByb21wdCAxKQoJCSAgKHJlcGxhY2Ut cmVnZXhwLWluLXN0cmluZyAiWyBcdF0qXFwnIgoJCQkJCSAgICAoZm9ybWF0ICIgKGRlZmF1bHQg JXMpICIgZGVmYXVsdCkKCQkJCQkgICAgcHJvbXB0IHQgdCkpKSkKICAgICAgICAod2hpbGUKICAg ICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgKGxldCAoKHN0ciAocmVhZC1mcm9tLW1pbmli dWZmZXIgcHJvbXB0IG5pbCBuaWwgbmlsIG5pbAoJCQkJCSAgICAgICAoYW5kIGRlZmF1bHQKCQkJ CQkJICAgIChudW1iZXItdG8tc3RyaW5nIGRlZmF1bHQpKSkpKQogICAgICAgICAgICAgICAgKHNl dHEgbiAoY29uZAogICAgICAgICAgICAgICAgICAgICAgICAgKCh6ZXJvcCAobGVuZ3RoIHN0cikp IGRlZmF1bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZ3Agc3RyKSAocmVhZCBz dHIpKSkpKQogICAgICAgICAgICAgICh1bmxlc3MgKG51bWJlcnAgbikKICAgICAgICAgICAgICAg IChtZXNzYWdlICJQbGVhc2UgZW50ZXIgYSBudW1iZXIuIikKICAgICAgICAgICAgICAgIChzaXQt Zm9yIDEpCiAgICAgICAgICAgICAgICB0KSkpCiAgICAgICAgbikpKQoKKGRlZnVuIG1pbmd1cy1z ZXQtdmFyaWFibGVzLWludGVyYWN0aXZlbHkgKCkKICAiSW4gTWluZ3VzLCBzZXQgZW52aXJvbm1l bnQgdmFyaWFibGVzIGZvciBtcGQgY29ubmVjdGlvbiBhY2NvcmRpbmcgdG8gaW5wdXQsIGRlZmF1 bHRpbmcgdG8gYG1pbmd1cy1tcGQtaG9zdCcgYW5kIGBtaW5ndXMtbXBkLXBvcnQnLiBEbyBub3Qg dXNlIHRoaXMgZm9yIGN1c3RvbWl6aW5nIHRoZXNlIHZhbHVlczsgdXNlIGBtaW5ndXMtY3VzdG9t aXplJyBpbnN0ZWFkLiIKICAoaW50ZXJhY3RpdmUpCiAgKHNldGVudiAiTVBEX0hPU1QiIChyZWFk LXN0cmluZyAiTVBEX0hPU1Q6ICIgbWluZ3VzLW1wZC1ob3N0KSkKICAoc2V0ZW52ICJNUERfUE9S VCIgKG51bWJlci10by1zdHJpbmcgKHJlYWQtbnVtYmVyICJNUERfUE9SVDogIiBtaW5ndXMtbXBk LXBvcnQpKSkpCgooZGVmdW4gbWluZ3VzLWN1c3RvbWl6ZSAoKQogIChpbnRlcmFjdGl2ZSkKICAo Y3VzdG9taXplLWdyb3VwICdtaW5ndXMpKQoKKGRlZnZhciBtaW5ndXMtdmVyc2lvbiAiU2VsZiBQ b3J0cmFpdCBJbiBUaHJlZSBDb2xvcnMsIG9yOiAwLjIzIikKKGRlZnZhciBtaW5ndXMtc29uZy1l eHRlbnNpb24tcmVnZXhwICJcLlxcKFtNbV1bUHBdM1xcfFtPb11bR2ddW0dnXVxcfFtmRl1bbExd W2FBXVtjQ11cXHxbd1ddW2FBXVt2Vl1cXCkiKQooZGVmdmFyIG1pbmd1cy1zb25nLXJlZ2V4cCAo Y29uY2F0ICJeLisiIG1pbmd1cy1zb25nLWV4dGVuc2lvbi1yZWdleHApKQooZGVmdmFyIG1pbmd1 cy1zdHJlYW0tcmVnZXhwICJodHRwOltePD4nXCI/e30oKSBdK1wuXFwoW01tXVtQcF0zXFx8W09v XVtHZ11bR2ddXFx8W2ZGXVtsTF1bYUFdW2NDXVxcfFt3V11bYUFdW3ZWXVxcfFswLTldWzAtOV1b MC05XVswLTldXFwpIikKCihkZWZ2YXIgbWluZ3VzLWxhc3QtcXVlcnktcmVzdWx0cyBuaWwKICAi SG9sZHMgbGFzdCByZXN1bHRzIG9mIG1pbmd1cy1xdWVyeSIpCgoobWFrZS12YXJpYWJsZS1idWZm ZXItbG9jYWwgJ21pbmd1cy1sYXN0LXF1ZXJ5LXJlc3VsdHMpCgooZGVmdmFyIG1pbmd1cy1oZWxw LXRleHQgIiIKICAiVGV4dCB0byBkaXNwbGF5IGluIG1pbmd1cy1oZWxwIikKCihzZXRxIG1pbmd1 cy1oZWxwLXRleHQKICAoZm9ybWF0CiAgICIgICAgICAgICAgIF8KIF8gX18gX19fIChfKV8gX18g ICBfXyBfIF8gICBfIF9fXwp8ICdfIGAgXyBcXHwgfCAnXyBcXCAvIF9gIHwgfCB8IC8gX198Cnwg fCB8IHwgfCB8IHwgfCB8IHwgKF98IHwgfF98IFxcX18gXFwKfF98IHxffCB8X3xffF98IHxffFxc X18sIHxcXF9fLF98X19fLwogICAgICAgICAgICAgICAgICAgfF9fXy8KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KTVBEIEludGVyZmFjZSwgTmlj ZSwgR1BMJ2VkLCBVc2VyLWZyaWVuZGx5IGFuZCBTaW1wbGUKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLi4uLi4uLi4uYnV0IGFjdHVhbGx5IGp1 c3QgbmFtZWQgYWZ0ZXIgQ2hhcmxlcyBNaW5ndXMKClZlcnNpb246ICVzCgpSRUZDQVJEOiAoc2Vl IGZ1cnRoZXIgZG93biBmb3IgbW9yZSBlbGFib3JhdGUgaW5zdHJ1Y3Rpb25zKQoKVGhvc2UgZmFt aWxpYXIgd2l0aCBkaXJlZC1tb2RlIHNob3VsZCBmaW5kIHRoZW1zZWx2ZXMgYXQgaG9tZTsKdGhv c2UgZmFtaWxpYXIgd2l0aCBuY21wYyB0b28sIEFNQVAgdGhhdCBpcwoKTUFJTiBDT05UUk9MUzoK Cm1pbmd1cy1oZWxwOiAgICAgICAxCm1pbmd1cy1wbGF5bGlzdDogICAyIAptaW5ndXMtYnJvd3Nl cjogICAgMwoKR2xvYmFsIGtleXM6CgpwICAgICAgICAgICAgICAgICAgICAgICBtaW5ndXMtdG9n Z2xlICh0b2dnbGUgcGxheS9wYXVzZSkKPiAgICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLW5l eHQKPCAgICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLXByZXYKcSAgICAgICAgICAgICAgICAg ICAgICAgbWluZ3VzLWdpdC1vdXQKcyAgICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLXN0b3AK PywxLEggICAgICAgICAgICAgICAgICAgbWluZ3VzLWhlbHAKKyxyaWdodCwqLCBDLTxtb3VzZS00 PiAgbWluZ3VzLXZvbC11cAotLGxlZnQsLywgIEMtPG1vdXNlLTU+ICBtaW5ndXMtdm9sLWRvd24K YSAgICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLWluc2VydAp+ICAgICAgICAgICAgICAgICAg ICAgICBtaW5ndXMtYWRkLXN0cmVhbQpgICAgICAgICAgICAgICAgICAgICAgICBtaW5ndXMtYWRk LXBvZGNhc3QKYixTLTxtb3VzZS01PiAgICAgICAgICAgbWluZ3VzLXNlZWstYmFja3dhcmQKZixT LTxtb3VzZS00PiAgICAgICAgICAgbWluZ3VzLXNlZWstZm9yd2FyZAolJSAgICAgICAgICAgICAg ICAgICAgICAgbWluZ3VzLXNlZWstcGVyY2VudHMKJCAgICAgICAgICAgICAgICAgICAgICAgbWlu Z3VzLXNlZWstZnJvbS1zdGFydApJICAgICAgICAgICAgICAgICAgICAgICBtaW5ndXMtaW5mbwpj ICAgICAgICAgICAgICAgICAgICAgICBtaW5ndXMtY3JvcApDICAgICAgICAgICAgICAgICAgICAg ICBtaW5ndXMtY2xlYXIKTCAgICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLWxvYWQtYWxsCnog ICAgICAgICAgICAgICAgICAgICAgIG1pbmd1cy1yYW5kb20KWiAgICAgICAgICAgICAgICAgICAg ICAgbWluZ3VzLXNodWZmbGUKciAgICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLXJlcGVhdApD LXggQy1zICAgICAgICAgICAgICAgICBtaW5ndXMtc2F2ZS1wbGF5bGlzdApSICAgICAgICAgICAg ICAgICAgICAgICBtaW5ndXMtcmVtb3ZlLXBsYXlsaXN0CmwgICAgICAgICAgICAgICAgICAgICAg IG1pbmd1cy1sb2FkLXBsYXlsaXN0Cm8gICAgICAgICAgICAgICAgICAgICAgIG1pbmd1cy1vcGVu LXBsYXlsaXN0ClEgICAgICAgICAgICAgICAgICAgICAgIG1pbmd1cy1xdWVyeQpNLSUlICAgICAg ICAgICAgICAgICAgICAgbWluZ3VzLXF1ZXJ5LXJlZ2V4cApcXCAgICAgICAgICAgICAgICAgICAg ICAgbWluZ3VzLWxhc3QtcXVlcnktcmVzdWx0cwprICAgICAgICAgICAgICAgICAgICAgICBmb3J3 YXJkLWxpbmUgLTEKaiAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZC1saW5lCnYgICAgICAg ICAgICAgICAgICAgICAgIG1pbmd1cy1zaG93LXZlcnNpb24KCgpQbGF5bGlzdCBrZXlzOgoKZCxD LWQsCjxkZWxldGU+LCBDLXcgICAgICAgICAgIG1pbmd1cy1kZWwKRCAgICAgICAgICAgICAgICAg ICAgICAgbWluZ3VzLWRlbC1tYXJrZWQKTyAgICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLWRl bC1vdGhlci1zb25ncwpNICAgICAgICAgICAgICAgICAgICAgICBtaW5ndXMtbW92ZS1hbGwKQy1s ICAgICAgICAgICAgICAgICAgICAgbWluZ3VzLWdvdG8tY3VycmVudC1zb25nCkMtayAgICAgICAg ICAgICAgICAgICAgIG1pbmd1cy1tb3ZlLXVwCkMtaiAgICAgICAgICAgICAgICAgICAgIG1pbmd1 cy1tb3ZlLWRvd24KUkVULFttb3VzZS0zXSAgICAgICAgICAgbWluZ3VzLXBsYXkKU1BDLG0sW21v dXNlLTJdICAgICAgICAgbWluZ3VzLW1hcmsKVSAgICAgICAgICAgICAgICAgICAgICAgbWluZ3Vz LXVubWFyay1hbGwKISAgICAgICAgICAgICAgICAgICAgICAgcnVuIGEgY29tbWFuZCBvbiB0aGUg bWFya2VkIHNvbmdzCgpCcm93c2VyIGtleXM6CgpSRVQsIFttb3VzZS0xXSAgICAgICAgICBtaW5n dXMtZG93bi1kaXItb3ItcGxheS1zb25nCjosXiwgW21vdXNlLTNdICAgICAgICAgIG1pbmd1cy1k aXItdXAKU1BDICBbbW91c2UtMl0gICAgICAgICAgbWluZ3VzLWluc2VydApQICAgICAgICAgICAg ICAgICAgICAgICBtaW5ndXMtaW5zZXJ0LWFuZC1wbGF5CgpNT1JFIEVMQUJPUkFURSBJTlNUUlVD VElPTlM6CgpSZXF1aXJlbWVudHM6CgotIGNsLW1hY3MuZWwKLSBkaXJlZC5lbCAoaW5jbHVkZWQg aW4gZW1hY3MpCi0gbXBjIGFjY2VzIHRvIG1wZCwgZWl0aGVyIGxvY2FsbHkgb3Igb24gYW5vdGhl ciBzZXJ2ZXIuCgotIEVtYWNzMjIKCi0gSXNzdWVzIHdpdGggZW1hY3MyMToKCmFsdGhvdWdoIHRo ZSBmdW5jdGlvbiBsaW5lLW51bWJlci1hdC1wb3MgaXMgcmVwbGFjZWQgd2l0aCBhCmN1c3RvbSBt aW5ndXMtbGluZS1udW1iZXItYXQtcG9zLCBhbmQgdGhlIGNhbGwgdG8KYHdoaWxlLW5vLWlucHV0 JyBpcyBsZWZ0IG91dCB3aGVuIHJ1bm5pbmcgZW1hY3MyMSwgYW5kIHdoZXJlYXMKZm9yIHRoZSBw cmV2aW91c2x5IHVuc3VwcG9ydGVkIHJlYWQtbnVtYmVyLCBJIHNpbXBseSByZXBsaWNhdGVkCml0 cyBmdW5jdGlvbiBkZWZpbml0aW9uIGZyb20gdGhlIGVtYWNzMjIgc3Vici5lbCwgYW5ub3lpbmcg aXNzdWVzCm5vdyBoYXZlIGNyZXB0IHVwIHNvIHRoYXQgeW91IGhhdmUgdG8gY2FsbCBDLWcgd2hl bmV2ZXIgc3dpdGNoaW5nCnRvIGFuZCBmcm8gdGhlIG1pbmd1cy1idWZmZXJzLiBUaGUgcmVzdCAv c2VlbXMvIHRvIHdvcmsgc29tZXdoYXQKbm93LgoKR2V0dGluZyBzdGFydGVkOgoKVGhpcyBoZWxw IGlzIGFsd2F5cyBhdmFpbGFibGUgd2l0aCB0aGUgY29tbWFuZCBtaW5ndXMtaGVscCwgb3IKdGhl IGtleXMgPyBvciAxIGZyb20gdGhlIGJ1ZmZlcnMgKk1pbmd1cyogb3IgKk1pbmd1cwpCcm93c2Vy KgoKV2hlbiBtcGQgaXMgYWxyZWFkeSBwbGF5aW5nIGEgcGxheWxpc3QsIHRoZSBjb21tYW5kIE0t eCBtaW5ndXMKd2lsbCBzaG93IHRoaXMgcGxheWxpc3Q7IHdoZW4gbm90IHNvLCBsb2FkIGEgcGxh eWxpc3Qgd2l0aCBsLApvciBtYWtlIGEgbmV3IG9uZSB3aXRoIE0teCBtaW5ndXMtYnJvd3NlIChk ZWZhdWx0IGtleTogMykuCgpTdGFydGluZyBtcGQ6ICAgICAgICAgICAgICAgICAgICBtaW5ndXMt c3RhcnQtbXBkLWRhZW1vbgpQcm92aWRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzOiBtaW5ndXMt c2V0LXZhcmlhYmxlcy1pbnRlcmFjdGl2ZWx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzZWUgYWxzbyBtaW5ndXMtY3VzdG9taXplKQoKU0VMRUNUSU9OIE9GIFNPTkdTOgoKQnJv d3Npbmc6ICBjb21tYW5kOiBtaW5ndXMtYnJvd3NlIGtleTogMwoKbW92ZW1lbnQgYW5kIGluc2Vy dGlvbjoKClNQQUNFQkFSIGFsd2F5cyBpbnNlcnRzIGV2ZXJ5dGhpbmcgdW5kZXIgcG9pbnQgb3Ig cmVnaW9uCgpQICAgICAgICAgIHNhbWUgYXMgU1BBQ0VCQVIsIGFuZCBwbGF5cyB0aGUgaW5zZXJ0 ZWQgc29uZyhzKSBpbnN0YW50bHkKClJFVCAgICAgICAgc2FtZSBhcyBTUEFDRUJBUiwgZXhlcHQg d2hlbiBvbiBhIGRpcmVjdG9yeSBhbmQgbWFyayBub3QgYWN0aXZlLCB0aGVuIGRlc2NlbmQgaW50 byBkaXIuCgpeICBvciA6ICAgIGdvIHVwIGEgZGlyZWN0b3J5CgpNaW5pYnVmZmVyIGJyb3dzaW5n OgoKYSAgICAgICAgICBpbnNlcnQgYSBmaWxlIG9yIGRpcmVjdG9yeSB0aHJvdWdoIHRoZSB1c2Ug b2YgdGhlIG1pbmlidWZmZXI7CiAgICAgICAgICAgZm9sbG93IGluc3RydWN0aW9ucyB0aGVyZSBw cm92aWRlZAoKUGxheWxpc3QgbG9hZGluZzoKCmwgICAgICAgICAgbG9hZCBwbGF5bGlzdAoKU3Ry ZWFtaW5nIGF1ZGlvOgoKTXBkIHN1cHBvcnRzIHN0cmVhbWluZyBhdWRpby4gIEFzaWRlIGZyb20g dGhlIGZhY3QgdGhhdCBvbmUgY2FuCmFsd2F5cyBzYXZlIGEgbGluayBpbiBhIHBsYXlsaXN0LCB0 aGlzIHByb3ZpZGVzIGEgd2F5IHRvIHRha2UKb25lJ3Mgb3duIHByZXNldHMgd2l0aCB5b3UgYXMg YSBjbGllbnQsIGFzIHN0cmVhbWluZyBhdWRpbyBkb2VzCm5vdCByZXF1aXJlIHN0b3JhZ2Ugb2Yg c29uZ3Mgb24gdGhlIHNlcnZlci4gTWluZ3VzIHRha2VzCmFkdmFudGFnZSBvZiB0aGlzIGZhY3Qg YnkgcHJvdmlkaW5nIHRoZSBjdXN0b21pemFibGUgdmFyaWFibGVzCmBtaW5ndXMtc3RyZWFtLWFs aXN0JyBhbmQgYG1pbmd1cy1wb2RjYXN0LWFsaXN0JzogYWxpc3RzIG9mCmNvbnNlcyB3aG9zZSBr ZXkgaXMgYSBwcmV0dHkgbmFtZSwgYW5kIHdob3NlIHZhbHVlIGlzIHRoZSB1cmwgb2YKdGhlIHJl c3BlY3RpdmUgcmFkaW8gc3RyZWFtIG9yIHBvZGNhc3QgZmlsZS4KCn4gICAgICAgICAgbG9hZCBh biBhdWRpbyBzdHJlYW0sIHJlYWQgZnJvbSBtaW5pYnVmZmVyLCB3aXRoIGNvbXBsZXRpb24gZnJv bSB0aGUgY3VzdG9taXphYmxlIHZhcmlhYmxlIGBtaW5ndXMtc3RyZWFtLWFsaXN0JzsKICAgICAg ICAgICBkZWZhdWx0cyB0byBsaW5rIChpbiB3M20gYW5kIHBvc3NpYmx5IGluIGdudXMgaHRtbCBt YWlsIGJ1ZmZlcnMpIG9yIHVybCB1bmRlciBwb2ludC4KCmAgICAgICAgICAgc2FtZSBhcyB+LCBi dXQgbG9hZHMgYWxsIHBvZGNhc3RzIGZvdW5kIGluIGEgbGluay4gQ29tcGxldGlvbiBwcm92aWRl ZCBieSB0aGUgY3VzdG9taXphYmxlIHZhcmlhYmxlIGBtaW5ndXMtcG9kY2FzdC1hbGlzdCcuCiAg ICAgICAgICAgYWN0dWFsbHkgfiB3aWxsIGxvYWQgYSBwb2RjYXN0IHRvbyBpZiBhIHBvZGNhc3Qg aXMgdW5kZXIgcG9pbnQuIEhvd2V2ZXIsIHRvIHByb3ZpZGUgdHdvIHNlcGFyYXRlIHZhcmlhYmxl cyBmb3IgY29tcGxldGlvbiwKICAgICAgICAgICB0aGlzIG9wdGlvbiBpcyBwcm92aWRlZCBzZXBh cmF0ZWx5LgoKTWFraW5nIHN1cmUgYW4gaW5zZXJ0aW9uIGlzIGluc3RhbnRseSBwbGF5ZWQ6CgpJ ZiBhbnkgb2YgdGhlIGluc2VydGlvbiBjb21tYW5kcyBpcyBwcmVmaW5nZWQsIHRoZXkgd2lsbCBw bGF5IHRoZSBpbnNlcnRpb24gaW5zdGFudGx5IGFmdGVyIGluc2VydGlvbi4KCkMtdSBhICAgICAg bWluZ3VzLWluc2VydC1hbmQtcGxheQpDLXUgbCAgICAgIG1pbmd1cy1sb2FkLXBsYXlsaXN0LWFu ZC1wbGF5CkMtdSB+ICAgICAgbWluZ3VzLWFkZC1zdHJlYW0tYW5kLXBsYXkKQy11IGAgICAgICBt aW5ndXMtYWRkLXBvZGNhc3QtYW5kLXBsYXkKClF1ZXJ5aW5nOgoKUSAgICAgICAgICBxdWVyeSB0 aGUgbXBkIGRhdGFiYXNlIGZvciBhcnRpc3QsIGFsYnVtLCBmaWxlbmFtZSwgdGl0bGUsIG9yIHJl Z2V4cCBvbiBmaWxlbmFtZQogICAgICAgICAgICh0eXBlIHJlYWQgZnJvbSBtaW5pYnVmZmVyKQpN LSUlICAgICAgICBxdWVyeSBmb3IgcmVnZXhwIG9uIGZpbGVuYW1lClxcICAgICAgICAgIHNob3cg bGFzdCBxdWVyeSByZXN1bHRzIGFnYWluCgoKUmVzdWx0cyBhcmUgc2hvd24gaW4gdGhlICpNaW5n dXMgQnJvd3NlciogYnVmZmVyLCB3aGVyZSBhbGwgY29tbWFuZHMgZm9yIGJyb3dzaW5nIGFyZSBh dmFpbGFibGUKClBMQVlJTkcgQ09OVFJPTFM6CgpzZWUgdGhlIHJlZmNhcmQsIGFuZCBkb2N1bWVu dGF0aW9uIG9mIHZhcmlvdXMgY29tbWFuZHMsIGp1c3QgdHJ5CnRoZW0gb3V0LiBUaGV5IHNob3Vs ZCBiZSBxdWl0ZSBzZWxmLWV2aWRlbnQsIGJ1dCBsZXQgbWUga25vdyB3aGVuCnRoZXkgYXJlIG5v dC4gTm90IGV2ZXJ5IGNvbW1hbmQgaXMgKGFscmVhZHkpIG1hcHBlZCB0byBhCmtleSwgc28gTS14 IG1pbmd1cy0gVEFCIHRvIHlvdXIgZGVsaWdodCB0byBmaW5kIGV2ZXJ5dGhpbmcuCgpQTEFZTElT VCBFRElUSU5HOgoKRGVsZXRpb246CgpvbiBtYXJrZWQgc29uZ3M6IHNlZSBzZWN0aW9uIGBNYXJr aW5nJwoKQy1kLCBkLCBDLXcgb3IgREVMCgpkZWxldGUgc2luZ2xlIGZpbGUsIG9yIHJlZ2lvbiB3 aGVuIHRoZXJlIGlzIGEgcmVnaW9uOwoKTkI6IHRoaXMgbGVhdmVzIHRoZSBtYXJraW5nIG9mIG90 aGVyIHNvbmdzIGludGFjdC4gQXMgc3VjaCBpdCBjYW4KYmUgc2xvdywgZXNwLiB3aGVuIHRoZSBy ZWdpb24gaXMgbGFyZ2U7IGl0IGlzIHRoZW4gaGlnaGx5CnJlY29tbWVuZGVkIHRvIG1hcmsgdGhl IHNvbmdzIGZpcnN0LCBhbmQgdGhlbiBpc3N1ZSB0aGUgY29tbWFuZAptaW5ndXMtZGVsLW1hcmtl ZCAodW50aWwgSSByZXdyaXRlIHRoaXMgZnVuY3Rpb24gOl0pCgpNb3ZlbWVudDoKCm9mIG1hcmtl ZCBzb25nczogc2VlIHNlY3Rpb24gYE1hcmtpbmcnCgpvZiBzaW5nbGUgc29uZzoKCkMtayAgICAg ICAgICAgICAgICAgTW92ZSBzb25nIHVwIG9uZSBwb3NpdGlvbgpDLWogICAgICAgICAgICAgICAg IE1vdmUgc29uZyB1cCBkb3duIHBvc2l0aW9uCgpNYXJraW5nOgoKTWFya2luZyBzb25ncyBpcyB1 c2VmdWwgZm9yIG1vdmVtZW50IG9yIGRlbGV0aW9uIG9mIG11bHRpcGxlIHNvbmdzIGluIG9yIGZy b20gdGhlIHBsYXlsaXN0OwpmaXJzdCBtYXJrIHRoZW0sIHRoZW4gZGVsZXRlIG9yIG1vdmUgdGhl bSAodG8gcG9pbnQpLgoKbSBvciBTUEFDRUJBUiAgICAgICAodW4pbWFyayBhIHNvbmcsIG9yIHJl Z2lvbiwgd2hlbiB0aGVyZSBpcyBhIHJlZ2lvbgpEICh1cGNhc2VkKSAgICAgICAgIGRlbGV0ZSBt YXJrZWQgc29uZ3MgKHRoaXMgd2lsbCBoYXZlIHRoZSBzYW1lIGVmZmVjdCBhcwogICAgICAgICAg ICAgICAgICAgIG1pbmd1cy1kZWwgd2hlbiB0aGVyZSBhcmUgbm8gbWFya2VkIHNvbmdzKQpNICAg ICAgICAgICAgICAgICAgIG1vdmUgbWFya2VkIHNvbmdzIHRvIHBvaW50CiEgICAgICAgICAgICAg ICAgICAgZ2V0IHByb21wdGVkIGZvciBhbiBvcGVyYXRpb24gb24gdGhlIG1hcmtlZCBzb25ncwoK UG9pbnQgb2YgaW5zZXJ0aW9uOgoKVXNlIG1pbmd1cy1zZXQtaW5zZXJ0aW9uLXBvaW50IHRvIHNw ZWNpZnkgd2hlcmUgbmV3IGluc2VydGlvbnMKZnJvbSB0aGUgaW5zZXJ0aW9uIGNvbW1hbmRzIGZy b20gdGhlICpNaW5ndXMgQnJvd3NlciogYnVmZmVyIG9yCmZyb20gbWluaWJ1ZmZlci1pbnNlcnRp b24gd2lsbCB0YWtlIHBsYWNlLiBJZgoqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiogaXMgdW5z ZXQgKG5pbCksIGluc2VydGlvbnMgd2lsbCB0YWtlCnBsYWNlIGF0IHRoZSBlbmQgb2YgdGhlIHBs YXlsaXN0LgoKaSAgICAgICAgICAgICAgICAgICBzZXQgaW5zZXJ0aW9uIHBvaW50CnUgICAgICAg ICAgICAgICAgICAgdW5zZXQgaW5zZXJ0aW9uIHBvaW50IChhdmFpbGFibGUgZnJvbSBldmVyeXdo ZXJlKQpDLXUgaSAgICAgICAgICAgICAgIHNob3cgY3VycmVudCBpbnNlcnRpb24gcG9pbnQgYW5k IG1vdmUgcG9pbnQgdGhlcmUKClNhdmluZyB5b3VyIHBsYXlsaXN0OgoKd2hhdCBhYm91dCBDLXgg Qy1zLCBjYW4geW91IG1lbW9yaXplIHRoYXQ/CgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpBVVRIT1I6ICBOaWVscyBHaWVzZW4KQ09OVEFDVDogbmll bHNnaWVzZW4gYXQgaWJidSBkb3QgbmwKIiBtaW5ndXMtdmVyc2lvbikpCgooZGVmY29uc3QgbWlu Z3VzLWZvbnQtbG9jay1rZXl3b3JkcwogIChsaXN0CiAgICcoIl5cKiAuKiIgLiBmb250LWxvY2st d2FybmluZy1mYWNlKSkpCgooZXZhbC13aGVuIChsb2FkKQogIChpZiAoc3RyaW5nLW1hdGNoICJH TlUgRW1hY3MgMjIiICh2ZXJzaW9uKSkKICAgICAgKGRlZmNvbnN0IG1pbmd1cy1icm93c2UtZm9u dC1sb2NrLWtleXdvcmRzCgkobGlzdAoJICcoIi4qIiAuIGZvbnQtbG9jay10eXBlLWZhY2UpCgkg YCgsbWluZ3VzLXNvbmctcmVnZXhwIC4gZGlyZWQtaWdub3JlZC1mYWNlKSkpKSkKCihkZWZjb25z dCBtaW5ndXMtaGVscC1mb250LWxvY2sta2V5d29yZHMKICAobGlzdAogICAnKCJtaW5ndXNbYS16 QS1aIDAtOS1dKiIgLiBmb250LWxvY2stZnVuY3Rpb24tbmFtZS1mYWNlKQogICAnKCJeW0EtWiBd KzoiIC4gZm9udC1sb2NrLXdhcm5pbmctZmFjZSkKICAgJygiXltBLVpdW2EteiBdKzoiIC4gZm9u dC1sb2NrLWNvbnN0YW50LWZhY2UpCiAgICcoIj0iIC4gZm9udC1sb2NrLXZhcmlhYmxlLW5hbWUt ZmFjZSkKICAgJygiYC4rJyIpKSkKCihkZWZjb25zdCBtaW5ndXMtZ2xvYmFsLW1hcCAobWFrZS1r ZXltYXApICJHbG9iYWwga2V5bWFwIGZvciBgbWluZ3VzJyIpCgooZGVmaW5lLWtleSBtaW5ndXMt Z2xvYmFsLW1hcCAiayIgKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpIChmb3J3YXJkLWxpbmUgLTEp KSkKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgInEiICdtaW5ndXMtZ2l0LW91dCkKKGRl ZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgIlEiICdtaW5ndXMtcXVlcnkpCihkZWZpbmUta2V5 IG1pbmd1cy1nbG9iYWwtbWFwICJcTS0lIiAnbWluZ3VzLXF1ZXJ5LXJlZ2V4cCkKKGRlZmluZS1r ZXkgbWluZ3VzLWdsb2JhbC1tYXAgIlxcIiAnbWluZ3VzLWxhc3QtcXVlcnktcmVzdWx0cykKKGRl ZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgImoiICdmb3J3YXJkLWxpbmUpCihkZWZpbmUta2V5 IG1pbmd1cy1nbG9iYWwtbWFwICJzIiAnbWluZ3VzLXN0b3ApCihkZWZpbmUta2V5IG1pbmd1cy1n bG9iYWwtbWFwICJAIiAnbWluZ3VzLXVwZGF0ZSkKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1t YXAgInAiICdtaW5ndXMtdG9nZ2xlKQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCAiJSIg J21pbmd1cy1zZWVrLXBlcmNlbnRzKQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCAiPiIg J21pbmd1cy1uZXh0KQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCAiPCIgJ21pbmd1cy1w cmV2KQoobWFwY2FyIChsYW1iZGEgKGtleSkgKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAg a2V5ICdtaW5ndXMtdm9sLXVwKSkKCScoIisiIFsocmlnaHQpXSAiKiIpKQoobWFwY2FyIChsYW1i ZGEgKGtleSkgKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAga2V5ICdtaW5ndXMtdm9sLWRv d24pKQoJJygiLSIgWyhsZWZ0KV0gIi8iKSkKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAg ImIiICdtaW5ndXMtc2Vlay1iYWNrd2FyZCkKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAg ImYiICdtaW5ndXMtc2VlaykKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgIiQiICdtaW5n dXMtc2Vlay1mcm9tLXN0YXJ0KQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCAieCIgJ21p bmd1cy1jcm9zc2ZhZGUpCihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwICJDIiAnbWluZ3Vz LWNsZWFyKQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCAiYyIgJ21pbmd1cy1jcm9wKQoo ZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCAiTCIgJ21pbmd1cy1sb2FkLWFsbCkKKGRlZmlu ZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgIkkiICdtaW5ndXMtaW5mbykKKGRlZmluZS1rZXkgbWlu Z3VzLWdsb2JhbC1tYXAgInYiICdtaW5ndXMtc2hvdy12ZXJzaW9uKQooZGVmaW5lLWtleSBtaW5n dXMtZ2xvYmFsLW1hcCAieiIgJ21pbmd1cy1yYW5kb20pCihkZWZpbmUta2V5IG1pbmd1cy1nbG9i YWwtbWFwICJaIiAnbWluZ3VzLXNodWZmbGUpCihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFw ICJyIiAnbWluZ3VzLXJlcGVhdCkKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgInUiICdt aW5ndXMtdW5zZXQtaW5zZXJ0aW9uLXBvaW50KQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1h cCAibCIgJ21pbmd1cy1sb2FkLXBsYXlsaXN0KQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1h cCAiUiIgJ21pbmd1cy1yZW1vdmUtcGxheWxpc3QpCihtYXBjYXIgKGxhbWJkYSAoa2V5KSAoZGVm aW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCBrZXkgJ21pbmd1cy1oZWxwKSkKCScoIkgiICI/IiAi MSIpKQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCAiYSIgJ21pbmd1cy1pbnNlcnQpCihk ZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwICJQIiAnbWluZ3VzLWluc2VydC1hbmQtcGxheSkK KGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgIn4iICdtaW5ndXMtYWRkLXN0cmVhbSkKKGRl ZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgImAiICdtaW5ndXMtYWRkLXBvZGNhc3QpCihkZWZp bmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwICJcQy14XEMtcyIgJ21pbmd1cy1zYXZlLXBsYXlsaXN0 KQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCAiMiIgJ21pbmd1cykKKGRlZmluZS1rZXkg bWluZ3VzLWdsb2JhbC1tYXAgIjMiICdtaW5ndXMtYnJvd3NlKQooZGVmaW5lLWtleSBtaW5ndXMt Z2xvYmFsLW1hcCAidyIgJ21pbmd1cy13YWtlLXVwLWNhbGwpCihkZWZpbmUta2V5IG1pbmd1cy1n bG9iYWwtbWFwIChpZiAoZmVhdHVyZXAgJ3hlbWFjcylbKGNvbnRyb2wgYnV0dG9uNSldW0MtbW91 c2UtNV0pICdtaW5ndXMtdm9sLWRvd24pCihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwIChp ZiAoZmVhdHVyZXAgJ3hlbWFjcylbKGNvbnRyb2wgYnV0dG9uNCldW0MtbW91c2UtNF0pICdtaW5n dXMtdm9sLXVwKQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCAoaWYgKGZlYXR1cmVwICd4 ZW1hY3MpWyhzaGlmdCBidXR0b241KV1bUy1tb3VzZS01XSkgJ21pbmd1cy1zZWVrLWJhY2t3YXJk KQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCAoaWYgKGZlYXR1cmVwICd4ZW1hY3MpWyhz aGlmdCBidXR0b240KV1bUy1tb3VzZS00XSkgJ21pbmd1cy1zZWVrKQoKOzsgYnVpbGQgdGhlIG1l bnUKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgW21lbnUtYmFyIG1pbmd1c10KICAoY29u cyAiTWluZ3VzIiAobWFrZS1zcGFyc2Uta2V5bWFwICJtaW5ndXMiKSkpCgooZGVmaW5lLWtleSBt aW5ndXMtZ2xvYmFsLW1hcCBbbWVudS1iYXIgbWluZ3VzIGN1c3RvbWl6YXRpb25dCiAgKGNvbnMg ICJDdXN0b21pemF0aW9uIiAgKG1ha2Utc3BhcnNlLWtleW1hcCAibWluZ3VzIGN1c3RvbWl6YXRp b24iKSkpCihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51LWJhciBtaW5ndXMgY3Vz dG9taXphdGlvbiBwb3J0XQogICcobWVudS1pdGVtICJNUEQgUE9SVCIgKGxhbWJkYSAoKSAoaW50 ZXJhY3RpdmUpIChjdXN0b21pemUtdmFyaWFibGUgJ21pbmd1cy1tcGQtcG9ydCkpIDpoZWxwICJQ b3J0IGZvciBjb25uZWN0aW5nIHRvIG1wZCBzZXJ2ZXIiKSkKKGRlZmluZS1rZXkgbWluZ3VzLWds b2JhbC1tYXAgW21lbnUtYmFyIG1pbmd1cyBjdXN0b21pemF0aW9uIGhvc3RdCiAgJyhtZW51LWl0 ZW0gIk1QRCBIT1NUIiAobGFtYmRhICgpIChpbnRlcmFjdGl2ZSkgKGN1c3RvbWl6ZS12YXJpYWJs ZSAnbWluZ3VzLW1wZC1ob3N0KSkgOmhlbHAgIkhvc3QgdG8gY29ubmVjdCB0byIpKQooZGVmaW5l LWtleSBtaW5ndXMtZ2xvYmFsLW1hcCBbbWVudS1iYXIgbWluZ3VzIGN1c3RvbWl6YXRpb24gc2Vl ay1hbW91bnRdCiAgJygiU2VlayBBbW91bnQiIC4gKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpIChj dXN0b21pemUtdmFyaWFibGUgJ21pbmd1cy1zZWVrLWFtb3VudCkpKSkKKGRlZmluZS1rZXkgbWlu Z3VzLWdsb2JhbC1tYXAgW21lbnUtYmFyIG1pbmd1cyBjdXN0b21pemF0aW9uIG1vZGUtbGluZV0K ICAnKCJNb2RlLWxpbmUiIC4gKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpIChjdXN0b21pemUtZ3Jv dXAgJ21pbmd1cy1tb2RlLWxpbmUpKSkpCihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwIFtt ZW51LWJhciBtaW5ndXMgY3VzdG9taXphdGlvbiBzdHJlYW0tYWxpc3RdCiAgJyhtZW51LWl0ZW0g IlN0cmVhbXMiICAobGFtYmRhICgpIChpbnRlcmFjdGl2ZSkgKGN1c3RvbWl6ZS12YXJpYWJsZSAn bWluZ3VzLXN0cmVhbS1hbGlzdCkpIDpoZWxwICJDdXN0b21pemUgc3RyZWFtIHByZXNldHMiKSkK KGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgW21lbnUtYmFyIG1pbmd1cyBjdXN0b21pemF0 aW9uIHBvZGNhc3QtYWxpc3RdCiAgJyhtZW51LWl0ZW0gIlBvZGNhc3RzIiAobGFtYmRhICgpIChp bnRlcmFjdGl2ZSkgKGN1c3RvbWl6ZS12YXJpYWJsZSAnbWluZ3VzLXBvZGNhc3QtYWxpc3QpKSA6 aGVscCAiQ3VzdG9taXplIHBvZGNhc3QgcHJlc2V0cyIpKQooZGVmaW5lLWtleSBtaW5ndXMtZ2xv YmFsLW1hcCBbbWVudS1iYXIgbWluZ3VzIGN1c3RvbWl6YXRpb24gYWxsXQogICcobWVudS1pdGVt ICJBbGwiIG1pbmd1cy1jdXN0b21pemUgOmhlbHAgImN1c3RvbWl6ZSBhbGwgbWluZ3VzIHZhcmlh YmxlcyIpKQoKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgW21lbnUtYmFyIG1pbmd1cyBz ZXAxXQogICcobWVudS1pdGVtICItLSIpKQoKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAg W21lbnUtYmFyIG1pbmd1cyBxdWVyeS1yZWdleHBdCiAgJyhtZW51LWl0ZW0gIlF1ZXJ5IHJlZ2V4 cCIgIG1pbmd1cy1xdWVyeS1yZWdleHAgOmhlbHAgIlF1ZXJ5IHRoZSBtcGQgZGF0YWJhc2Ugd2l0 aCBhIHJlZ2V4cCIpKQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCBbbWVudS1iYXIgbWlu Z3VzIHF1ZXJ5XQogICcobWVudS1pdGVtICJRdWVyeSIgbWluZ3VzLXF1ZXJ5IDpoZWxwICJRdWVy eSB0aGUgbXBkIGRhdGFiYXNlIikpCihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51 LWJhciBtaW5ndXMgc2VwLWFib3ZlLXF1ZXJ5XQogICcobWVudS1pdGVtICItLSIpKQoKKGRlZmlu ZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgW21lbnUtYmFyIG1pbmd1cyBzdHJlYW1zXQogIChjb25z ICJTdHJlYW1zIGFuZCBQb2RjYXN0cyIgKG1ha2Utc3BhcnNlLWtleW1hcCAibWluZ3VzIHN0cmVh bXMiKSkpCihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51LWJhciBtaW5ndXMgc3Ry ZWFtcyBwb2RjYXN0LWFsaXN0XQogICcobWVudS1pdGVtICJDdXN0b21pemUgUG9kY2FzdHMiIChs YW1iZGEgKCkgKGludGVyYWN0aXZlKSAoY3VzdG9taXplLXZhcmlhYmxlICdtaW5ndXMtcG9kY2Fz dC1hbGlzdCkpIDpoZWxwICJDdXN0b21pemUgcG9kY2FzdCBwcmVzZXRzIikpCihkZWZpbmUta2V5 IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51LWJhciBtaW5ndXMgc3RyZWFtcyBzdHJlYW0tYWxpc3Rd CiAgJyhtZW51LWl0ZW0gIkN1c3RvbWl6ZSBTdHJlYW1zIiAgKGxhbWJkYSAoKSAoaW50ZXJhY3Rp dmUpIChjdXN0b21pemUtdmFyaWFibGUgJ21pbmd1cy1zdHJlYW0tYWxpc3QpKSA6aGVscCAiQ3Vz dG9taXplIHN0cmVhbSBwcmVzZXRzIikpCihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwIFtt ZW51LWJhciBtaW5ndXMgc3RyZWFtcyBzZXBdCiAgJyhtZW51LWl0ZW0gIi0tIikpCihkZWZpbmUt a2V5IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51LWJhciBtaW5ndXMgc3RyZWFtcyBwb2RjYXN0LWFu ZC1wbGF5XQogICcoIkFkZCBQb2RjYXN0IGFuZCBQbGF5IiAgICAgICAuIG1pbmd1cy1hZGQtcG9k Y2FzdC1hbmQtcGxheSkpCihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51LWJhciBt aW5ndXMgc3RyZWFtcyBwb2RjYXN0XQogICcoIkFkZCBQb2RjYXN0IiAgICAgICAuIG1pbmd1cy1h ZGQtcG9kY2FzdCkpCihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51LWJhciBtaW5n dXMgc3RyZWFtcyBzdHJlYW0tYW5kLXBsYXldCiAgJygiQWRkIFN0cmVhbSBhbmQgUGxheSIgIC4g bWluZ3VzLWFkZC1zdHJlYW0tYW5kLXBsYXkpKQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1h cCBbbWVudS1iYXIgbWluZ3VzIHN0cmVhbXMgc3RyZWFtXQogICcoIkFkZCBTdHJlYW0iICAgICAg IC4gbWluZ3VzLWFkZC1zdHJlYW0pKQoKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgW21l bnUtYmFyIG1pbmd1cyBwbGF5bGlzdHNdCiAgKGNvbnMgIlBsYXlsaXN0IGxvYWRpbmcvc2F2aW5n L3JlbW92aW5nIiAobWFrZS1zcGFyc2Uta2V5bWFwICJtaW5ndXMgcGxheWxpc3RzIikpKQooZGVm aW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCBbbWVudS1iYXIgbWluZ3VzIHBsYXlsaXN0cyByZW1v dmVdCiAgJygiUmVtb3ZlIiAgICAgICAuIG1pbmd1cy1yZW1vdmUtcGxheWxpc3QpKQooZGVmaW5l LWtleSBtaW5ndXMtZ2xvYmFsLW1hcCBbbWVudS1iYXIgbWluZ3VzIHBsYXlsaXN0cyBzYXZlXQog ICcoIlNhdmUiICAgICAgIC4gbWluZ3VzLXNhdmUtcGxheWxpc3QpKQooZGVmaW5lLWtleSBtaW5n dXMtZ2xvYmFsLW1hcCBbbWVudS1iYXIgbWluZ3VzIHBsYXlsaXN0cyBsb2FkLWFuZC1wbGF5XQog ICcoIkxvYWQgZW50aXJlIGRhdGFiYXNlIiAuIG1pbmd1cy1sb2FkLWFsbCkpCihkZWZpbmUta2V5 IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51LWJhciBtaW5ndXMgcGxheWxpc3RzIGxvYWQtYWxsXQog ICcoIkxvYWQgYW5kIFBsYXkiIC4gbWluZ3VzLWxvYWQtcGxheWxpc3QtYW5kLXBsYXkpKQooZGVm aW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCBbbWVudS1iYXIgbWluZ3VzIHBsYXlsaXN0cyBsb2Fk XQogICcoIkxvYWQiIC4gbWluZ3VzLWxvYWQtcGxheWxpc3QpKQoKKGRlZmluZS1rZXkgbWluZ3Vz LWdsb2JhbC1tYXAgW21lbnUtYmFyIG1pbmd1cyBzZXAtYWJvdmUtcGxheWxpc3RzLWFuZC1zdHJl YW1zXQogICcobWVudS1pdGVtICItLSIpKQoKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAg W21lbnUtYmFyIG1pbmd1cyByZXBlYXRdCiAgJygiUmVwZWF0ICh0b2dnbGUpIiAgICAgICAgICAu IG1pbmd1cy1yZXBlYXQpKQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCBbbWVudS1iYXIg bWluZ3VzIHNodWZmbGVdCiAgJygiU2h1ZmZsZSIgICAgICAgICAgLiBtaW5ndXMtc2h1ZmZsZSkp CihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51LWJhciBtaW5ndXMgcmFuZG9tXQog ICcoIlJhbmRvbSAodG9nZ2xlKSIgICAgICAgICAgLiBtaW5ndXMtcmFuZG9tKSkKCihkZWZpbmUt a2V5IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51LWJhciBtaW5ndXMgY2xlYXJdCiAgJygiQ2xlYXIg UGxheWxpc3QiICAgICAgICAgIC4gbWluZ3VzLWNsZWFyKSkKKGRlZmluZS1rZXkgbWluZ3VzLWds b2JhbC1tYXAgW21lbnUtYmFyIG1pbmd1cyBjcm9wXQogICcobWVudS1pdGVtICJDcm9wIFBsYXls aXN0IiAgbWluZ3VzLWNyb3AgOmhlbHAgIkRlbGV0ZSBhbGwgYnV0IHRoZSBwbGF5aW5nIHNvbmci KSkKCihkZWZpbmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51LWJhciBtaW5ndXMgdm9sLXVw XQogICcoIlZvbCB1cCIgLiBtaW5ndXMtdm9sLXVwKSkKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2Jh bC1tYXAgW21lbnUtYmFyIG1pbmd1cyB2b2wtZG93bl0KICAnKCJWb2wgZG93biIgLiBtaW5ndXMt dm9sLWRvd24pKQoKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgW21lbnUtYmFyIG1pbmd1 cyBzZWVrXQogICcoIlNlZWsgRm9yd2FyZCIgICAgICAgICAgLiBtaW5ndXMtc2VlaykpCihkZWZp bmUta2V5IG1pbmd1cy1nbG9iYWwtbWFwIFttZW51LWJhciBtaW5ndXMgc2Vlay1iYWNrXQogICco IlNlZWsgQmFja3dhcmQiICAgICAgICAgIC4gbWluZ3VzLXNlZWstYmFja3dhcmQpKQoKKGRlZmlu ZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgW21lbnUtYmFyIG1pbmd1cyBuZXh0XQogICcoIk5leHQi ICAgICAgICAgIC4gbWluZ3VzLW5leHQpKQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCBb bWVudS1iYXIgbWluZ3VzIHByZXZpb3VzXQogICcoIlByZXZpb3VzIiAgICAgIC4gbWluZ3VzLXBy ZXYpKQooZGVmaW5lLWtleSBtaW5ndXMtZ2xvYmFsLW1hcCBbbWVudS1iYXIgbWluZ3VzIHN0b3Bd CiAgJygiU3RvcCIgICAgICAgICAgLiBtaW5ndXMtc3RvcCkpCihkZWZpbmUta2V5IG1pbmd1cy1n bG9iYWwtbWFwIFttZW51LWJhciBtaW5ndXMgcGxheV0KICAnKCJQbGF5IiAgICAgICAgICAuIG1p bmd1cy1wbGF5KSkKKGRlZmluZS1rZXkgbWluZ3VzLWdsb2JhbC1tYXAgW21lbnUtYmFyIG1pbmd1 cyB0b2dnbGVdCiAgJygiVG9nZ2xlIHBsYXkvcGF1c2UiICAuIG1pbmd1cy10b2dnbGUpKQoKKGRl ZmNvbnN0IG1pbmd1cy1oZWxwLW1hcCAoY29weS1rZXltYXAgbWluZ3VzLWdsb2JhbC1tYXApCiAg IkhlbHAga2V5bWFwIGZvciBgbWluZ3VzJyIpCihkZWZpbmUta2V5IG1pbmd1cy1oZWxwLW1hcCAi ICIgJ3Njcm9sbC11cCkKKGRlZmluZS1rZXkgbWluZ3VzLWhlbHAtbWFwIFttZW51LWJhciBtaW5n dXMgc2VwLXBsYXlsaXN0LWVkaXRpbmddCiAgJyhtZW51LWl0ZW0gIi0tIikpCihkZWZpbmUta2V5 IG1pbmd1cy1oZWxwLW1hcCBbbWVudS1iYXIgbWluZ3VzIHVuc2V0XQogICcoIlVuc2V0IEluc2Vy dGlvbiBQb2ludCIgLiBtaW5ndXMtdW5zZXQtaW5zZXJ0aW9uLXBvaW50KSkKKGRlZmluZS1rZXkg bWluZ3VzLWhlbHAtbWFwIFttZW51LWJhciBtaW5ndXMgc2VwM10KICAnKG1lbnUtaXRlbSAiLS0i KSkKKGRlZmluZS1rZXkgbWluZ3VzLWhlbHAtbWFwIFttZW51LWJhciBtaW5ndXMgYnJvd3Nlcl0K ICAnKG1lbnUtaXRlbSAiQnJvd3NlciIgbWluZ3VzLWJyb3dzZSA6aGVscCAiZ28gdG8gYnJvd3Nl ciIpKQooZGVmaW5lLWtleSBtaW5ndXMtaGVscC1tYXAgW21lbnUtYmFyIG1pbmd1cyBwbGF5bGlz dF0KICAnKG1lbnUtaXRlbSAiUGxheWxpc3QiIG1pbmd1cyA6aGVscCAiZ28gdG8gcGxheWxpc3Qi KSkKCgooZGVmY29uc3QgbWluZ3VzLXBsYXlsaXN0LW1hcCAoY29weS1rZXltYXAgbWluZ3VzLWds b2JhbC1tYXApCiAgIlBsYXlsaXN0IGtleW1hcCBmb3IgYG1pbmd1cyciKQoKOztkZWxldGlvbiBr ZXlzCihtYXBjYXIgKGxhbWJkYSAoa2V5KQoJICAoZGVmaW5lLWtleSBtaW5ndXMtcGxheWxpc3Qt bWFwIGtleSAobGFtYmRhICgpIChpbnRlcmFjdGl2ZSkKCQkJCQkJKGlmIChtaW5ndXMtbWFyay1h Y3RpdmUpCgkJCQkJCSAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICdtaW5ndXMtZGVsLXJlZ2lvbikK CQkJCQkJICAobWluZ3VzLWRlbC1tYXJrZWQpKSkpKSAnKCJEIiAiXEMtdyIpKQoKKG1hcGNhciAo bGFtYmRhIChrZXkpIChkZWZpbmUta2V5IG1pbmd1cy1wbGF5bGlzdC1tYXAga2V5CgkJCScobGFt YmRhICgpIChpbnRlcmFjdGl2ZSkKCQkJICAgKGlmIChtaW5ndXMtbWFyay1hY3RpdmUpCgkJCSAg ICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICdtaW5ndXMtZGVsLXJlZ2lvbikKCQkJICAgICAobWlu Z3VzLWRlbCkpKSkpCgknKCJkIiAiXEMtZCIpKQooZGVmaW5lLWtleSBtaW5ndXMtcGxheWxpc3Qt bWFwICJPIiAnbWluZ3VzLWRlbC1vdGhlci1zb25nKQo7O21vdmVtZW50IGtleXMKKGRlZmluZS1r ZXkgbWluZ3VzLXBsYXlsaXN0LW1hcCAiTSIgJ21pbmd1cy1tb3ZlLWFsbCkKKGRlZmluZS1rZXkg bWluZ3VzLXBsYXlsaXN0LW1hcCAiXEMtayIgJ21pbmd1cy1tb3ZlLXVwKQooZGVmaW5lLWtleSBt aW5ndXMtcGxheWxpc3QtbWFwICJcQy1qIiAnbWluZ3VzLW1vdmUtZG93bikKOzttYXJraW5nIGtl eXMKKGRlZmluZS1rZXkgbWluZ3VzLXBsYXlsaXN0LW1hcCAiVSIgJ21pbmd1cy11bm1hcmstYWxs KQoobWFwY2FyIChsYW1iZGEgKGtleSkKCSAgKGRlZmluZS1rZXkgbWluZ3VzLXBsYXlsaXN0LW1h cCBrZXkgKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpCgkJCQkJCShpZiAobWluZ3VzLW1hcmstYWN0 aXZlKQoJCQkJCQkgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAnbWluZ3VzLW1hcmstcmVnaW9uKQoJ CQkJCQkgIChtaW5ndXMtbWFyaykpKSkpCgknKCJtIiAiICIpKQooZGVmaW5lLWtleSBtaW5ndXMt cGxheWxpc3QtbWFwICJpIiAnbWluZ3VzLXNldC1pbnNlcnRpb24tcG9pbnQpCihkZWZpbmUta2V5 IG1pbmd1cy1wbGF5bGlzdC1tYXAgInQiICdtaW5ndXMtdG9nZ2xlLW1hcmtlZCkKKGRlZmluZS1r ZXkgbWluZ3VzLXBsYXlsaXN0LW1hcCAiISIgKGxhbWJkYSAoKQoJCQkJICAgICAgKGludGVyYWN0 aXZlKQoJCQkJICAgICAgKGlmIChvciBtaW5ndXMtbWFya2VkLWxpc3QpCgkJCQkJICAocHJvZ24K CQkJCQkgICAgKGxldCAoKGNvbW1hbmQgKHJlYWQta2V5LXNlcXVlbmNlICIhIG9uIG1hcmtlZCBz b25ncyAoRDogZGVsZXRpb24gTTogTW92ZSBoZXJlIE86IGRlbGV0ZSB0aGUgbm9uLW1hcmtlZCBz b25ncykiICkpKQoJCQkJCSAgICAgIChjb25kICgoc3RyaW5nLW1hdGNoICJkXFx8RCIgY29tbWFu ZCkKCQkJCQkJICAgICAobWluZ3VzLWRlbC1tYXJrZWQpKQoJCQkJCQkgICAgKChzdHJpbmctbWF0 Y2ggIm1cXHxNIiBjb21tYW5kKQoJCQkJCQkgICAgIChtaW5ndXMtbW92ZS1hbGwpKQoJCQkJCQkg ICAgKChzdHJpbmctbWF0Y2ggIm9cXHxPIiBjb21tYW5kKQoJCQkJCQkgICAgIChtaW5ndXMtZGVs LW90aGVyLXNvbmdzKSkKCQkJCQkJICAgICh0IG5pbCkpKSkKCQkJCQkobWVzc2FnZSAiTm8gbWFy a2VkIHNvbmdzIikpKSkKOzsgbWlzY2VsbGFuZW91cyBrZXlzCihkZWZpbmUta2V5IG1pbmd1cy1w bGF5bGlzdC1tYXAgIlxyIiAnbWluZ3VzLXBsYXkpCihkZWZpbmUta2V5IG1pbmd1cy1wbGF5bGlz dC1tYXAgIlxDLWwiICdtaW5ndXMtZ290by1jdXJyZW50LXNvbmcpCjs7IG1lbnUga2V5cwooZGVm aW5lLWtleSBtaW5ndXMtcGxheWxpc3QtbWFwIFttZW51LWJhciBtaW5ndXMgc2VwLXBsYXlsaXN0 LWVkaXRpbmddCiAgJygiLS0tIiAuIHNlcGFyYWRvcikpCihkZWZpbmUta2V5IG1pbmd1cy1wbGF5 bGlzdC1tYXAgW21lbnUtYmFyIG1pbmd1cyBwbGF5bGlzdC1lZGl0aW5nXQogIChjb25zICJQbGF5 bGlzdCBFZGl0aW5nIiAobWFrZS1zcGFyc2Uta2V5bWFwICJtaW5ndXMgcGxheWxpc3QgZWRpdGlu ZyIpKSkKKGRlZmluZS1rZXkgbWluZ3VzLXBsYXlsaXN0LW1hcCBbbWVudS1iYXIgbWluZ3VzIHBs YXlsaXN0LWVkaXRpbmcgbWluZ3VzLXRvZ2dsZS1tYXJrZWRdCiAgJygiVG9nZ2xlIE1hcmtlZCBT b25ncyIgICAgICAgICAgLiBtaW5ndXMtdG9nZ2xlLW1hcmtlZCkpCihkZWZpbmUta2V5IG1pbmd1 cy1wbGF5bGlzdC1tYXAgW21lbnUtYmFyIG1pbmd1cyBwbGF5bGlzdC1lZGl0aW5nIG1pbmd1cy11 bm1hcmstYWxsXQogICcoIlVubWFyayBBbGwgU29uZ3MiICAgICAgICAgIC4gbWluZ3VzLXVubWFy ay1hbGwpKQooZGVmaW5lLWtleSBtaW5ndXMtcGxheWxpc3QtbWFwIFttZW51LWJhciBtaW5ndXMg cGxheWxpc3QtZWRpdGluZyBkZWwtb3RoZXJdCiAgJygiRGVsZXRlIFVubWFya2VkIFNvbmdzIiAg ICAgICAgICAuIG1pbmd1cy1kZWwtb3RoZXItc29uZ3MpKQooZGVmaW5lLWtleSBtaW5ndXMtcGxh eWxpc3QtbWFwIFttZW51LWJhciBtaW5ndXMgcGxheWxpc3QtZWRpdGluZyBkZWwtbWFya2VkXQog ICcoIkRlbGV0ZSBNYXJrZWQgU29uZ3Mgb3IgU29uZyBhdCBQb2ludCIgICAgICAgICAgLiBtaW5n dXMtZGVsLW1hcmtlZCkpCihkZWZpbmUta2V5IG1pbmd1cy1wbGF5bGlzdC1tYXAgW21lbnUtYmFy IG1pbmd1cyBwbGF5bGlzdC1lZGl0aW5nIG1vdmVdCiAgJygiTW92ZSBNYXJrZWQgU29uZ3MiICAg ICAgICAgIC4gbWluZ3VzLW1vdmUtYWxsKSkKKGRlZmluZS1rZXkgbWluZ3VzLXBsYXlsaXN0LW1h cCBbbWVudS1iYXIgbWluZ3VzIHBsYXlsaXN0LWVkaXRpbmcgbWFya10KICAnKCJNYXJrIFJlZ2lv biBvciAodW4pTWFyayBMaW5lIiAgICAgICAgICAuIChsYW1iZGEgKCkgKGludGVyYWN0aXZlKSAo aWYgKG1pbmd1cy1tYXJrLWFjdGl2ZSkKCQkJCQkJCQkJICAgKGNhbGwtaW50ZXJhY3RpdmVseSAn bWluZ3VzLW1hcmstcmVnaW9uKQoJCQkJCQkJCQkgKG1pbmd1cy1tYXJrKSkpKSkKKGRlZmluZS1r ZXkgbWluZ3VzLXBsYXlsaXN0LW1hcCBbbWVudS1iYXIgbWluZ3VzIHBsYXlsaXN0LWVkaXRpbmcg dW5zLWlucy1wb2ludF0KICAnKCJVbnNldCBQb2ludCBvZiBJbnNlcnRpb24iICAgICAgICAgIC4g bWluZ3VzLXVuc2V0LWluc2VydGlvbi1wb2ludCkpCihkZWZpbmUta2V5IG1pbmd1cy1wbGF5bGlz dC1tYXAgW21lbnUtYmFyIG1pbmd1cyBwbGF5bGlzdC1lZGl0aW5nIGlucy1wb2ludF0KICAnKCJT ZXQgUG9pbnQgb2YgSW5zZXJ0aW9uIiAgICAgICAgICAuIG1pbmd1cy1zZXQtaW5zZXJ0aW9uLXBv aW50KSkKKGRlZmluZS1rZXkgbWluZ3VzLXBsYXlsaXN0LW1hcCBbbWVudS1iYXIgbWluZ3VzIHBs YXlsaXN0LWVkaXRpbmcgZGVsLXJlZ2lvbl0KICAnKCJEZWxldGUgUmVnaW9uIiAuIG1pbmd1cy1k ZWwtcmVnaW9uKSkKKGRlZmluZS1rZXkgbWluZ3VzLXBsYXlsaXN0LW1hcCBbbWVudS1iYXIgbWlu Z3VzIHNlcDNdCiAgJyhtZW51LWl0ZW0gIi0tIikpCihkZWZpbmUta2V5IG1pbmd1cy1wbGF5bGlz dC1tYXAgW21lbnUtYmFyIG1pbmd1cyBoZWxwXQogICcobWVudS1pdGVtICJIZWxwIiBtaW5ndXMt aGVscCA6aGVscCAiZ28gdG8gaGVscCIpKQooZGVmaW5lLWtleSBtaW5ndXMtcGxheWxpc3QtbWFw IFttZW51LWJhciBtaW5ndXMgYnJvd3Nlcl0KICAnKG1lbnUtaXRlbSAiQnJvd3NlciIgbWluZ3Vz LWJyb3dzZSA6aGVscCAiZ28gdG8gYnJvd3NlciIpKQo7OyBtb3VzZSBrZXlzCihkZWZpbmUta2V5 IG1pbmd1cy1wbGF5bGlzdC1tYXAgKGlmIChmZWF0dXJlcCAneGVtYWNzKSBbYnV0dG9uMl0gW21v dXNlLTJdKQogIChsYW1iZGEgKGV2KSAoaW50ZXJhY3RpdmUgImUiKSAoaWYgKG1pbmd1cy1tYXJr LWFjdGl2ZSkKCQkJCSAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAocXVvdGUgbWluZ3VzLW1hcmst cmVnaW9uKSkKCQkJCSAgIChtb3VzZS1zZXQtcG9pbnQgZXYpCgkJCQkgICAobWluZ3VzLW1hcmsp KSkpCihkZWZpbmUta2V5IG1pbmd1cy1wbGF5bGlzdC1tYXAgKGlmIChmZWF0dXJlcCAneGVtYWNz KSBbYnV0dG9uM10gW21vdXNlLTNdKSAnbWluZ3VzLXBsYXkpCgkJCQkJOyAgICAgICAgICAgICAg IChkZWZpbmUta2V5IG1pbmd1cy1wbGF5bGlzdC1tYXAgKGlmIChmZWF0dXJlcCAneGVtYWNzKSBb YnV0dG9uMV0gW21vdXNlLTFdKSAnbWluZ3VzLXBsYXkpCgooZGVmY29uc3QgbWluZ3VzLWJyb3dz ZS1tYXAgICAgIChjb3B5LWtleW1hcCBtaW5ndXMtZ2xvYmFsLW1hcCkKICAiQnJvd3NlIGtleW1h cCBmb3IgYG1pbmd1cyciKQoKKGRlZmluZS1rZXkgbWluZ3VzLWJyb3dzZS1tYXAgIlxyIiAnbWlu Z3VzLWRvd24tZGlyLW9yLXBsYXktc29uZykKKGRlZmluZS1rZXkgbWluZ3VzLWJyb3dzZS1tYXAg KGlmIChmZWF0dXJlcCAneGVtYWNzKSBbYnV0dG9uMV0gW21vdXNlLTFdKSAnbWluZ3VzLWRvd24t YXQtbW91c2UpCihkZWZpbmUta2V5IG1pbmd1cy1icm93c2UtbWFwIChpZiAoZmVhdHVyZXAgJ3hl bWFjcykgW2J1dHRvbjJdIFttb3VzZS0yXSkgJ21pbmd1cy1pbnNlcnQtYXQtbW91c2UpCihkZWZp bmUta2V5IG1pbmd1cy1icm93c2UtbWFwIChpZiAoZmVhdHVyZXAgJ3hlbWFjcykgW2J1dHRvbjNd IFttb3VzZS0zXSkgJ21pbmd1cy1kaXItdXApCihtYXBjYXIgKGxhbWJkYSAoa2V5KSAoZGVmaW5l LWtleSBtaW5ndXMtYnJvd3NlLW1hcCBrZXkgJ21pbmd1cy1kaXItdXApKQoJJygiOiIgIl4iKSkK KGRlZmluZS1rZXkgbWluZ3VzLWJyb3dzZS1tYXAgW21lbnUtYmFyIG1pbmd1cyBzZXAtcGxheWxp c3QtZWRpdGluZ10KICAnKCItLS0iIC4gc2VwYXJhZG9yKSkKKGRlZmluZS1rZXkgbWluZ3VzLWJy b3dzZS1tYXAgW21lbnUtYmFyIG1pbmd1cyB1bnNldF0KICAnKCJVbnNldCBJbnNlcnRpb24gUG9p bnQiIC4gbWluZ3VzLXVuc2V0LWluc2VydGlvbi1wb2ludCkpCihkZWZpbmUta2V5IG1pbmd1cy1i cm93c2UtbWFwIFttZW51LWJhciBtaW5ndXMgc2VwM10KICAnKG1lbnUtaXRlbSAiLS0iKSkKKGRl ZmluZS1rZXkgbWluZ3VzLWJyb3dzZS1tYXAgW21lbnUtYmFyIG1pbmd1cyBoZWxwXQogICcobWVu dS1pdGVtICJIZWxwIiBtaW5ndXMtaGVscCA6aGVscCAiZ28gdG8gaGVscCIpKQooZGVmaW5lLWtl eSBtaW5ndXMtYnJvd3NlLW1hcCBbbWVudS1iYXIgbWluZ3VzIHBsYXlsaXN0XQogICcobWVudS1p dGVtICJQbGF5bGlzdCIgbWluZ3VzIDpoZWxwICJnbyB0byBwbGF5bGlzdCIpKQooZGVmaW5lLWtl eSBtaW5ndXMtYnJvd3NlLW1hcCAiICIgJ21pbmd1cy1pbnNlcnQpCgoKKGRlZnVuIG1pbmd1cy1s aW5lLW51bWJlci1hdC1wb3MgKCZvcHRpb25hbCBwb3MpCiAgIlJldHVybiAobmFycm93ZWQpIGJ1 ZmZlciBsaW5lIG51bWJlciBhdCBwb3NpdGlvbiBQT1MuCklmIFBPUyBpcyBuaWwsIHVzZSBjdXJy ZW50IGJ1ZmZlciBsb2NhdGlvbi4KVGhpcyBpcyBhbiBleGFjdCBjb3B5IG9mIGxpbmUtbnVtYmVy LWF0LXBvcyBmb3IgdXNlIGluIGVtYWNzMjEuIgogIChsZXQgKChvcG9pbnQgKG9yIHBvcyAocG9p bnQpKSkgc3RhcnQpCiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKGdvdG8tY2hhciAocG9pbnQt bWluKSkKICAgICAgKHNldHEgc3RhcnQgKHBvaW50KSkKICAgICAgKGdvdG8tY2hhciBvcG9pbnQp CiAgICAgIChmb3J3YXJkLWxpbmUgMCkKICAgICAgKDErIChjb3VudC1saW5lcyBzdGFydCAocG9p bnQpKSkpKSkKCihkZWZ1biBtaW5ndXMtbWFyay1vcGVyYXRpb24gKCkKICAoaW50ZXJhY3RpdmUp CiAgKGlmIChvciBtaW5ndXMtbWFya2VkLWxpc3QpCiAgICAgIChwcm9nbgoJKGxldCAoKGNvbW1h bmQgKHJlYWQta2V5LXNlcXVlbmNlICIhIG9uIG1hcmtlZCBzb25ncyAoRDogZGVsZXRpb24gTTog TW92ZSBoZXJlKSIgKSkpCgkgIChjb25kICgoc3RyaW5nLW1hdGNoICJkXFx8RCIgY29tbWFuZCkK CQkgKG1pbmd1cy1kZWwtbWFya2VkKSkKCQkoKHN0cmluZy1tYXRjaCAibVxcfE0iIGNvbW1hbmQp CgkJIChtaW5ndXMtbW92ZS1hbGwpKQoJCSh0IG5pbCkpKSkKICAgIChtZXNzYWdlICJObyBtYXJr ZWQgc29uZ3MiKSkpCgo7Ozs7IHt7bW91c2UgZnVuY3Rpb25zfX0KKGRlZnVuIG1pbmd1cy1pbnNl cnQtYXQtbW91c2UgKGV2KQogICJJbnNlcnQgc29uZyBvciBkaXIgYXQgbW91c2UuIgogIChpbnRl cmFjdGl2ZSAiZSIpCiAgKG1vdXNlLXNldC1wb2ludCBldikKICAobWluZ3VzLWluc2VydCkpCgoo ZGVmdW4gbWluZ3VzLWRvd24tYXQtbW91c2UgKGV2KQogICJJbnNlcnQgc29uZyBvciBkaXIgYXQg bW91c2UuIgogIChpbnRlcmFjdGl2ZSAiZSIpCiAgKG1vdXNlLXNldC1wb2ludCBldikKICAobWlu Z3VzLWRvd24tZGlyLW9yLXBsYXktc29uZykpCgooZGVmdW4gbWluZ3VzLXNob3ctdmVyc2lvbiAo KQogIChpbnRlcmFjdGl2ZSkKICAobWVzc2FnZSAiVmVyc2lvbiBvZiBtaW5ndXM6ICVzIiBtaW5n dXMtdmVyc2lvbikpCgooZGVmdW4gbWluZ3VzLWhlbHAgKCkKICAiSGVscCBzY3JlZW4gZm9yIGBt aW5ndXMnLiIKICAoaW50ZXJhY3RpdmUpCiAgKHN3aXRjaC10by1idWZmZXIgIipNaW5ndXMgSGVs cCoiKQogIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2ZvbnQtbG9jay1kZWZhdWx0cykgJyht aW5ndXMtaGVscC1mb250LWxvY2sta2V5d29yZHMpKQogIChmb250LWxvY2stbW9kZSB0KQogIChz ZXRxIG1vZGUtbmFtZSAiTWluZ3VzLWhlbHAiKQogICh3aGVuIChzdHJpbmc9IChidWZmZXItc3Ry aW5nKSAiIikKICAgICh1c2UtbG9jYWwtbWFwIG1pbmd1cy1oZWxwLW1hcCkKICAgIChpbnNlcnQg bWluZ3VzLWhlbHAtdGV4dCkKICAgIChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgdCkpCiAgKGdvdG8t Y2hhciAocG9pbnQtbWluKSkpCgo7Oztzb21lIGdlbmVyaWMgZnVuY3Rpb25zOgooZGVmdW4gbWlu Z3VzLW1pbi1hbmQtc2VjLXRvLXNlYyAoJm9wdGlvbmFsIHRpbWUpCiAgIkNvbnZlcnQgbWludXRl cyBhbmQgc2Vjb25kcyB0byBzZWNvbmRzLCBpbiBmb3JtYXQgbWluOnNlYyAoYSBzdHJpbmcpIC5c bklmIHRpbWUgbm90IHByb3ZpZGVkLCByZWFkIGZyb20gbWluaWJ1ZmZlci4gSWYgaW5jb3JyZWN0 IHN0cmluZywgcmV0dXJuIG5pbC4iCiAgKGxldCogKCh0aW1lIChvciB0aW1lIChyZWFkLWZyb20t bWluaWJ1ZmZlciAiTWludXRlczpzZWNvbmRzOiAiKSkpCiAgICAgICAgIChtaW5zIChwcm9nbiAo aWYgKHN0cmluZy1tYXRjaCAiWzAtOV06KyIgdGltZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAoc3RyaW5nLXRvLW51bWJlciAoc3Vic3RyaW5nIChtYXRjaC1zdHJpbmcgMCB0aW1lKSAwIC0x KSkpKSkKICAgICAgICAgKHNlY3MgKHByb2duIChpZiAoc3RyaW5nLW1hdGNoICI6WzAtOV0rIiB0 aW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctdG8tbnVtYmVyIChzdWJzdHJp bmcgKG1hdGNoLXN0cmluZyAwIHRpbWUpIDEpKSkpKSkKICAgIChpZiAoYW5kIChudWxsIHNlY3Mp IChudWxsIG1pbnMpKQogICAgICAgIG5pbAogICAgICAoKyAob3Igc2VjcyAwKSAoKiA2MCAob3Ig bWlucyAwKSkpKSkpCgo7OyB0aGFua3MgdG8gcGl5by13M20tLXJlYWQtcXVlcnktc21hcnQgYW5k IG9mZmJ5MSwgYnV0IHRoaXMgb25lIHNhdmVzIHRoZSBmb3JtZXIgc3RhdGUgb2YgdGhlIG1pbmli dWZmZXIga2V5bWFwCihkZWZ1biBjb21wbGV0aW5nLXJlYWQtYWxsb3ctc3BhY2VzIChwcm9tcHQg dGFibGUgJm9wdGlvbmFsIHByZWRpY2F0ZSByZXF1aXJlLW1hdGNoIGluaXRpYWwtaW5wdXQgaGlz dCBkZWYgaW5oZXJpdC1pbnB1dC1tZXRob2QpCiAgIlVzZSBgY29tcGxldGluZy1yZWFkJy4gQnV0 IGFsbG93IHNwYWNlIGlucHV0IGFuZCBsZXQgY2FzZSBiZSBvZiBubyBpbXBvcnRhbmNlLiIKICAo bGV0KiAoKGNvbXBsZXRpb24taWdub3JlLWNhc2UgdCkKCSAoZm9ybWVyLWZ1bmN0aW9uIChjZHIg KGFzc29jIDMyIG1pbmlidWZmZXItbG9jYWwtY29tcGxldGlvbi1tYXApKSkpIDtzYXZlIGZvcm1l ciBmdW5jdGlvbiBvZiBzcGFjZSBjaGFyYWN0ZXIKICAgIChzZXRjZHIgKGFzc29jIDMyIG1pbmli dWZmZXItbG9jYWwtY29tcGxldGlvbi1tYXApICdzZWxmLWluc2VydC1jb21tYW5kKSA7IGNoYW5n ZSBzcGFjZSBjaGFyYWN0ZXIgdG8gc2ltcGx5IGluc2VydCBhIHNwYWNlCiAgICAodW53aW5kLXBy b3RlY3QKCShjb21wbGV0aW5nLXJlYWQgcHJvbXB0IHRhYmxlIHByZWRpY2F0ZSByZXF1aXJlLW1h dGNoIGluaXRpYWwtaW5wdXQgaGlzdCBkZWYgaW5oZXJpdC1pbnB1dC1tZXRob2QpCiAgICAgIChz ZXRjZHIgKGFzc29jIDMyIG1pbmlidWZmZXItbG9jYWwtY29tcGxldGlvbi1tYXApIGZvcm1lci1m dW5jdGlvbikpKSkgO2NoYW5nZSBiYWNrIHRoZSBzcGFjZSBjaGFyYWN0ZXIgdG8gaXRzIGZvcm1l ciB2YWx1ZQoKKGRlZnVuIG1pbmd1cy1kZWxldGUtbGluZSAoKQogICJEZWxldGUgbGluZSBhdCBw b2ludC4iCiAgKGRlbGV0ZS1yZWdpb24gKHBvaW50LWF0LWJvbCAxKSAocG9pbnQtYXQtYm9sIDIp KQogICh3aGVuIChlb2JwKQogICAgKGRlbGV0ZS1yZWdpb24gKHBvaW50LWF0LWJvbCkgKHBvaW50 LWF0LWVvbCAwKSkKICAgIChiZWdpbm5pbmctb2YtbGluZSkpKQoKKGRlZnVuIG1pbmd1cy1zdHJp cC1sYXN0LWxpbmUgKCkKICAobGV0IChwb3MgKHBvaW50KSkKICAgIChnb3RvLWNoYXIgKHBvaW50 LW1heCkpCiAgICAoZGVsZXRlLXJlZ2lvbiAocG9pbnQtYXQtYm9sKSAocG9pbnQtYXQtZW9sIDAp KQogICAgKGdvdG8tY2hhciBwb3MpKSkKCihkZWZ1biBtaW5ndXMtc3dpdGNoLXRvLXBsYXlsaXN0 ICgpCiAgKHN3aXRjaC10by1idWZmZXIgIipNaW5ndXMqIikKICAobWluZ3VzLXBsYXlsaXN0LW1v ZGUpKQoKKGRlZnVuIG1pbmd1cy1zd2l0Y2gtdG8tYnJvd3NlciAoKQogIChzd2l0Y2gtdG8tYnVm ZmVyICIqTWluZ3VzIEJyb3dzZXIqIikKICAobWluZ3VzLWJyb3dzZS1tb2RlKSkKCihkZWZ1biBt aW5ndXMtZ2l0LW91dCAoJm9wdGlvbmFsIHgpCiAgIkJ1cnkgYWxsIE1pbmd1cyBidWZmZXJzLiIK ICAoaW50ZXJhY3RpdmUpCiAgKHdoaWxlIChtZW1iZXIgKGJ1ZmZlci1uYW1lKSAnKCIqTWluZ3Vz IEhlbHAqIiAiKk1pbmd1cyoiICIqTWluZ3VzIEJyb3dzZXIqIiAiKk1pbmd1cyBCdXJucyoiKSkg O2Z1dHVyZSBzdHVmZgogICAgKGJ1cnktYnVmZmVyKSkpCgooZGVmdW4gbWluZ3VzLXBsYXlsaXN0 LW1vZGUgKCkKICAiTWluZ3VzIHBsYXlsaXN0IG1vZGU7CnNlZSBmdW5jdGlvbiBgbWluZ3VzLWhl bHAnIGZvciBpbnN0cnVjdGlvbnMuIgogIChmb250LWxvY2stbW9kZSB0KQogICh1c2UtbG9jYWwt bWFwIG1pbmd1cy1wbGF5bGlzdC1tYXApCiAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAnZm9u dC1sb2NrLWRlZmF1bHRzKSAnKG1pbmd1cy1mb250LWxvY2sta2V5d29yZHMpKQoJCQkJCTsgICh1 bmxlc3MgKGJvdW5kcCAnKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRpb24qKSAoc2V0IChtYWtlLWxv Y2FsLXZhcmlhYmxlICcqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiopIG5pbCkpCgkJCQkJOyBm aXhtZSBjaGVjayBpZiB0aGlzIGlzIG9rCiAgKHNldHEgbWFqb3ItbW9kZSAnbWluZ3VzLXBsYXls aXN0LW1vZGUpCiAgKHNldHEgbW9kZS1uYW1lICJNaW5ndXMtcGxheWxpc3QiKQogIChmb250LWxv Y2stbW9kZSB0KQkJCQkJCQkJO3dpcAogIChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgdCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDt3aXAKICAocnVu LWhvb2tzICdtaW5ndXMtcGxheWxpc3QtaG9vaykpCgooZGVmdW4gbWluZ3VzLWJyb3dzZS1tb2Rl ICgpCiAgIk1pbmd1cyBtYWpvciBtb2RlIgogIChsZXQgKChyZXMgbWluZ3VzLWxhc3QtcXVlcnkt cmVzdWx0cykpCiAgICAoa2lsbC1hbGwtbG9jYWwtdmFyaWFibGVzKQogICAgKHVzZS1sb2NhbC1t YXAgbWluZ3VzLWJyb3dzZS1tYXApCiAgICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdmb250 LWxvY2stZGVmYXVsdHMpICcobWluZ3VzLWJyb3dzZS1mb250LWxvY2sta2V5d29yZHMpKQogICAg KHNldHEgbWFqb3ItbW9kZSAnbWluZ3VzLWJyb3dzZS1tb2RlKQogICAgKHNldHEgbW9kZS1uYW1l ICJNaW5ndXMtYnJvd3NlIikKICAgIChydW4taG9va3MgJ21pbmd1cy1icm93c2UtaG9vaykKICAg IChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJyptaW5ndXMtcG9zaXRpb25zKikgbmlsKQogICAg KHNldHEgYnVmZmVyLXJlYWQtb25seSB0KQogICAgKHNldHEgbWluZ3VzLWxhc3QtcXVlcnktcmVz dWx0cyByZXMpKSkKCihkZWZ2YXIgbWluZ3VzLWhlYWRlci1oZWlnaHQgMCkKKGRlZnZhciBtaW5n dXMtbWFya2VkLWxpc3QgbmlsKQooZGVmdmFyIG1pbmd1cy13YWtlLXVwLWNhbGwgbmlsKQooZGVm dmFyIG1pbmd1cy1tb2RlbGluZS10aW1lciBuaWwpCihkZWZ2YXIgbWluZ3VzLXN0YXR1cyBuaWwp CgooZGVmdmFyIG1pbmd1cy1tb2RlLWxpbmUtb2JqZWN0CiAgJyg6cHJvcGVydGl6ZQogICAgKHQg bWluZ3VzLXN0YXR1cykKICAgIGhlbHAtZWNobyAoY29uY2F0IChjYXIgKHNwbGl0LXN0cmluZyAo c2hlbGwtY29tbWFuZC10by1zdHJpbmcgIm1wYyAtLWZvcm1hdCBcIltbWyVhcnRpc3QlIC0gWyVh bGJ1bSUgLSBdXSV0aXRsZSVdfFslZmlsZSVdXSAtICV0aW1lJVwiIikgIlxuIikpCgkJICAgICAg KGlmICptaW5ndXMtcG9pbnQtb2YtaW5zZXJ0aW9uKiAKCQkJICAoY29uY2F0ICJcblBPSTogIiAo Y2FkYXIgKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRpb24qKSkpCgkJICAgICAgIlxuIG1vdXNlLTE6 IG1lbnUgb3Igc3dpdGNoIHRvIG1pbmd1cztcbiBtb3VzZS0zOiB0b2dnbGUgcGxheWluZztcbiBt b3VzZS00OiB2b2wtdXA7XG4gbW91c2UtNTogdm9sLWRvd24iKQogICAgbW91c2UtZmFjZSBtb2Rl LWxpbmUtaGlnaGxpZ2h0IGxvY2FsLW1hcAogICAgKGtleW1hcAogICAgIChtb2RlLWxpbmUga2V5 bWFwCgkJKG1vdXNlLTQgLiBtaW5ndXMtdm9sLXVwKSA7CgkJKG1vdXNlLTUgLiBtaW5ndXMtdm9s LWRvd24pIDsKCQkoZG93bi1tb3VzZS0zIC4gbWluZ3VzLXRvZ2dsZSkKCQkoZG93bi1tb3VzZS0x IC4gKGxhbWJkYSAoKQoJCQkJICAoaW50ZXJhY3RpdmUpCgkJCQkgIChpZiAobWVtYmVyIChidWZm ZXItbmFtZSkgJygiKk1pbmd1cyBCcm93c2VyKiIgIipNaW5ndXMgSGVscCoiICIqTWluZ3VzKiIg IipNaW5ndXMgQnVybnMqIikpCgkJCQkgICAgICAobW91c2UtbWFqb3ItbW9kZS1tZW51IHQpCgkJ CQkgICAgKG1pbmd1cykpKSkpKSkpCgoKKGRlZnVuIG1pbmd1cyAoKQogICJNUEQgSW50ZXJmYWNl IGJ5IE5pZWxzIEdpZXNlbiwgVXNlZnVsIGFuZCBTaW1wbGUsIG9yIGFjdHVhbGx5IGp1c3QgbmFt ZWQgYWZ0ZXIgdGhhdCBncmVhdCBiYXNzIHBsYXllciIKICAoaW50ZXJhY3RpdmUpCiAgKG1pbmd1 cy1zd2l0Y2gtdG8tcGxheWxpc3QpCiAgKGNvbmQgKChib3VuZHAgJ21vZGUtbGluZS1tb2RlcykK CSAoYWRkLXRvLWxpc3QgJ21vZGUtbGluZS1tb2RlcyBtaW5ndXMtbW9kZS1saW5lLW9iamVjdCkp CgkoKGJvdW5kcCAnZ2xvYmFsLW1vZGUtc3RyaW5nKQoJIChhZGQtdG8tbGlzdCAnZ2xvYmFsLW1v ZGUtc3RyaW5nIG1pbmd1cy1tb2RlLWxpbmUtb2JqZWN0KSkpCiAgKHVubGVzcyAodGltZXJwIG1p bmd1cy1tb2RlbGluZS10aW1lcikKICAgIChzZXRxIG1pbmd1cy1tb2RlbGluZS10aW1lciAKCSAg KHJ1bi13aXRoLXRpbWVyIDEgMSAobGFtYmRhICgpIAoJCQkJKGlmIChvciBtaW5ndXMtbW9kZS1h bHdheXMtbW9kZWxpbmUKCQkJCQkobWVtYmVyIChidWZmZXItbmFtZSkgJygiKk1pbmd1cyBCcm93 c2VyKiIgIipNaW5ndXMgSGVscCoiICIqTWluZ3VzKiIgIipNaW5ndXMgQnVybnMqIikpKQoJCQkJ ICAgIChzZXRxIG1pbmd1cy1zdGF0dXMgKG1pbmd1cy1tYWtlLXNpbXBsZS1pbmZvLXN0cmluZykp CgkJCQkgIChzZXRxIG1pbmd1cy1zdGF0dXMgbmlsKSkpKSkpCiAgKGxldCAoKGJ1ZmZlci1yZWFk LW9ubHkgbmlsKSkKICAgIChtaW5ndXMtcGxheWxpc3QpCiAgICAobWluZ3VzLWdvdG8tY3VycmVu dC1zb25nKSkpCgoKKGRlZm1hY3JvIG1pbmd1cy1tYWtlLXNoZWxsLWZuIChuYW1lIGNvbW1hbmQg Jm9wdGlvbmFsIGRvY3N0cmluZyAmcmVzdCBib2R5KQogIChmdW5jYWxsCiAgIChsYW1iZGEgKCkK ICAgICBgKGRlZnVuICxuYW1lICgpCiAgICAgICAgLGRvY3N0cmluZwogICAgICAgIChpbnRlcmFj dGl2ZSkKICAgICAgICAobGV0ICgoYnVmZmVyLXJlYWQtb25seSBuaWwpKQogICAgICAgICAgKHN0 YXJ0LXByb2Nlc3Mtc2hlbGwtY29tbWFuZCAibXBjIiBuaWwgKGNvbmNhdCAibXBjICIgLGNvbW1h bmQpKQogICAgICAgICAgLEBib2R5KSkpKSkKCgooZGVmbWFjcm8gbWluZ3VzLW1ha2UtZm4gKG5h bWUgY29tbWFuZCAmb3B0aW9uYWwgZG9jc3RyaW5nICZyZXN0IGJvZHkpCiAgKGZ1bmNhbGwKICAg KGxhbWJkYSAoKQogICAgIGAoZGVmdW4gLG5hbWUgKCkKICAgICAgICAsZG9jc3RyaW5nCiAgICAg ICAgKGludGVyYWN0aXZlKQogICAgICAgIChsZXQgKChidWZmZXItcmVhZC1vbmx5IG5pbCkpCiAg ICAgICAgICAoc3RhcnQtcHJvY2VzcyAibXBjIiBuaWwgIm1wYyIgLGNvbW1hbmQpKQogICAgICAg ICAgLEBib2R5KSkpKQoKCihkZWZ1biBtaW5ndXMtc3RhcnQtZGFlbW9uICgpCiAgIlN0YXJ0IG1w ZCBkYWVtb24gZm9yIGBtaW5ndXMnLiIKICAoaW50ZXJhY3RpdmUpCiAgKHNoZWxsLWNvbW1hbmQg Im1wZCIpKQoKKGRlZnVuIG1pbmd1cy1zaG93LXRoZS1zdGF0dXMgKHJlZ2V4cCkKICAiR2V0IGEg c3RhdHVzIGZyb20gbXBjIG91dHB1dCwgd2hlcmUgc3RhdHVzIGlzIHRoZSBmaXJzdCBtYXRjaCBm b3IgUkVHRVhQIGluIHRoaXMgb3V0cHV0OyIKICAobGV0ICgob3V0cHV0IChzaGVsbC1jb21tYW5k LXRvLXN0cmluZyAibXBjIikpKQogICAgKGlmIChzdHJpbmctbWF0Y2ggcmVnZXhwIG91dHB1dCkK CShtZXNzYWdlICJNaW5ndXM6ICVzIiAobWF0Y2gtc3RyaW5nIDEgb3V0cHV0KSkpKSkKCihtaW5n dXMtbWFrZS1mbiBtaW5ndXMtc2h1ZmZsZSAic2h1ZmZsZSIgIlNodWZmbGUgbXBkIHBsYXlsaXN0 LiIgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbiAobWluZ3VzKSkpCihtaW5ndXMtbWFrZS1mbiBtaW5n dXMtdXBkYXRlICJ1cGRhdGUiICJVcGRhdGUgbXBkIGRhdGFiYXNlLiIgKG1pbmd1cy1zaG93LXRo ZS1zdGF0dXMgIlxcKFVwZGF0aW5nIERCXFwpIikpCihtaW5ndXMtbWFrZS1mbiBtaW5ndXMtcmVw ZWF0ICJyZXBlYXQiICJUb2dnbGUgbXBkIHJlcGVhdCBtb2RlLiIgKG1pbmd1cy1zaG93LXRoZS1z dGF0dXMgIlxcKHJlcGVhdDogb1tuZl0rXFwpIikpCihtaW5ndXMtbWFrZS1mbiBtaW5ndXMtcmFu ZG9tICJyYW5kb20iICJUb2dnbGUgbXBkIHJhbmRvbSBtb2RlLiIgKG1pbmd1cy1zaG93LXRoZS1z dGF0dXMgIlxcKHJhbmRvbTogb1tuZl0rXFwpIikpCihtaW5ndXMtbWFrZS1mbiBtaW5ndXMtdG9n Z2xlICJ0b2dnbGUiICJUb2dnbGUgbXBkIHBhdXNlL3BsYXkgbW9kZS4iIChtaW5ndXMtc2hvdy10 aGUtc3RhdHVzICJcXFtcXChwbGF5aW5nXFx8cGF1c2VkXFwpXFxdIikpCihtaW5ndXMtbWFrZS1m biBtaW5ndXMtcGF1c2UgInBhdXNlIiAiUGF1c2UgbXBkLiIpCihtaW5ndXMtbWFrZS1mbiBtaW5n dXMtcHJldiAicHJldiIgIlBsYXkgcHJldmlvdXMgc29uZyBpbiBtcGQgcGxheWxpc3QuIikKKG1p bmd1cy1tYWtlLWZuIG1pbmd1cy1uZXh0ICJuZXh0IiAiUGxheSBuZXh0IHNvbmcgaW4gbXBkIHBs YXlsaXN0LiIpCgooZGVmdW4gbWluZ3VzLWluZm8gKCkKICAiU2hvdyBtcGQgaW5mby4iCiAgKGlu dGVyYWN0aXZlKQogIChvcgogICAoYW5kIChmYm91bmRwICd3aGlsZS1uby1pbnB1dCkJCiAgICAg ICAgKHdoaWxlLW5vLWlucHV0CiAgICAgICAgICAoZG90aW1lcyAoY250IG1vc3QtcG9zaXRpdmUt Zml4bnVtKSA7bm8gcmVjdXJzaW9uIGhlcmUgYW55bW9yZSwgc28gbm8gYnVzeSBjdXJzb3IgYW55 bW9yZSwgbm9yIHZpb2xhdGlvbiBvZiBtYXgtbGlzcC1ldmFsLWRlcHRoIQogICAgICAgICAgICAo c2l0LWZvciAxKQoJICAgIChzaGVsbC1jb21tYW5kICJtcGMiKSkpKQogICAoc2hlbGwtY29tbWFu ZCAibXBjIikpKQoKKGRlZnVuIG1pbmd1cy1tYWtlLXNpbXBsZS1pbmZvLXN0cmluZyAoKQogICJN YWtlIGEgc2ltcGxlIGluZm9ybWF0aXZlIHN0cmluZyBhYm91dCBjdXJyZW50IG1wZCBzdGF0dXMu CldlbGwsIHNpbXBsZSwgdGhhdCB3YXMgbXkgaW50ZW50aW9uIHdoZW4gSSBzdGFydGVkIGl0LiIK ICAobGV0KiAoKG91dHB1dCAoc3BsaXQtc3RyaW5nIChzaGVsbC1jb21tYW5kLXRvLXN0cmluZyAK CQkJCShmb3JtYXQgIm1wYyAtLWZvcm1hdCBcIiVzXCIiIG1pbmd1cy1tb2RlLWxpbmUtc3RyaW5n KSkKCQkJICAgICAgICJcbiIpKQoJIChjYXJvdXRwdXQgKGNhciBvdXRwdXQpKQoJIChzdGF0dXMg KGNhZGRyIG91dHB1dCkpKQogICAgKGNvbmQgKChzdHJpbmctbWF0Y2ggIl52b2x1bWU6ICIgY2Fy b3V0cHV0KQoJICAgIiBbU242dUl3XSAiICkJCTttaW5ndXMgbGlndCBvcCB6J24gZ2F0CgkgICgo c3RyaW5nLW1hdGNoICJeTVBEX0hPU1QgYW5kL29yIiBjYXJvdXRwdXQpCgkgICAiIFt1bmFibGUg dG8gY29ubmVjdCB0byBtcGRdICIpCgkgICh0IAoJICAgKHNldHEgY2Fyb3V0cHV0IChwcm9nbiAo c3RyaW5nLW1hdGNoICJcXChbXi9dKlxcKVxcLlteLl0qJCIgY2Fyb3V0cHV0KSA7Z2V0IHJpZCBv ZiBwYXJlbnQgZGlycwoJCQkJICAob3IgKG1hdGNoLXN0cmluZyAxIGNhcm91dHB1dCkgY2Fyb3V0 cHV0KSkpCgkgICAoc3RyaW5nLW1hdGNoICJcXCggWzAtOV0rOlswLTldK1xcKVxcKCAoWzAtOV0r JSlcXCkiIChjYWRyIG91dHB1dCkpIAoJICAgOzsgMSA9IGVsYXBzZWQgdGltZQoJICAgOzsgMiA9 IHBlcmNlbnRhZ2UgCgkgICAoYXBwbHkgJ2NvbmNhdCAobGlzdCAiIFsiIAoJCQkJKGlmICg+IChs ZW5ndGggY2Fyb3V0cHV0KSBtaW5ndXMtbW9kZS1saW5lLXN0cmluZy1tYXgpIDsgY2hvbXAgdGhl IGxvdAoJCQkJICAgIChjb25jYXQgIChzdWJzdHJpbmcgY2Fyb3V0cHV0IDAgKC0gbWluZ3VzLW1v ZGUtbGluZS1zdHJpbmctbWF4IDMpKSAiLi4uIikKCQkJCSAgY2Fyb3V0cHV0KQoJCQkJKGlmIG1p bmd1cy1tb2RlLWxpbmUtc2hvdy1lbGFwc2VkLXRpbWUKCQkJCSAgICAobWF0Y2gtc3RyaW5nIDEg KGNhZHIgb3V0cHV0KSkpCgkJCQkoaWYgbWluZ3VzLW1vZGUtbGluZS1zaG93LWVsYXBzZWQtcGVy Y2VudGFnZQoJCQkJICAgIChtYXRjaC1zdHJpbmcgMiAoY2FkciBvdXRwdXQpKSkKCQkJCShwcm9n MSAKCQkJCSAgICBuaWwKCQkJCSAgKHN0cmluZy1tYXRjaCAiXlZvbHVtZTogP1xcKFswLTldKyVc XCkiIChjYWRkciBvdXRwdXQpKSkKCQkJCShpZiBtaW5ndXMtbW9kZS1saW5lLXNob3ctc3RhdHVz IAoJCQkJICAgIChjb25jYXQgIiA8IgoJCQkJCSAgICAoaWYgbWluZ3VzLW1vZGUtbGluZS1zaG93 LXZvbHVtZQoJCQkJCQkobWF0Y2gtc3RyaW5nIDEgKGNhZGRyIG91dHB1dCkpKQoJCQkJCSAgICAo aWYgbWluZ3VzLW1vZGUtbGluZS1zaG93LXJhbmRvbS1hbmQtcmVwZWF0LXN0YXR1cwoJCQkJCQko Y29uY2F0CgkJCQkJCSAoaWYgKHN0cmluZy1tYXRjaCAiUmVwZWF0OiBvbiIgKGNhZGRyIG91dHB1 dCkpICJyIikKCQkJCQkJIChpZiAoc3RyaW5nLW1hdGNoICJSYW5kb206IG9uIiAoY2FkZHIgb3V0 cHV0KSkgInoiKSkpCgkJCQkJICAgIChpZiAqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiogImki KQoJCQkJCSAgICAiPiIpKQoJCQkJIl0gIikpKSkpKQoKCihtaW5ndXMtbWFrZS1mbiBtaW5ndXMt c3RvcCAic3RvcCIgIlRlbGwgbXBkIHRvIHN0b3AgcGxheWluZy4iKQoobWluZ3VzLW1ha2Utc2hl bGwtZm4gbWluZ3VzLXZvbC11cCAidm9sdW1lICsxIiAiVGVsbCBtcGQgdG8gaW5jcmVhc2Ugdm9s dW1lLiIgCgkJICAgICAgKHNldHEgbWluZ3VzLXN0YXR1cyAobWluZ3VzLW1ha2Utc2ltcGxlLWlu Zm8tc3RyaW5nKSkKCQkgICAgICAobWluZ3VzLXNob3ctdGhlLXN0YXR1cyAiXFwodm9sdW1lOiBb MC05XSslXFwpIikpCihtaW5ndXMtbWFrZS1zaGVsbC1mbiBtaW5ndXMtdm9sLWRvd24gInZvbHVt ZSAtMSIgIlRlbGwgbXBkIHRvIGRlY3JlYXNlIHZvbHVtZS4iIAoJCSAgICAgIChzZXRxIG1pbmd1 cy1zdGF0dXMgKG1pbmd1cy1tYWtlLXNpbXBsZS1pbmZvLXN0cmluZykpCgkJICAgICAgKG1pbmd1 cy1zaG93LXRoZS1zdGF0dXMgIlxcKHZvbHVtZTogWzAtOV0rJVxcKSIpKQoKKGRlZm1hY3JvIG1p bmd1cy1hZHZpY2UgKGZ1bmMtbmFtZSBidWZmZXItbmFtZSAmb3B0aW9uYWwgZG9jc3RyaW5nKQoJ CQkJCTtmaXhtZTogc2hvdWxkIG1ha2UgdGhpcyBkZXBlbmRlbnQgb24gYSBrZXl3b3JkCiAgKGZ1 bmNhbGwKICAgKGxhbWJkYSAoKQogICAgIGAoZGVmYWR2aWNlICxmdW5jLW5hbWUgKGFyb3VuZCBt aW5ndXMtYXJvdW5kLWFkdmljZSBhY3RpdmF0ZSkKICAgICAgICAsZG9jc3RyaW5nCiAgICAgICAg KGlmIChzdHJpbmc9ICxidWZmZXItbmFtZSAoYnVmZmVyLW5hbWUpKQogICAgICAgICAgICBhZC1k by1pdAogICAgICAgICAgKG1lc3NhZ2UgLChmb3JtYXQgIk5vdCBpbiAlcyBidWZmZXIiIGJ1ZmZl ci1uYW1lKSkpKSkpKQoKKGRlZnVuIG1pbmd1cy1pbnNlcnRpb24tcG9pbnQtc2V0LXAgKCkKICAo c2F2ZS13aW5kb3ctZXhjdXJzaW9uCiAgICAobWluZ3VzLXN3aXRjaC10by1wbGF5bGlzdCkKICAg IChpZiAoYm91bmRwICcqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiopKGNhYXIgKm1pbmd1cy1w b2ludC1vZi1pbnNlcnRpb24qKSkpKQoKKGRlZnVuIG1pbmd1cy1nZXQtaW5zZXJ0aW9uLW51bWJl ciAoJm9wdGlvbmFsIHN0cmluZ2lmeSkKICAoc2F2ZS13aW5kb3ctZXhjdXJzaW9uCiAgICAobWlu Z3VzLXN3aXRjaC10by1wbGF5bGlzdCkKICAgIChpZiAqbWluZ3VzLXBvaW50LW9mLWluc2VydGlv bioKCShpZiBzdHJpbmdpZnkgKG51bWJlci10by1zdHJpbmcgKGNhYXIgKm1pbmd1cy1wb2ludC1v Zi1pbnNlcnRpb24qKSkKCSAgKGNhYXIgKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRpb24qKSkKICAg ICAgKGlmIHN0cmluZ2lmeSAobnVtYmVyLXRvLXN0cmluZyAobWluZ3VzLXBsYXlsaXN0LWxlbmd0 aCkpCgkobWluZ3VzLXBsYXlsaXN0LWxlbmd0aCkpKSkpCgoobWluZ3VzLWFkdmljZSBtaW5ndXMt dG9nZ2xlLW1hcmtlZCAiKk1pbmd1cyoiKQoobWluZ3VzLWFkdmljZSBtaW5ndXMtZ290by1jdXJy ZW50LXNvbmcgIipNaW5ndXMqIikKKG1pbmd1cy1hZHZpY2UgbWluZ3VzLWRlbC1yZWdpb24gIipN aW5ndXMqIikKKG1pbmd1cy1hZHZpY2UgbWluZ3VzLW1hcmstcmVnaW9uICIqTWluZ3VzKiIpCiht aW5ndXMtYWR2aWNlIG1pbmd1cy1tb3ZlLWRvd24gIipNaW5ndXMqIikKKG1pbmd1cy1hZHZpY2Ug bWluZ3VzLXNldC1pbnNlcnRpb24tcG9pbnQgIipNaW5ndXMqIikKKG1pbmd1cy1hZHZpY2UgbWlu Z3VzLW1vdmUtdXAgIipNaW5ndXMqIikKKG1pbmd1cy1hZHZpY2UgbWluZ3VzLW1hcmsgIipNaW5n dXMqIikKKG1pbmd1cy1hZHZpY2UgbWluZ3VzLWRvd24tZGlyLW9yLXBsYXktc29uZyAiKk1pbmd1 cyBCcm93c2VyKiIpCgoobWFwY2FyICdhZC1hY3RpdmF0ZSAnKG1pbmd1cy1nb3RvLWN1cnJlbnQt c29uZwogICAgICAgICAgICAgICAgICAgICAgIG1pbmd1cy1kZWwtcmVnaW9uCiAgICAgICAgICAg ICAgICAgICAgICAgbWluZ3VzLWRvd24tZGlyLW9yLXBsYXktc29uZwogICAgICAgICAgICAgICAg ICAgICAgIG1pbmd1cy1tb3ZlLWRvd24KICAgICAgICAgICAgICAgICAgICAgICBtaW5ndXMtbW92 ZS11cAogICAgICAgICAgICAgICAgICAgICAgIG1pbmd1cy1zZXQtaW5zZXJ0aW9uLXBvaW50KSkK CgoKKGRlZm1hY3JvIG1pbmd1cy1pbnNlcnRpb24tYWR2aWNlIChmdW5jLW5hbWUpCiAgIlJlc3Rv cmUgYG1pbmd1cy1tYXJrZWQtbGlzdCcsIGFuZCBtb3ZlIGluc2VydGVkIHNvbmdzIHRvICptaW5n dXMtcG9pbnQtb2YtaW5zZXJ0aW9uKiBhZnRlciBpbnNlcnRpb24uIgogIGAoZGVmYWR2aWNlICxm dW5jLW5hbWUgKGFyb3VuZCBtaW5ndXMtaW5zZXJ0aW9uLWFkdmljZSBhY3RpdmF0ZSkKICAgICAo bGV0ICgoZW5kLW9mLXBsYXlsaXN0ICgxKyAobWluZ3VzLXBsYXlsaXN0LWxlbmd0aCkpKQoJICAg KGluc2VydGlvbi1wb2ludCAoaWYgKG1pbmd1cy1pbnNlcnRpb24tcG9pbnQtc2V0LXApCgkJCQko bWluZ3VzLWdldC1pbnNlcnRpb24tbnVtYmVyKSkpKQogICAgICAgKHdoZW4gIGFkLWRvLWl0Cgkg KHNhdmUtd2luZG93LWV4Y3Vyc2lvbgoJICAgKG1pbmd1cy1zd2l0Y2gtdG8tcGxheWxpc3QpCgkg ICAobGV0KiAoKGhvd21hbnlzb25ncyAoLSAoMSsgKG1pbmd1cy1wbGF5bGlzdC1sZW5ndGgpKSBl bmQtb2YtcGxheWxpc3QpKQoJCSAgKHNvbmcgKGlmICg8IDEgaG93bWFueXNvbmdzKSAic29uZ3Mi ICJzb25nIikpCgkJICAobnVtYmVyLW9mLXNvbmdzICgxKyAoLSAobWluZ3VzLXBsYXlsaXN0LWxl bmd0aCkgZW5kLW9mLXBsYXlsaXN0KSkpKQoJICAgICA7O2JhY2sgb3V0IHdoZW4gbm90aGluZyBp cyBpbnNlcnRlZDoKCSAgICAgKHVubGVzcyAoPSAobWluZ3VzLXBsYXlsaXN0LWxlbmd0aCkgKDEt IGVuZC1vZi1wbGF5bGlzdCkpCgkgICAgICAgKG1lc3NhZ2UgIlByb2Nlc3NpbmcgcmVxdWVzdC4u LiIpCgkgICAgICAgKGlmIGluc2VydGlvbi1wb2ludAoJCSAgIChwcm9nbgoJCSAgICAgOzttb3Zl IGFsbCBqdXN0IGluc2VydGVkIHNvbmdzIHRvIHRoZWlyIGRlc3RpbmF0aW9uOgoJCSAgICAgKG1p bmd1cy1tb3ZlCgkJICAgICAgKGRvKiAoKG51bSBlbmQtb2YtcGxheWxpc3QgKDErIG51bSkpCgkJ CSAgICAocmVzdWx0IChsaXN0IG51bSkgKHB1c2ggbnVtIHJlc3VsdCkpKQoJCQkgICgoPSAoY2Fy IHJlc3VsdCkgKG1pbmd1cy1wbGF5bGlzdC1sZW5ndGgpKSByZXN1bHQpKQoJCSAgICAgICgxKyBp bnNlcnRpb24tcG9pbnQpIHQpCgkJICAgICA7O2xldCdzIGhhbmRsZSBtaW5ndXMtbWFya2VkLWxp c3QgZ3JhY2VmdWxseToKCQkgICAgIChzZXRxIG1pbmd1cy1tYXJrZWQtbGlzdAoJCQkgICAobWFw Y2FyIChsYW1iZGEgKGxpc3QpIChpZiAoPiBsaXN0IGluc2VydGlvbi1wb2ludCkKCQkJCQkJICAg ICAgKGluY2YgbGlzdCBudW1iZXItb2Ytc29uZ3MpIGxpc3QpKSBtaW5ndXMtbWFya2VkLWxpc3Qp KQoJCSAgICAgOzsgc29tZSBpbmZvcm1hdGl2ZSBtZXNzYWdlOgoJCSAgICAgKG1lc3NhZ2UgIiVk ICVzIGFkZGVkIGF0ICVzIiBob3dtYW55c29uZ3Mgc29uZyAoY2FkYXIgKm1pbmd1cy1wb2ludC1v Zi1pbnNlcnRpb24qKSkpCgkJIChtZXNzYWdlICIlZCAlcyBhZGRlZCBhdCBlbmQgb2YgcGxheWxp c3QuIiBob3dtYW55c29uZ3Mgc29uZykpIChtaW5ndXMpKSkpKSkpKQoKKG1pbmd1cy1pbnNlcnRp b24tYWR2aWNlIG1pbmd1cy1hZGQtc3RyZWFtKQoobWluZ3VzLWluc2VydGlvbi1hZHZpY2UgbWlu Z3VzLWFkZC1wb2RjYXN0KQoobWluZ3VzLWluc2VydGlvbi1hZHZpY2UgbWluZ3VzLWluc2VydCkK CihkZWZtYWNybyBtaW5ndXMtYW5kLXBsYXkgKGZ1bmMtbmFtZSBuZXctZnVuYy1uYW1lKQogICJN YWNybyBmb3IgY29uc3RydWN0aW5nIGZ1bmN0aW9ucyBmcm9tIG1pbmd1cyBpbnNlcnRpb24gY29t bWFuZHMgc28gdGhhdCB0aGUgbmV3IGZ1bmN0aW9ucyAoXCIqLWFuZC1wbGF5XCIgZnVuY3Rpb25z KQpwbGF5IHRoZSBmaXJzdCB0aGluZyB0aGV5IGhhdmUgaW5zZXJ0ZWQgYWZ0ZXIgc3VjaCBpbnNl cnRpb24uICIKICBgKGRlZnVuICxuZXctZnVuYy1uYW1lICgpCiAgICAgKGludGVyYWN0aXZlKQog ICAgIChsZXQgKChtaW5ndXMtcGxheWluZy1wb2ludCAoMSsgKG1pbmd1cy1nZXQtaW5zZXJ0aW9u LW51bWJlcikpKSkKICAgICAgICgsZnVuYy1uYW1lKQogICAgICAgKG1pbmd1cy1wbGF5IChudW1i ZXItdG8tc3RyaW5nIG1pbmd1cy1wbGF5aW5nLXBvaW50KSkpKSkKCihtaW5ndXMtYW5kLXBsYXkg bWluZ3VzLWFkZC1zdHJlYW0gbWluZ3VzLWFkZC1zdHJlYW0tYW5kLXBsYXkpCihtaW5ndXMtYW5k LXBsYXkgbWluZ3VzLWFkZC1wb2RjYXN0IG1pbmd1cy1hZGQtcG9kY2FzdC1hbmQtcGxheSkKKG1p bmd1cy1hbmQtcGxheSBtaW5ndXMtaW5zZXJ0IG1pbmd1cy1pbnNlcnQtYW5kLXBsYXkpCihtaW5n dXMtYW5kLXBsYXkgbWluZ3VzLWxvYWQtcGxheWxpc3QgbWluZ3VzLWxvYWQtcGxheWxpc3QtYW5k LXBsYXkpCihtaW5ndXMtYW5kLXBsYXkgbWluZ3VzLWxvYWQtYWxsIG1pbmd1cy1sb2FkLWFsbC1h bmQtcGxheSkKCihkZWZ1biogbWluZ3VzLXNlZWsgKGFtb3VudCAmb3B0aW9uYWwgcGVyY2VudGFn ZSBmcm9tLXN0YXJ0KQogICJTZWVrIHNvbmcgcGxheWVkIGJ5IG1wZCBpbiBzZWNvbmRzIG9yIHBl cmNlbnRhZ2UuClRha2Ugb3B0aW9uYWwgQU1PVU5UIGFyZ3VtZW50LCBzcGVjaWZ5aW5nIG1vdmVt ZW50IGZvcndhcmQgb3IgYmFja3dhcmQgbW92ZW1lbnQuCkRlZmF1bHRzIHRvIHZhcmlhYmxlIG1p bmd1cy1zZWVrLWFtb3VudC4KV2hlbiBQRVJDRU5UQUdFIGlzIHNwZWNpZmllZCwgc2VlayB0byBQ RVJDRU5UQUdFIG9mIHNvbmcuCklmIFBFUkNFTlRBR0UgaXMgc3BlY2lmaWVkIGFuZCBBTU9VTlQg aXMgbmVnYXRpdmUsIHNlZWsgUEVSQ0VOVEFHRSBiYWNrd2FyZHMuIgogIChpbnRlcmFjdGl2ZSAi cCIpCiAgKGlmIChzdHJpbmc9ICJzZWVrIGFtb3VudCIgKHN1YnN0cmluZyAoc2hlbGwtY29tbWFu ZC10by1zdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29u Y2F0ICJtcGMgc2VlayAiIChpZiAob3IgKG1pbnVzcCBhbW91bnQpIHBlcmNlbnRhZ2UgZnJvbS1z dGFydCkgIiIgIisiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG51bWJlci10by1zdHJpbmcgKGlmIChhbmQgKG51bGwgZnJvbS1zdGFydCkoPSAxIGFt b3VudCkpIG1pbmd1cy1zZWVrLWFtb3VudCBhbW91bnQpKSAoaWYgcGVyY2VudGFnZSAiJSIpKSkg MCAxMSkpCiAgICAgIChtZXNzYWdlICJTZWVrIGFtb3VudCB3b3VsZCBzZWVrIHBhc3QgdGhlIGVu ZCBvZiB0aGUgc29uZyIpCiAgICA7OyAobWluZ3VzLWluZm8pCiAgICApKQoKKGRlZnVuIG1pbmd1 cy1zZWVrLXBlcmNlbnRzIChhbW91bnQpCiAgIlNlZWsgc29uZyBwbGF5ZWQgYnkgbXBkIGluIHBl cmNlbnRhZ2UuIgogIChpbnRlcmFjdGl2ZSAicCIpCiAgKGNvbmQgKCg9IDEgYW1vdW50KQogICAg ICAgICAobWVzc2FnZSAiVXNhZ2U6IGdpdmUgcHJlZml4IGFyZ3VtZW50IHRvIHNwZWNpZnkgYWJz b2x1dGUgcGVyY2VudGFnZSBvZiBzb25nLlxuKGVnOiBDLXUgNDAgJSUgc2Vla3MgdG8gdGhlIHBv aW50IGF0IDQwJSUgb2YgY3VycmVudCBzb25nKVxuTmVnYXRpdmUgYXJndW1lbnQgc2Vla3MgYmFj a3dhcmQuXG4oZWc6IEMtdSAtMTAgJSUgdG8gc2VlayBiYWNrd2FyZCAxMCBwZXJjZW50KSIpKQog ICAgICAgICh0CiAgICAgICAgIChtaW5ndXMtc2VlayBhbW91bnQgdCkpKSkKCihkZWZ1biBtaW5n dXMtc2Vlay1mcm9tLXN0YXJ0IChhbW91bnQpCiAgIlNlZWsgdG8gUFJFRklYIHNlY29uZHMgZnJv bSBzdGFydCBvZiBjdXJyZW50IHNvbmcgcGxheWVkIGJ5IG1wZC4iCiAgKGludGVyYWN0aXZlICJw IikKICAoaWYgKD0gMSBhbW91bnQpCiAgICAgIChtZXNzYWdlICJVc2FnZTogc2VlayB0byBQUkVG SVggc2Vjb25kcyBmcm9tIHN0YXJ0IG9mIGN1cnJlbnQgc29uZy5cbihlZzogQy1VIDMwIHNlZWtz IHRvIHRoaXJ0aWV0aCBzZWNvbmQgb2Ygc29uZykiKQogICAgKG1pbmd1cy1zZWVrIGFtb3VudCBu aWwgdCkpKQoKKGRlZnVuIG1pbmd1cy1zZWVrLW1pbi1zZWMgKCkKICAiU2VlayB0byBtaW51dGU6 c2Vjb25kIHBvaW50IGluIHNvbmcuIgogIChpbnRlcmFjdGl2ZSkKICAobWluZ3VzLXNlZWstZnJv bS1zdGFydAogICAobWluZ3VzLW1pbi1hbmQtc2VjLXRvLXNlYyAocmVhZC1mcm9tLW1pbmlidWZm ZXIgIk1pbnV0ZXMgYW5kIHNlY29uZHMgKGVnIDI6MzApOiAiKSkpKQoKKGRlZnVuIG1pbmd1cy1z ZWVrLWJhY2t3YXJkIChhbW91bnQpCiAgIlNlZWsgc29uZyBwbGF5ZWQgYnkgbXBkIGluIHNlY29u ZHMgb3IgcGVyY2VudGFnZSBiYWNrd2FyZHMuIgogIChpbnRlcmFjdGl2ZSAicCIpCiAgKG1pbmd1 cy1zZWVrICgtIDAgKGlmICg9IDEgYW1vdW50KSBtaW5ndXMtc2Vlay1hbW91bnQgYW1vdW50KSkp KQoKKGRlZnVuIG1pbmd1cy1jcm9zc2ZhZGUgKHApCiAgIlNldCBjcm9zc2ZhZGUgdGltZSBmb3Ig bXBkOwpwcmVmaXggYXJndW1lbnQgb2YgMCBzZXRzIGNyb3NzZmFkZSBvZmYuIgogIChpbnRlcmFj dGl2ZSAiUCIpCiAgKHNoZWxsLWNvbW1hbmQgKGNvbmNhdCAibXBjIGNyb3NzZmFkZSAiIChpZiBw IChudW1iZXItdG8tc3RyaW5nIChpZiAobGlzdHAgcCkgKGNhciBwKSBwKSkgIiIpKSkKICAoaWYg cCAobWVzc2FnZSAiY3Jvc3NmYWRlOiAlZCIgcCkpKQoKCihkZWZtYWNybyBtaW5ndXMtbWFrZS1m bi1zaGVsbC1hZnRlciAobmFtZSBjb21tYW5kICZvcHRpb25hbCBkb2NzdHJpbmcgJnJlc3QgYm9k eSkgO3Nob3VsZCBtYWtlIHRoaXMgZGVwZW5kZW50IG9uIGEga2V5d29yZAogIChmdW5jYWxsCiAg IChsYW1iZGEgKCkKICAgICBgKGRlZnVuICxuYW1lICgpCiAgICAgICAgLGRvY3N0cmluZwogICAg ICAgIChpbnRlcmFjdGl2ZSkKICAgICAgICAobGV0ICgoYnVmZmVyLXJlYWQtb25seSBuaWwpKQog ICAgICAgICAgLEBib2R5CiAgICAgICAgICAoc2hlbGwtY29tbWFuZCAoY29uY2F0ICJtcGMgIiAs Y29tbWFuZCkpKSkpKSkKCjs7Ozsge3t4ZW1hY3MgY29tcGF0YWJpbGl0eX19Cih3aGVuIChmZWF0 dXJlcCAneGVtYWNzKQogIChkZWZ1biBtaW5ndXMtbGluZS1udW1iZXItYXQtcG9zICgpCiAgICAo bGluZS1udW1iZXIpKSkKCihpZiAoZmVhdHVyZXAgJ3hlbWFjcykKICAgIChkZWZ1biBtaW5ndXMt bWFyay1hY3RpdmUgKCkKICAgICAgKG1hcmspKQogIChkZWZ1biBtaW5ndXMtbWFyay1hY3RpdmUg KCkKICAgIG1hcmstYWN0aXZlKSkKCihkZWZ1biBtaW5ndXMtY3VyLWxpbmUgKCZvcHRpb25hbCBz dHJpbmdpZnkpCiAgIkluIE1pbmd1cywgcmV0dXJuIG51bWJlciBvZiBzb25nIHVuZGVyIHBvaW50 IgogIChpZiBzdHJpbmdpZnkKICAgICAgKG51bWJlci10by1zdHJpbmcgKG1pbmd1cy1saW5lLW51 bWJlci1hdC1wb3MpKQogICAgKG1pbmd1cy1saW5lLW51bWJlci1hdC1wb3MpKSkKCihkZWZ1biBt aW5ndXMtcGxheWxpc3QgKCkKICAiSW5zZXJ0IGN1cnJlbnQgcGxheWxpc3QgaW50byBidWZmZXIg XCIqTWluZ3VzKlwiLiIKICAoZXJhc2UtYnVmZmVyKQogIChpZiAoc3RyaW5nPSAiIiAoc2hlbGwt Y29tbWFuZC10by1zdHJpbmcgIm1wYyBwbGF5bGlzdCIpKQogICAgICAoaW5zZXJ0ICptaW5ndXMt aGVhZGVyLXdoZW4tZW1wdHkqKQogICAgKGluc2VydCAoc3Vic3RyaW5nIChzaGVsbC1jb21tYW5k LXRvLXN0cmluZyAibXBjIC0tZm9ybWF0IFwiWyVhcnRpc3QlIFstICVhbGJ1bSUgXV0mWy0gJXRp dGxlJV18WyVmaWxlJV1cIiBwbGF5bGlzdCIpIDAgLTEpKQogICAgKHdoaWxlIChyZS1zZWFyY2gt YmFja3dhcmQgIl4jWzAtOV0rKSBcXCguKy9cXHxcXCkiIG5pbCB0KSAocmVwbGFjZS1tYXRjaCAi IikpCiAgICAobWFwY2FyIChsYW1iZGEgKGxpc3QpCgkgICAgICAoZ290by1saW5lIGxpc3QpCgkg ICAgICAoaW5zZXJ0ICIqICIpKSBtaW5ndXMtbWFya2VkLWxpc3QpKSkKCihkZWZ1biBtaW5ndXMt dW5tYXJrLWFsbCAoKQogICJJbiBNaW5ndXMsIHVuc2V0IGBtaW5ndXMtbWFya2VkLWxpc3QnLiIK ICAoaW50ZXJhY3RpdmUpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAobGV0ICgoYnVmZmVyLXJlYWQt b25seSBuaWwpKQogICAgICAoc2V0cSBtaW5ndXMtbWFya2VkLWxpc3QgbmlsKQogICAgICAoZ290 by1jaGFyIChwb2ludC1taW4pKQogICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJeKiAi IChwb2ludC1tYXgpIDEpCiAgICAgICAgKHJlcGxhY2UtbWF0Y2ggIiIpKSkpCiAgKG1lc3NhZ2Ug Ik5vIHNvbmdzIG1hcmtlZCBhbnltb3JlIikpCgooZGVmdW4gbWluZ3VzLWN1ci1zb25nLW51bWJl ciAoKQogICJSZXR1cm4gbnVtYmVyIG9mIHNvbmcgY3VycmVudGx5IHBsYXllZCBieSBtcGQuClJl dHVybiBuaWwgaWYgbm8gc29uZyBwbGF5aW5nLiIKICAobGV0ICgobWVzcyAoc2hlbGwtY29tbWFu ZC10by1zdHJpbmcgIm1wYyIpKSkKICAgICh3aGVuICAgICAgIChzdHJpbmctbWF0Y2ggIl5cXFtc XChwYXVzZWRcXF0gXFx8cGxheWluZ1xcXVxcKSAjXFwoWzAtOV0rXFwpIiBtZXNzKQogICAgICAo c3RyaW5nLXRvLW51bWJlciAoc3Vic3RyaW5nIG1lc3MgKG1hdGNoLWJlZ2lubmluZyAyKShtYXRj aC1lbmQgMCkpKSkpKQoKKGRlZnVuIG1pbmd1cy1nb3RvLWN1cnJlbnQtc29uZyAoKQogICJJbiBN aW5ndXMsIG1vdmUgcG9pbnQgdG8gY3VycmVudGx5IHBsYXlpbmcgc29uZy4iCiAgKGludGVyYWN0 aXZlKQogIChnb3RvLWxpbmUgKG9yIChtaW5ndXMtY3VyLXNvbmctbnVtYmVyKSAxKSkpCgooZGVm dW4gbWluZ3VzLXBsYXlsaXN0LWxlbmd0aCAoKQogICJSZXR1cm4gbGVuZ3RoIG9mIGN1cnJlbnQg bXBkIHBsYXlsaXN0LiIKICAoaWYgKHN0cmluZz0gIiIgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5n ICJtcGMgcGxheWxpc3QiKSkKICAgICAgMAogICAgKHdpdGgtdGVtcC1idWZmZXIKICAgICAgKGlu c2VydCAoc2hlbGwtY29tbWFuZC10by1zdHJpbmcgIm1wYyBwbGF5bGlzdCIpKQogICAgICAoZ290 by1jaGFyIChwb2ludC1tYXgpKQogICAgICAoc3RyaW5nLXRvLW51bWJlciAoYnVmZmVyLXN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAoMSsgKHJlLXNlYXJj aC1iYWNrd2FyZCAiXiMiIG5pbCB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIChyZS1zZWFy Y2gtZm9yd2FyZCAiWzAtOV0rIiBuaWwgdCkpKSkpKQoKKGRlZnVuIG1pbmd1cy12b2x1bWUgKCkK ICAiUmV0dXJuIG1wZCB2b2x1bWUgYXMgc3RyaW5nLiIKICAoc2hlbGwtY29tbWFuZC10by1zdHJp bmcgIm1wYyB2b2x1bWUiKSkKCihkZWZ1biBtaW5ndXMtbW92ZS1vbmUgKGZyb20gdG8pCiAgIk1v dmUgbXBkIHBsYXlsaXN0IGlkIEZST00gdG8gbXBkIHBsYXlsaXN0IHBvc2l0aW9uIFRPLiIKICAo c2hlbGwtY29tbWFuZCAoZm9ybWF0ICJtcGMgbW92ZSAlcyAlcyIgZnJvbSB0bykpKQoKKGRlZnVu IG1pbmd1cy1tb3ZlLXVwICgpCiAgIkluIE1pbmd1cywgbW92ZSBzb25nIGF0IHBvaW50IHVwIG9u ZSBwb3NpdGlvbiwgdmlzdWFsbHkuIgogIChpbnRlcmFjdGl2ZSkKICAod2hlbiAoPCAxIChtaW5n dXMtbGluZS1udW1iZXItYXQtcG9zKSkKICAgIChsZXQgKChidWZmZXItcmVhZC1vbmx5IG5pbCkp CiAgICAgIChjb25kICgoYW5kICptaW5ndXMtcG9pbnQtb2YtaW5zZXJ0aW9uKiAoPSAobWluZ3Vz LWxpbmUtbnVtYmVyLWF0LXBvcykgKGNhYXIgKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRpb24qKSkp CiAgICAgICAgICAgICAoZGVjZiAoY2FhciAqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiopKSkK ICAgICAgICAgICAgKChhbmQgKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRpb24qICg9IChtaW5ndXMt bGluZS1udW1iZXItYXQtcG9zKSAoMSsgKGNhYXIgKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRpb24q KSkpKQogICAgICAgICAgICAgKGluY2YgKGNhYXIgKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRpb24q KSkpKQogICAgICAobWluZ3VzLW1vdmUtb25lIChtaW5ndXMtbGluZS1udW1iZXItYXQtcG9zKSAo MS0gKG1pbmd1cy1saW5lLW51bWJlci1hdC1wb3MpKSkKICAgICAgKHRyYW5zcG9zZS1saW5lcyAx KQogICAgICAoZm9yd2FyZC1saW5lIC0yKQogICAgICAobWVzc2FnZSAiTW92ZWQgMSBzb25nIHVw LiIpKSkpCgooZGVmdW4gbWluZ3VzLW1vdmUtZG93biAoKQogICJJbiBNaW5ndXMsIG1vdmUgc29u ZyBhdCBwb2ludCBkb3duIG9uZSBwb3NpdGlvbiwgdmlzdWFsbHkuIgogIChpbnRlcmFjdGl2ZSkK ICAod2hlbiAoPiAobWluZ3VzLXBsYXlsaXN0LWxlbmd0aCkgKG1pbmd1cy1saW5lLW51bWJlci1h dC1wb3MpKQogICAgKGxldCAoKGJ1ZmZlci1yZWFkLW9ubHkgbmlsKSkKICAgICAgKGNvbmQgKChh bmQgKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRpb24qICg9IChtaW5ndXMtbGluZS1udW1iZXItYXQt cG9zKSAoY2FhciAqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiopKSkKICAgICAgICAgICAgIChp bmNmIChjYWFyICptaW5ndXMtcG9pbnQtb2YtaW5zZXJ0aW9uKikpKQogICAgICAgICAgICAoKGFu ZCAqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiogKD0gKG1pbmd1cy1saW5lLW51bWJlci1hdC1w b3MpICgxLSAoY2FhciAqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiopKSkpCiAgICAgICAgICAg ICAoZGVjZiAoY2FhciAqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiopKSkpCiAgICAgIChtaW5n dXMtbW92ZS1vbmUgKG1pbmd1cy1saW5lLW51bWJlci1hdC1wb3MpKDErIChtaW5ndXMtbGluZS1u dW1iZXItYXQtcG9zKSkpCiAgICAgIChmb3J3YXJkLWxpbmUgMSkKICAgICAgKHRyYW5zcG9zZS1s aW5lcyAxKQogICAgICAoZm9yd2FyZC1saW5lIC0xKQogICAgICAobWVzc2FnZSAiTW92ZWQgMSBz b25nIGRvd24uIikpKSkKCihkZWZ1biBtaW5ndXMtbW92ZSAobGlzdCBwb3MgJm9wdGlvbmFsIGFm dGVyLWluc2VydCkKICAiSW4gTWluZ3VzLCBtb3ZlIExJU1Qgb2Ygc29uZ3MgdG8gcG9zaXRpb24g UE9TLgpQT1MgaW5jcmVtZW50cyB3aGVuIG51bWJlciBvZiBhIHNvbmcgaXMgZ3JlYXRlciwgdGhl cmVieSBwcmVzZXJ2aW5nIG9yZGVyLiIKICAobGV0KiAoKHBvaSAobWluZ3VzLWdldC1pbnNlcnRp b24tbnVtYmVyKSkgO2xvb3NlIHBvaSB0byBtYWtlIGl0IGVhc2llcj8KICAgICAgICAgKGxlc3Mt dGhhbi1wb2kgKGNvdW50LWlmIChsYW1iZGEgKGl0ZW0pICg8IGl0ZW0gcG9pKSkgbGlzdCkpCiAg ICAgICAgIChtb3JlLXRoYW4tcG9pICgtIChsZW5ndGggbGlzdCkgbGVzcy10aGFuLXBvaSkpCiAg ICAgICAgIChub3Z5IChtaW5ndXMtZ2V0LWluc2VydGlvbi1udW1iZXIpKQogICAgICAgICAocG9p LWl0c2VsZi1tb3ZlZC1wIChpZiAoYW5kICptaW5ndXMtcG9pbnQtb2YtaW5zZXJ0aW9uKiAobWVt YmVyIG5vdnkgbGlzdCkpIHQpKSkKICAgICh3aGVuIChhbmQgKm1pbmd1cy1wb2ludC1vZi1pbnNl cnRpb24qIChub3QgcG9pLWl0c2VsZi1tb3ZlZC1wKSkKICAgICAgKGNvbmQgKChhbmQgKDwgcG9p IHBvcykKICAgICAgICAgICAgICAgICAgKDwgMCBsZXNzLXRoYW4tcG9pKSkKICAgICAgICAgICAg IChzZXRxIG5vdnkgKC0gcG9pIGxlc3MtdGhhbi1wb2kpKSkKICAgICAgICAgICAgKChhbmQgKD4g cG9pIHBvcykKICAgICAgICAgICAgICAgICAgKD4gbW9yZS10aGFuLXBvaSAwKSkKICAgICAgICAg ICAgIChzZXRxIG5vdnkgKCsgcG9pIG1vcmUtdGhhbi1wb2kpKSkpKQogICAgKGxldCAoKGNvdW50 MSAwKQogICAgICAgICAgKG5ld3BvcyAoLSAobWluZ3VzLWxpbmUtbnVtYmVyLWF0LXBvcykKICAg ICAgICAgICAgICAgICAgICAgKGNvdW50LWlmIChsYW1iZGEgKGl0ZW0pICg+IChtaW5ndXMtbGlu ZS1udW1iZXItYXQtcG9zKSBpdGVtKSkgbGlzdCkpKSkKICAgICAgKGxldCAoKHRvIChsaXN0IHBv cykpCiAgICAgICAgICAgIChjb3VudCAobGlzdCBjb3VudDEpKSkKICAgICAgICAobWFwY2FyICMn KGxhbWJkYSAoZnJvbSkKICAgICAgICAgICAgICAgICAgICAoY29uZCAoKD4gZnJvbSAoY2FyIHRv KSkKCQkJICAgKHN0YXJ0LXByb2Nlc3MgIm1wYyIgbmlsICJtcGMiICJtb3ZlIiAobnVtYmVyLXRv LXN0cmluZyBmcm9tKShudW1iZXItdG8tc3RyaW5nIChjYXIgdG8pKSkKCQkJICAgOzsgICAgICAg ICAgICAgICAgICAoc2hlbGwtY29tbWFuZCAoY29uY2F0ICJtcGMgbW92ZSAiIChudW1iZXItdG8t c3RyaW5nIGZyb20pICIgIiAobnVtYmVyLXRvLXN0cmluZyAoY2FyIHRvKSkpKQoJCQkgICAoaW5j ZiAoY2FyIHRvKSkpCgkJCSAgKCg8IGZyb20gKGNhciB0bykpCgkJCSAgIChzdGFydC1wcm9jZXNz ICJtcGMiIG5pbCAibXBjIiAibW92ZSIgKG51bWJlci10by1zdHJpbmcgKC0gZnJvbSAoY2FyIGNv dW50KSkpKG51bWJlci10by1zdHJpbmcgKDEtIChjYXIgdG8pKSkpCgkJCSAgIDs7ICAgICAgICAg ICAgICAgICAgICAgICAgIChzaGVsbC1jb21tYW5kIChjb25jYXQgIm1wYyBtb3ZlICIgKG51bWJl ci10by1zdHJpbmcgKC0gZnJvbSAoY2FyIGNvdW50KSkpICIgIiAobnVtYmVyLXRvLXN0cmluZyAo MS0gKGNhciB0bykpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmNmIChjYXIgY291 bnQpKSkpKQogICAgICAgICAgICAgICAgKHNvcnQgbGlzdCAjJzwpKSkKICAgICAgOzt3aXAKICAg ICAgKHVubGVzcyBhZnRlci1pbnNlcnQKICAgICAgICAoc2V0cSBtaW5ndXMtbWFya2VkLWxpc3Qg bmlsKSkKICAgICAgOzt3aXAKICAgICAgKG1pbmd1cykKICAgICAgKGNvbmQgKHBvaS1pdHNlbGYt bW92ZWQtcAogICAgICAgICAgICAgKG1pbmd1cy11bnNldC1pbnNlcnRpb24tcG9pbnQpKQogICAg ICAgICAgICAoKC89IG5vdnkgKG1pbmd1cy1wbGF5bGlzdC1sZW5ndGgpKQogICAgICAgICAgICAg KGdvdG8tbGluZSBub3Z5KQogICAgICAgICAgICAgKG1pbmd1cy1zZXQtaW5zZXJ0aW9uLXBvaW50 KSkpCiAgICAgIChnb3RvLWxpbmUgbmV3cG9zKSkpKQo7OyB0aGVyZSBpcyBhIGJ1ZyBoZXJlLCB3 aGljaCAqc29tZXRpbWVzKiBvY2N1cnMgd2hlbiBtb3Zpbmcgc29uZ3Mgd2l0aCBhIGdyZWF0ZXIg aW5kZXggdG8gYSBsb3dlcgo7OyBwb3NpdGlvbi4gRml4IHRoaXMsIEFORCBpbiB0aGUgbWVhbiB0 aW1lLCBtYWtlIHN1cmUgdG8gbWFrZSBpdCBmYXN0ZXIuCgoKKGRlZnVuIG1pbmd1cy1tb3ZlLWFs bCAoKQogICJJbiBNaW5ndXMsIG1vdmUgYWxsIG1hcmtlZCBzb25ncyB0byBjdXJyZW50IHBvc2l0 aW9uIGluIGJ1ZmZlci4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChsZW5ndGggKGxlbmd0aCBt aW5ndXMtbWFya2VkLWxpc3QpKSkKICAgIChpZiAoPSBsZW5ndGggMCkKICAgICAgICAobWVzc2Fn ZSAiTm8gbWFya2VkIHNvbmdzIikKICAgICAgKGxldCAoKGxpbmUgKG1pbmd1cy1saW5lLW51bWJl ci1hdC1wb3MpKSkKICAgICAgICAobWluZ3VzLW1vdmUgbWluZ3VzLW1hcmtlZC1saXN0ICgxKyAo bWluZ3VzLWxpbmUtbnVtYmVyLWF0LXBvcykpKQogICAgICAgIChnb3RvLWxpbmUgbGluZSkKICAg ICAgICAobWVzc2FnZSAiTW92ZWQgJWQgc29uZyVzIiBsZW5ndGgKICAgICAgICAgICAgICAgICAo aWYgKDwgMSBsZW5ndGgpICJzIiAiIikpKSkpKQoKKGRlZnVuIG1pbmd1cy1tYXJrICgpCiAgIklu IE1pbmd1cywgbWFyayBhIHNvbmcgZm9yIG1vdmVtZW50IG9yIGRlbGV0aW9uLgpVbm1hcmsgc29u ZyB3aGVuIGFscmVhZHkgbWFya2VkLgpUbyBtYXJrIGEgcmVnaW9uLCB1c2UgbWluZ3VzLW1hcmst cmVnaW9uLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKGJ1ZmZlci1yZWFkLW9ubHkgbmlsKSkK ICAgIChpZiAoPSAocG9pbnQpIChwb2ludC1tYXgpKQogICAgICAgIChmb3J3YXJkLWxpbmUgLTEp KQogICAgKHByb2duCiAgICAgIChpZiAobm90IG1pbmd1cy1tYXJrZWQtbGlzdCkKICAgICAgICAg IChzZXRxIG1pbmd1cy1tYXJrZWQtbGlzdCBuaWwpKQogICAgICAoY29uZCAoKG5vdCAobWVtYmVy IChtaW5ndXMtY3VyLWxpbmUpIG1pbmd1cy1tYXJrZWQtbGlzdCkpCiAgICAgICAgICAgICAocHVz aCAobWluZ3VzLWN1ci1saW5lKSBtaW5ndXMtbWFya2VkLWxpc3QpCiAgICAgICAgICAgICAoYmVn aW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgICAoaW5zZXJ0ICIqICIpKQogICAgICAgICAgICAo dCAoc2V0cSBtaW5ndXMtbWFya2VkLWxpc3QgKHJlbW92ZSAobWluZ3VzLWN1ci1saW5lKSBtaW5n dXMtbWFya2VkLWxpc3QpKQogICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAg ICAgICAgICAgIChkZWxldGUtY2hhciAyKSkpCiAgICAgIChmb3J3YXJkLWxpbmUgMSkpKSkKCihk ZWZ1biBtaW5ndXMtbWFyay1yZWdpb24gKGJlZyBlbmQpCiAgIkluIE1pbmd1cywgbWFyayBhIHJl Z2lvbiBmb3IgbW92ZW1lbnQgb3IgZGVsZXRpb24uIgogIChpbnRlcmFjdGl2ZSAiciIpCiAgKGxl dCAoKGJ1ZmZlci1yZWFkLW9ubHkgbmlsKQogICAgICAgIChpbnQgMCkpCiAgICAoaWYgKD0gKHBv aW50KSAocG9pbnQtbWF4KSkKICAgICAgICAoZm9yd2FyZC1saW5lIC0xKSkKICAgIChnb3RvLWNo YXIgYmVnKQogICAgKHdoaWxlICg8IChwb2ludCkgZW5kKQogICAgICAoaWYgKG5vdCAobWVtYmVy IChtaW5ndXMtY3VyLWxpbmUpIG1pbmd1cy1tYXJrZWQtbGlzdCkpCiAgICAgICAgICAocHJvZ24K ICAgICAgICAgICAgKHB1c2ggKG1pbmd1cy1jdXItbGluZSkgbWluZ3VzLW1hcmtlZC1saXN0KQog ICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgIChpbnNlcnQgIiogIikK ICAgICAgICAgICAgKGluY2YgZW5kIDIpKSkKICAgICAgKGZvcndhcmQtbGluZSkpKSkKCihkZWZ1 biBtaW5ndXMtdG9nZ2xlLW1hcmtlZCAoKQogIChpbnRlcmFjdGl2ZSkKICAoc2V0cSBtaW5ndXMt bWFya2VkLWxpc3QgKGxldCAoKHJlc3VsdCBuaWwpKQoJCQkgICAgIChkb3RpbWVzIChpbnQgKDEr IChtaW5ndXMtcGxheWxpc3QtbGVuZ3RoKSkgOzsgKDErIChjb3VudC1saW5lcyAocG9pbnQtbWlu KSAocG9pbnQtbWF4KSkpCgkJCQkJICAgcmVzdWx0KQoJCQkgICAgICAgKHVubGVzcyAob3IgKD0g MCBpbnQpIChtZW1iZXIgaW50IG1pbmd1cy1tYXJrZWQtbGlzdCkpCgkJCQkgKHB1c2ggaW50IHJl c3VsdCkpKSkpCiAgKG1pbmd1cykpCgoobWluZ3VzLW1ha2Utc2hlbGwtZm4gbWluZ3VzLWRlbCAo Zm9ybWF0ICJkZWwgJXMiIChtaW5ndXMtY3VyLWxpbmUgdCkpICJEZWxldGUgc29uZyB1bmRlciBs aW5lLiIKICAgICAgICAgICAgICAgIChsZXQgKChidWZmZXItcmVhZC1vbmx5IG5pbCkpCiAgICAg ICAgICAgICAgICAgIChtaW5ndXMtcmVzZXQtcG9pbnQtb2YtaW5zZXJ0aW9uKQogICAgICAgICAg ICAgICAgICAobWluZ3VzLWRlbGV0ZS1saW5lKQogICAgICAgICAgICAgICAgICAobWluZ3VzLXJl bW92ZS1jdXJyZW50LWxpbmUtZnJvbS1tYXJrZWQtbGlzdCkpKQoKKGRlZnVuIG1pbmd1cy1yZXNl dC1wb2ludC1vZi1pbnNlcnRpb24gKCkKICAiUmVzZXQgdGhlIHZhcmlhYmxlIGAqbWluZ3VzLXBv aW50LW9mLWluc2VydGlvbionIGFjY29yZGluZyB0byB0aGUgc2l0dWF0aW9uIHdoZXJlIHRoZSBz b25nIGF0IHBvaW50IHdpbGwgaGF2ZSBiZWVuIGRlbGV0ZWQuIgogIChjb25kICgoYW5kICptaW5n dXMtcG9pbnQtb2YtaW5zZXJ0aW9uKiAoPSAobWluZ3VzLWdldC1pbnNlcnRpb24tbnVtYmVyKSAo bWluZ3VzLWxpbmUtbnVtYmVyLWF0LXBvcykpKQoJIChtaW5ndXMtdW5zZXQtaW5zZXJ0aW9uLXBv aW50KSkKCSgoYW5kICptaW5ndXMtcG9pbnQtb2YtaW5zZXJ0aW9uKiAoPiAobWluZ3VzLWdldC1p bnNlcnRpb24tbnVtYmVyKSAobWluZ3VzLWxpbmUtbnVtYmVyLWF0LXBvcykpKQoJIChkZWNmIChj YWFyICptaW5ndXMtcG9pbnQtb2YtaW5zZXJ0aW9uKikpKSkpCgooZGVmdW4gbWluZ3VzLXJlbW92 ZS1jdXJyZW50LWxpbmUtZnJvbS1tYXJrZWQtbGlzdCAoKQogICJSZW1vdmUgbGluZSBhdCBwb2lu dCBmcm9tIG1pbmd1cy1tYXJrZWQtbGlzdCwgYW5kIG1vdmUgb3RoZXIgbWFya3MgdG8gdGhlaXIg bmV3IHBsYWNlcy4iCiAgKHNldHEgbWluZ3VzLW1hcmtlZC1saXN0IChucmV2ZXJzZSAobWFwY2Fy IChsYW1iZGEgKGxpc3QpCgkJCQkJICAgICAoY29uZCAoKDwgKG1pbmd1cy1jdXItbGluZSkgbGlz dCkKCQkJCQkJICAgICgxLSBsaXN0KSkKCQkJCQkJICAgKHQgbGlzdCkpKShyZW1vdmUgKG1pbmd1 cy1jdXItbGluZSkgbWluZ3VzLW1hcmtlZC1saXN0KSkpKSkKCihkZWZ1biBtaW5ndXMtZGVsLXJl Z2lvbiAoYmVnIGVuZCkKICAiSW4gTWluZ3VzLCBkZWxldGUgcmVnaW9uLgpMZWF2ZSBgbWluZ3Vz LW1hcmtlZC1saXN0JyBpbnRhY3QuIgogIChpbnRlcmFjdGl2ZSAiciIpCiAgOztubyBuZWVkIGZv ciBjb25zdW1pbmcgY29tcHV0YXRpb24gYW5kIGJpbmRpbmdzIHdoZW4gd2hvbGUgYnVmZmVyIGlz IHNlbGVjdGVkCiAgKGlmIChhbmQgKD0gYmVnIChwb2ludC1taW4pKSAoPSBlbmQgKHBvaW50LW1h eCkpKQogICAgICAobWluZ3VzLWNsZWFyIHQpCiAgICAobGV0KiAoKGJ1ZmZlci1yZWFkLW9ubHkg bmlsKQogICAgICAgICAgIChiZWcgKG1pbmd1cy1saW5lLW51bWJlci1hdC1wb3MgYmVnKSkKICAg ICAgICAgICAoZW5kIChpZiAoYm9scCkgKG1pbmd1cy1saW5lLW51bWJlci1hdC1wb3MgZW5kKSAo MSsgKG1pbmd1cy1saW5lLW51bWJlci1hdC1wb3MgZW5kKSkpKQogICAgICAgICAgIChob3dtYW55 c29uZ3MgKC0gZW5kIGJlZykpCiAgICAgICAgICAgKGRlbGV0ZXN0cmluZyAibXBjIGRlbCAiKSkK ICAgICAgOzsgbWFrZSB0aGUgc2hlbGwtY29tbWFuZC1zdHJpbmcKICAgICAgKGRvdGltZXMgKGNv dW50IGhvd21hbnlzb25ncykKICAgICAgICAoc2V0cSBkZWxldGVzdHJpbmcgKGNvbmNhdCBkZWxl dGVzdHJpbmcgIiAiIChudW1iZXItdG8tc3RyaW5nICgrIGJlZyBjb3VudCkpKSkpCiAgICAgIDs7 IGRlbGV0ZSB0aGUgZmlsZXMKICAgICAgKHNoZWxsLWNvbW1hbmQgZGVsZXRlc3RyaW5nKQogICAg ICA7OyByZW1vdmUgYWxsIHNvbmdzIHRoYXQgYXJlIGRlbGV0ZWQgZnJvbSBtaW5ndXMtbWFya2Vk LWxpc3QKICAgICAgKHNldHEgbWluZ3VzLW1hcmtlZC1saXN0CiAgICAgICAgICAgIChyZW1vdmUt aWYgKGxhbWJkYSAoaXRlbSkgKGFuZCAoPD0gYmVnIGl0ZW0pICg+IGVuZCBpdGVtKSkpIG1pbmd1 cy1tYXJrZWQtbGlzdCkpCiAgICAgIDs7IHN1YnN0cmFjdCBob3dtYW55c29uZ3MgZnJvbSB0aGUg bWFya2VkIHNvbmdzIHRoYXQgaGF2ZSBiZWNvbWUgYXQgYSBsb3dlciBwbGFjZSBpbiBwbGF5bGlz dCBkdWUgdG8gZGVsZXRpb24KICAgICAgKHNldHEgbWluZ3VzLW1hcmtlZC1saXN0IChtYXBjYXIg KGxhbWJkYSAoaXRlbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aWYgKDw9IGVuZCBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoLSBpdGVtIGhvd21hbnlzb25ncykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGl0ZW0pKSBtaW5ndXMtbWFya2VkLWxpc3QpKQogICAgICA7OyByZWJ1aWxk IHRoZSBwbGF5bGlzdCBhY2NvcmRpbmcgdG8gbmV3IHNwZWNzCiAgICAgIChtaW5ndXMpCiAgICAg IDs7IHJlc2V0IGluc2VydGlvbiBwb2ludAogICAgICAoY29uZCAoKGFuZCAob3IgKm1pbmd1cy1w b2ludC1vZi1pbnNlcnRpb24qKSg8PSBlbmQgKGNhYXIgKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRp b24qKSkpCiAgICAgICAgICAgICAoZ290by1saW5lICgtIChjYWFyICptaW5ndXMtcG9pbnQtb2Yt aW5zZXJ0aW9uKikgaG93bWFueXNvbmdzKSkKICAgICAgICAgICAgIChtaW5ndXMtc2V0LWluc2Vy dGlvbi1wb2ludCkpCiAgICAgICAgICAgICgoYW5kIChvciAqbWluZ3VzLXBvaW50LW9mLWluc2Vy dGlvbiopKDw9IGJlZyAoY2FhciAqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiopKSkKICAgICAg ICAgICAgIChtaW5ndXMtdW5zZXQtaW5zZXJ0aW9uLXBvaW50KSkpCiAgICAgIDs7IGJyaW5nIHBv aW50IHRvIGJlZ2lubmluZyBvZiBmb3JtZXIgcmVnaW9uCiAgICAgIChnb3RvLWxpbmUgYmVnKSkp KQoKKGRlZnVuIG1pbmd1cy1kZWwtbWFya2VkICgpCiAgIkRlbGV0ZSBzb25ncyBtYXJrZWQgaW4g Kk1pbmd1cyogYnVmZmVyIgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgoYnVmZmVyLXJlYWQtb25s eSBuaWwpCiAgICAgICAgKGN1ci1saW5lIChtaW5ndXMtbGluZS1udW1iZXItYXQtcG9zKSkpCiAg ICAoaWYgbWluZ3VzLW1hcmtlZC1saXN0CiAgICAgICAgKHdoZW4gICAoeWVzLW9yLW5vLXAgKGZv cm1hdCAiUmVtb3ZlICVkIG1hcmtlZCBzb25ncz8gIiAobGVuZ3RoIG1pbmd1cy1tYXJrZWQtbGlz dCkpKQogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChzaGVsbC1jb21tYW5kIChsZXQgKChk ZWxldGUtc3RyaW5nICJtcGMgZGVsIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1h cGNhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChsaXN0KQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGRlbGV0ZS1zdHJpbmcgKGNvbmNhdCBkZWxl dGUtc3RyaW5nICIgIiAobnVtYmVyLXRvLXN0cmluZyBsaXN0KSkpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtaW5ndXMtbWFya2VkLWxpc3QpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGVsZXRlLXN0cmluZykpCiAgICAgICAgICAgIChkZWxldGUtbWF0Y2hpbmctbGluZXMg Il4qICIgKHBvaW50LW1pbikgKHBvaW50LW1heCkpCiAgICAgICAgICAgIChjb25kICgoYW5kICpt aW5ndXMtcG9pbnQtb2YtaW5zZXJ0aW9uKiAobWVtYmVyIChtaW5ndXMtZ2V0LWluc2VydGlvbi1u dW1iZXIpIG1pbmd1cy1tYXJrZWQtbGlzdCkpCgkJICAgKG1pbmd1cy11bnNldC1pbnNlcnRpb24t cG9pbnQpKQoJCSAgKCptaW5ndXMtcG9pbnQtb2YtaW5zZXJ0aW9uKgoJCSAgIChnb3RvLWxpbmUK CQkgICAgKC0gKG1pbmd1cy1nZXQtaW5zZXJ0aW9uLW51bWJlcikgKGNvdW50LWlmIChsYW1iZGEg KGl0ZW0pICg8IGl0ZW0gKG1pbmd1cy1nZXQtaW5zZXJ0aW9uLW51bWJlcikpKSBtaW5ndXMtbWFy a2VkLWxpc3QpKSkKCQkgICAobWluZ3VzLXNldC1pbnNlcnRpb24tcG9pbnQpKSkKICAgICAgICAg ICAgKGdvdG8tbGluZSAoLSBjdXItbGluZSAoY291bnQtaWYgKGxhbWJkYSAoaXRlbSkgKD4gY3Vy LWxpbmUgaXRlbSkpIG1pbmd1cy1tYXJrZWQtbGlzdCkpKQogICAgICAgICAgICAoc2V0cSBtaW5n dXMtbWFya2VkLWxpc3QgbmlsKSkpCiAgICAgIChwcm9nbgoJKHNoZWxsLWNvbW1hbmQgKGNvbmNh dCAibXBjIGRlbCAiIChtaW5ndXMtY3VyLWxpbmUgdCkpKQoJKG1pbmd1cy1kZWxldGUtbGluZSkg ICAgICAgICAgICA7dGhpcyB3aWxsIGhhdmUgYW4gZWZmZWN0IG9uCgkJCQkJO21pbmd1cy1tb3Zl OiBlaXRoZXIgbWFrZSBhY3Rpb25zCgkJCQkJO211dHVhbGx5IGV4Y2x1c2l2ZSwgb3IgdGFrZQoJ CQkJCTt0aGVzZSBlZmZlY3RzIGludG8gYWNjb3VudAoJKHNldHEgbWluZ3VzLW1hcmtlZC1saXN0 IChucmV2ZXJzZSAobWFwY2FyIChsYW1iZGEgKGxpc3QpCgkJCQkJCSAgICAgKGNvbmQgKCg8ICht aW5ndXMtbGluZS1udW1iZXItYXQtcG9zKSBsaXN0KQoJCQkJCQkJICAgICgxLSBsaXN0KSkKCQkJ CQkJCSAgICh0IGxpc3QpKSkocmVtb3ZlIChtaW5ndXMtbGluZS1udW1iZXItYXQtcG9zKSBtaW5n dXMtbWFya2VkLWxpc3QpKSkpKSkpCiAgKHdoZW4gKGVvYnApCiAgICAoZGVsZXRlLXJlZ2lvbiAo cG9pbnQtYXQtYm9sKSAocG9pbnQtYXQtZW9sIDApKQogICAgKGJlZ2lubmluZy1vZi1saW5lKSkp CgoKCihkZWZ1biBtaW5ndXMtZGVsLW90aGVyLXNvbmdzICgpCiAgIkluIHRoZSAqTWluZ3VzKiBi dWZmZXIsIGRlbGV0ZSBhbGwgc29uZ3MgYnV0IHRoZSBvbmVzIGluIGBtaW5ndXMtbWFya2VkLWxp c3QnIHBsYXlsaXN0LiIKICAoaW50ZXJhY3RpdmUpCiAgKGlmIG1pbmd1cy1tYXJrZWQtbGlzdAog ICAgICAobGV0ICgoZGVsZXRlLXN0cmluZyAibXBjIGRlbCIpCiAgICAgICAgICAgIDs7IGNhbGN1 bGF0ZSBuZXcgcG9zaXRpb24gZm9yIHBvaW50CiAgICAgICAgICAgIChuZXdwb3MgKGxlbmd0aCAo bWVtYmVyIChtaW5ndXMtbGluZS1udW1iZXItYXQtcG9zKSAoc2V0cSBtaW5ndXMtbWFya2VkLWxp c3QgKHNvcnQgbWluZ3VzLW1hcmtlZC1saXN0ICMnPikpKSkpCiAgICAgICAgICAgIDs7IGNhbGN1 bGF0ZSBuZXcgcG9zaXRpb24gb2YgaW5zZXJ0aW9uIHBvaW50CiAgICAgICAgICAgIChwb3Nmcm9t IChsZW5ndGggKG1lbWJlciAoY2FhciAqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiopIG1pbmd1 cy1tYXJrZWQtbGlzdCkpKSkKICAgICAgICAobWFwY2FyCiAgICAgICAgIChsYW1iZGEgKGxpc3Qp CiAgICAgICAgICAgKHNldHEgZGVsZXRlLXN0cmluZwogICAgICAgICAgICAgICAgIChjb25jYXQg ZGVsZXRlLXN0cmluZyAiICIgKG51bWJlci10by1zdHJpbmcgbGlzdCkpKQogICAgICAgICAgIGxp c3QpCiAgICAgICAgIChsZXQgKChyZXN1bHQgbmlsKSkKICAgICAgICAgICAoZG90aW1lcyAoaW50 ICgxKyAoY291bnQtbGluZXMgKHBvaW50LW1pbikgKHBvaW50LW1heCkpKSByZXN1bHQpCiAgICAg ICAgICAgICAodW5sZXNzIChvciAoPSAwIGludCkgKG1lbWJlciBpbnQgbWluZ3VzLW1hcmtlZC1s aXN0KSkKICAgICAgICAgICAgICAgKHB1c2ggaW50IHJlc3VsdCkpKSkpCiAgICAgICAgKHNoZWxs LWNvbW1hbmQgZGVsZXRlLXN0cmluZykKICAgICAgICAoc2V0cSBtaW5ndXMtbWFya2VkLWxpc3Qg bmlsKQogICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgJ21pbmd1cykKICAgICAgICAoaWYgICh6 ZXJvcCBwb3Nmcm9tKQogICAgICAgICAgICAobWluZ3VzLXVuc2V0LWluc2VydGlvbi1wb2ludCkK ICAgICAgICAgIChnb3RvLWxpbmUgcG9zZnJvbSkKICAgICAgICAgIChtaW5ndXMtc2V0LWluc2Vy dGlvbi1wb2ludCkpCiAgICAgICAgKGdvdG8tbGluZSBuZXdwb3MpCiAgICAgICAgKHdoZW4gKC89 IG5ld3BvcyAobWluZ3VzLWxpbmUtbnVtYmVyLWF0LXBvcykpCiAgICAgICAgICAoZ290by1jaGFy IChwb2ludC1taW4pKSkKICAgICAgICAobWVzc2FnZSAiT3RoZXIgc29uZ3MgZGVsZXRlZCIpKSkp CgoKKGRlZnVuIG1pbmd1cy1wbGF5ICgmb3B0aW9uYWwgcG9zaXRpb24pCiAgIlN0YXJ0IHBsYXlp bmcgdGhlIG1wZCBwbGF5bGlzdCwgb25seSBpZiBub3QgeWV0IHBsYXlpbmcuCldoZW4gY2FsbGVk IHdpdGggYXJndW1lbnQgUE9TSVRJT04sIHBsYXkgcGxheWxpc3QgaWQgUE9TSVRJT04uIgogIChp bnRlcmFjdGl2ZSkKICAoc3RhcnQtcHJvY2Vzcy1zaGVsbC1jb21tYW5kICJtcGMiIG5pbCAoY29u Y2F0ICJtcGMgcGxheSAiIChvciBwb3NpdGlvbgoJCQkJCQkJCShpZiAoc3RyaW5nPSAiKk1pbmd1 cyoiIChidWZmZXItbmFtZSkpCgkJCQkJCQkJICAgIChtaW5ndXMtY3VyLWxpbmUgdCkgIiIpKSkp KQoKKGRlZnVuIG1pbmd1cy1wbGF5LXBvcyAocG9zaXRpb24pCiAgIlBsYXkgc29uZyBpbiBtcGQg cGxheWxpc3QgYXQgcG9zaXRpb24gc3BlY2lmaWVkIGJ5IHByZWZpeCBhcmd1bWVudC4iCiAgKGlu dGVyYWN0aXZlICJwIikKICAobWluZ3VzLXBsYXkgKG51bWJlci10by1zdHJpbmcgcG9zaXRpb24p KSkKCihkZWZ1biBtaW5ndXMtY2xlYXIgKCZvcHRpb25hbCBkb250YXNrKQogICJDbGVhciBtcGQg cGxheWxpc3Q7CkRvZXMgcHJvbXB0aW5nLiIKICAoaW50ZXJhY3RpdmUpCiAgKGlmIChvciBkb250 YXNrICh5ZXMtb3Itbm8tcCAiQ2xlYXIgdGhlIHBsYXlsaXN0PyAiKSkKICAgICAgKHByb2duIChz aGVsbC1jb21tYW5kICJtcGMgY2xlYXIgIikKICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVm ZmVyICIqTWluZ3VzKiIKICAgICAgICAgICAgICAgKGxldCAoKGJ1ZmZlci1yZWFkLW9ubHkgbmls KSkKICAgICAgICAgICAgICAgICAoZXJhc2UtYnVmZmVyKQogICAgICAgICAgICAgICAgIChtaW5n dXMtdW5zZXQtaW5zZXJ0aW9uLXBvaW50KQogICAgICAgICAgICAgICAgIChzZXRxIG1pbmd1cy1t YXJrZWQtbGlzdCBuaWwpCiAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIlBsYXlsaXN0IGNsZWFy ZWQiKSkpKQogICAgKG1lc3NhZ2UgIlBsYXlsaXN0IG5vdCBjbGVhcmVkIikpKQoKKGRlZnVuIG1p bmd1cy1sb2FkLWFsbCAoJm9wdGlvbmFsIGFuZC1wbGF5KQogICJMb2FkIGFsbCBzb25ncyBpbiBt cGQgZGF0YWJhc2UgaW50byBtcGQgcGxheWxpc3QuIgogIChpbnRlcmFjdGl2ZSAiUCIpCiAgKGlm IGFuZC1wbGF5IChtaW5ndXMtbG9hZC1hbGwtYW5kLXBsYXkpCiAgICAod2hlbiAoeWVzLW9yLW5v LXAgIkxvYWQgdGhlIFdIT0xFIG1wZCBkYXRhYmFzZT8gIiApCiAgICAgIChzaGVsbC1jb21tYW5k IChjb25jYXQgIm1wYyBjbGVhciYmbXBjIGxzfG1wYyBhZGQiICkgbmlsKQogICAgICAoc2F2ZS13 aW5kb3ctZXhjdXJzaW9uCgkobWluZ3VzKSkpKSkKCihkZWZ1biBtaW5ndXMtY3JvcCAoKQogICJD cm9wIG1wZCBwbGF5bGlzdCAiCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChidWZmZXItcmVhZC1v bmx5IG5pbCkpCiAgICAoaWYgKHN0cmluZy1tYXRjaCAiWW91IG5lZWQgdG8gYmUgcGxheWluZyB0 byBjcm9wIHRoZSBwbGF5bGlzdCIgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nICJtcGMgY3JvcCIp KQoJKG1lc3NhZ2UgIllvdSBuZWVkIHRvIGJlIHBsYXlpbmcgdG8gY3JvcCB0aGUgcGxheWxpc3Qi KQogICAgICAobWluZ3VzLXVuc2V0LWluc2VydGlvbi1wb2ludCkKICAgICAgKHNldHEgbWluZ3Vz LW1hcmtlZC1saXN0IG5pbCkKICAgICAgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbgoJKG1pbmd1cykp CiAgICAgIChtZXNzYWdlICJQbGF5bGlzdCBjcm9wcGVkIGFuZCAqbWluZ3VzLXBvaW50LW9mLWlu c2VydGlvbiogdW5zZXQiKSkpKQoKKGRlZnVuIG1pbmd1cy1hZGQgKHN0cmluZyAmb3B0aW9uYWwg bWluZ3VzLXVybCkKICAiSW4gTWluZ3VzLCBhZGQgYSBzb25nLiIKICAoc2hlbGwtY29tbWFuZCAo Zm9ybWF0ICJtcGMgYWRkICVzIiAoaWYgKGJvdW5kcCAnbWluZ3VzLXVybCkgc3RyaW5nIChzaGVs bC1xdW90ZS1hcmd1bWVudCBzdHJpbmcpKSkpCiAgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbiAobWlu Z3VzKSkpCgooZGVmY3VzdG9tIG1pbmd1cy1zdHJlYW0tYWxpc3QKICAnKCgiYnJhemlsbGJpZW50 IGxvdW5nZSIgLiAiaHR0cDovL2ZyZWV0ZWFtLm5sOjkwMDAvYnJhc2lsbC5vZ2ciKQogICAgKCJS YWRpbyBUemFyYSIgLiAiaHR0cDovL3JhZGlvLmluZHltZWRpYS5vcmc6ODAwMC90emFyYS5vZ2ci KQogICAgKCJFbmVteSBDb21iYXRhbnQgUmFkaW8iIC4gImh0dHA6Ly9yYWRpby5pbmR5bWVkaWEu b3JnOjgwMDAvZWNyLm9nZyIpCiAgICAoIk5ldyBDb2xsZWdlIG9mIENhbGlmb3JuaWEgSW50ZXJu ZXQgUmFkaW8gKGFtZXJpY2FuKSIgLiAiaHR0cDovL3JhZGlvLmluZHltZWRpYS5vcmc6ODAwMC9u ZXdjb2xsZWdlLm9nZyIpCiAgICAoInJhbGFjb2NvIiAuICJodHRwOi8vb3JlbGhhLnJhZGlvbGl2 cmUub3JnOjgwMDAvcmFsYWNvY28iKQogICAgKCJyYWRpb2xpdnJlIiAuICJodHRwOi8vb3JlbGhh LnJhZGlvbGl2cmUub3JnOjgwMDAvcmFkaW9saXZyZS5vZ2ciKQogICAgKCJDUm8gMSAtIFJhZGlv enVybmFsIChjemVjaCkiIC4gImh0dHA6Ly9hbXAxLmNlc25ldC5jejo4MDAwL2NybzEtMjU2Lm9n ZyIpCiAgICAoIkNSbyAyIC0gUHJhaGEgKGN6ZWNoKSIgLiAiaHR0cDovL2FtcDEuY2VzbmV0LmN6 OjgwMDAvY3JvMi0yNTYub2dnIikKICAgICgiQ1JvIDMgLSBWbHRhdmEgY3plY2gpIiAuICJodHRw Oi8vYW1wMS5jZXNuZXQuY3o6ODAwMC9jcm8zLTI1Ni5vZ2ciKQogICAgKCJvcmdyYWRpbyIgLiAi aHR0cDovL2hvc3RpbmcucHVzY2lpLm5sOjgwMDAvb3JnLm9nZyIpKQogICJBbGlzdCBvZiByYWRp byBzdGF0aW9ucyB0byBiZSB1c2VkIGJ5IHRoZSBmdW5jdGlvbiBgbWluZ3VzLWFkZC1zdHJlYW0n IgogIDpncm91cCAnbWluZ3VzCiAgOnR5cGUgJyhhbGlzdCkpCgooZGVmY3VzdG9tIG1pbmd1cy1w b2RjYXN0LWFsaXN0ICgpCiAgIkFsaXN0IG9mIHBvZGNhc3RzIHRvIGJlIHVzZWQgYnkgdGhlIGZ1 bmN0aW9uIGBtaW5ndXMtYWRkLXBvZGNhc3QnIgogIDpncm91cCAnbWluZ3VzCiAgOnR5cGUgJyhh bGlzdCkpCgooZGVmdW4gbWluZ3VzLWFkZC1zdHJlYW0gKCZvcHRpb25hbCBhbmQtcGxheSkKICAi QWRkIGEgdXJsLXN0cmVhbSB0byB0aGUgbXBkIHBsYXlsaXN0LgpXaGVuIHBvaW50IGlzIGF0IHRo ZSBiZWdpbm5pbmcgb2YgYSB1cmwsIGFkZCB0aGF0IHVybDsKSW4gdzNtLCBhZGQgdGhlIGxpbmsg dW5kZXIgcG9pbnQ7CkNvbXBsZXRpb24gaXMgcHJvdmlkZWQgYnkgdGhlIGVudHJpZXMgaW4gYG1p bmd1cy1zdHJlYW0tYWxpc3QnIHRvIGNob29zZSBmcm9tLgpXaXRoIHByZWZpeCBhcmd1bWVudCwg aW5zdGFudGx5IHBsYXkgdGhlIGluc2VydGlvbi4iCiAgKGludGVyYWN0aXZlICJQIikKICAoaWYg YW5kLXBsYXkgKG1pbmd1cy1hZGQtc3RyZWFtLWFuZC1wbGF5KQogICAgKGxldCAoKHVybCAoY29t cGxldGluZy1yZWFkLWFsbG93LXNwYWNlcyAiVXJsOiAiIG1pbmd1cy1zdHJlYW0tYWxpc3Qgbmls IG5pbAoJCQkJKG1pbmd1cy1leHRyYWN0LXVybCkpKSkKICAgICAgKGNhc2UgKG1pbmd1cy1wbGF5 bGlzdC10eXBlIChzZXRxIHVybCAob3IgKGNkciAoYXNzb2MgdXJsIG1pbmd1cy1zdHJlYW0tYWxp c3QpKQoJCQkJCQkoYXNzb2MgdXJsIG1pbmd1cy1zdHJlYW0tYWxpc3QpCgkJCQkJCXVybCkpKQoJ KG0zdSAobWluZ3VzLWFkZCAobWluZ3VzLXNpdGUtdG8tc3RyaW5nKSkpCgkocGxzIChtaW5ndXMt YWRkLXBvZGNhc3QpKQoJKHQgKG1pbmd1cy1hZGQgdXJsIHQpKSkpKSkKCihkZWZ1biBtaW5ndXMt ZXh0cmFjdC11cmwgKCkKICAiUmV0dXJuIHVybCBhdCBwb2ludDsKSWYgbm8gdXJsIGF0IHBvaW50 LCByZXR1cm4gbmlsLiIKICAobGV0ICgodXJsIChhbmQgKG5vdCAobWVtYmVyIG1ham9yLW1vZGUg JyhtaW5ndXMtcGxheWxpc3QtbW9kZSBtaW5ndXMtYnJvd3NlLW1vZGUpKSkKCQkgIChvciAocGxp c3QtZ2V0ICh0ZXh0LXByb3BlcnRpZXMtYXQgKHBvaW50KSkgJ3czbS1ocmVmLWFuY2hvcikKCQkg ICAgICAodGhpbmctYXQtcG9pbnQtdXJsLWF0LXBvaW50KSkpKSkKICAgICh3aGVuIChub3QgKG51 bGwgdXJsKSkKICAgICAgKGlmIChzdHJpbmctbWF0Y2ggIlw/IiB1cmwpCgkgIChyZXBsYWNlLW1h dGNoICJcXD8iIG5pbCB0IHVybCkKCXVybCkpKSkKCihkZWZ1biBtaW5ndXMtcGxheWxpc3QtdHlw ZSAodXJsKQogIChjb25kICgoc3RyaW5nLW1hdGNoICIuKlwuW21NXTNbVXVdIiAob3IgdXJsICJz b21ldGhpbmcgYWJzb2x1dGVseSBkaWZmZXJlbnQiKSkgJ20zdSkKCSgoc3RyaW5nLW1hdGNoICIu KlwuXFwoW3BQXVtsTF1bc1NdXFx8W2FBXVtzU11beFhdXFwpIiAob3IgdXJsICJzb21ldGhpbmcg YWJzb2x1dGVseSBkaWZmZXJlbnQiKSkgJ3BscykKCSh0IG5pbCkpKQoKKGRlZnVuIG1pbmd1cy1z aXRlLXRvLXN0cmluZyAoJm9wdGlvbmFsIHApCiAgKGxldCAoKHVybCAob3IgcCAobWluZ3VzLWV4 dHJhY3QtdXJsKSkpKQogICAgKHdoZW4gKG5vdCAobnVsbCB1cmwpKQogICAgICAoc2hlbGwtY29t bWFuZC10by1zdHJpbmcgKGZvcm1hdCAidzNtIC1kdW1wICVzIiAob3IgcCAobWluZ3VzLWV4dHJh Y3QtdXJsKSkpKSkpKQoKKGRlZnVuIG1pbmd1cy1hZGQtcG9kY2FzdCAoJm9wdGlvbmFsIGFuZC1w bGF5KQogICJBZGQgYWxsIHN0cmVhbXMgaW4gcG9kY2FzdCBhdCBwb2ludC4KQWN0dWFsbHkgaXQg dHJpZXMgdG8gcmV0cmlldmUgYW55IHN0cmVhbSBmcm9tIGEgZ2l2ZW4gdXJsLgpUaGUgdmFyaWFi bGUgYG1pbmd1cy1wb2RjYXN0LWFsaXN0JyBjYW4gYmUgdXNlZCBmb3IgaW5wdXQgc2VsZWN0aW9u LgpXaXRoIHByZWZpeCBhcmd1bWVudCwgcGxheSBkaXJlY3RseS4iCiAgKGludGVyYWN0aXZlICJQ IikKICAoaWYgYW5kLXBsYXkgKG1pbmd1cy1hZGQtcG9kY2FzdC1hbmQtcGxheSkKICAgIChkbyog KChpdGVtIG5pbCAoc3Vic3RyaW5nIChtYXRjaC1zdHJpbmcgMCB4bWwpIDApKQoJICAocmVzIG5p bCAoaWYgKG5vdCAobWVtYmVyIGl0ZW0gcmVzKSkgKHB1c2ggaXRlbSByZXMpIHJlcykpCgkgICh4 bWwgKG9yIChtaW5ndXMtc2l0ZS10by1zdHJpbmcpKG1pbmd1cy1zaXRlLXRvLXN0cmluZyAobGV0 ICgodXJsIChjb21wbGV0aW5nLXJlYWQgIkFkZCBhIHBvZGNhc3Q6ICIgbWluZ3VzLXBvZGNhc3Qt YWxpc3QpKSkKCQkJCQkJCQkgICAob3IgKGNkciAoYXNzb2MgdXJsIG1pbmd1cy1wb2RjYXN0LWFs aXN0KSkKCQkJCQkJCQkgICAgICAgKGFzc29jIHVybCBtaW5ndXMtcG9kY2FzdC1hbGlzdCkKCQkJ CQkJCQkgICAgICAgdXJsKSkpKSkKCSAgKGNvdW50IDAgbmlsKSkKCSgobm90IChzdHJpbmctbWF0 Y2ggbWluZ3VzLXN0cmVhbS1yZWdleHAgeG1sIChvciBjb3VudCAobWF0Y2gtZW5kIDApKSkpCgkg KGlmIChudWxsIHJlcykgKG1lc3NhZ2UgIk5vIHZhbGlkIHBvZGNhc3Qgb3IgZW1wdHkgcG9kY2Fz dCIpCgkgICAoZG8gKChlbmQtcmVzdWx0IChjYXIgcmVzKSAoY29uY2F0IGVuZC1yZXN1bHQgJyg/ ICkgKGNhZHIgcmVzKSkpCgkJKHJlcyByZXMgKGNkciByZXMpKSkKCSAgICAgICAoKG51bGwgcmVz KSAobWluZ3VzLWFkZCBlbmQtcmVzdWx0KSkKCSAgICAgbmlsKSkpKSkpCgooZGVmdW4gbWluZ3Vz LWJyb3dzZSAoKQogICJTd2l0Y2ggdG8gYnVmZmVyICpNaW5ndXMgQnJvd3NlciogYW5kIHN0YXJ0 IHlvdXIgTWluZ3VzIGJyb3dzaW5nIGV4cGVyaWVuY2UuIgogIChpbnRlcmFjdGl2ZSkKICAoaWYg KGJ1ZmZlcnAgKGdldC1idWZmZXIgIipNaW5ndXMgQnJvd3NlcioiKSkKICAgICAgKG1pbmd1cy1z d2l0Y2gtdG8tYnJvd3NlcikKICAgIChwcm9nbgogICAgICAobWluZ3VzLXN3aXRjaC10by1icm93 c2VyKQogICAgICAobGV0ICgoYnVmZmVyLXJlYWQtb25seSBuaWwpKQoJKGVyYXNlLWJ1ZmZlcikJ CQk7b25seSBpZiBub3QgeWV0IGluIGJyb3dzaW5nIG1vZGUKCShnb3RvLWNoYXIgKHBvaW50LW1p bikpCgkobWluZ3VzLWRvd24tZGlyLW9yLXBsYXktc29uZykpKSkpCQoKKGRlZnVuIG1pbmd1cy1i cm93c2UtaW52aXNpYmxlICgpCiAgIkhpZGUgJFBXRCBpbiBmaWxlIGFuZCBkaXJlY3RvcnkgbmFt ZXMgaW4gKk1pbmd1cyBCcm93c2VyKiBidWZmZXIuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGdv dG8tY2hhciAocG9pbnQtbWluKSkKICAgICh3aGlsZSAobm90IChlb2JwKSkKICAgICAgKHB1dC10 ZXh0LXByb3BlcnR5CiAgICAgICAocG9pbnQtYXQtYm9sKQogICAgICAgKG9yIChyZS1zZWFyY2gt Zm9yd2FyZCAiLiovIiAocG9pbnQtYXQtZW9sKSB0IDEpIChwb2ludC1hdC1ib2wpKQogICAgICAg J2ludmlzaWJsZSB0KQogICAgICAoZm9yd2FyZC1saW5lIDEpKSkpCgooZGVmdW4gbWluZ3VzLXNv bmdwICgpCiAgIkluICpNaW5ndXMgQnJvd3NlciogYnVmZmVyLCBjaGVjayB3aGV0aGVyIGN1cnJl bnQgbGluZSBjb250YWlucyBhIHNvbmcgbmFtZS4iCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoYmVn aW5uaW5nLW9mLWxpbmUpCiAgICAocmUtc2VhcmNoLWZvcndhcmQgbWluZ3VzLXNvbmctcmVnZXhw IChwb2ludC1hdC1lb2wpIHQpKSkKCihkZWZ1biogbWluZ3VzLWFkZC1zb25nLWF0LXAgKCZvcHRp b25hbCBiZWcgZW5kKQogICJBZGQgc29uZyBvciBkaXJlY3RvcnkgYXQgcG9pbnQuCklmIGFjdGl2 ZSByZWdpb24sIGFkZCBldmVyeXRoaW5nIHVuZGVyIHRoZSByZWdpb24sIHNsb3BwaWx5LiIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgICAgICAgKGludGVyYWN0aXZl ICJyIikKICAobGV0ICgoc29uZyAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCiAgICAg ICAgICAgICAgIChpZiBiZWcgKHByb2duIChnb3RvLWNoYXIgYmVnKSAocG9pbnQtYXQtYm9sKSkg KHBvaW50LWF0LWJvbCkpIDtzbG9wcHkgcmVnaW9uCiAgICAgICAgICAgICAgIChpZiBlbmQgKHBy b2duIChnb3RvLWNoYXIgZW5kKSAocG9pbnQtYXQtZW9sIChpZiAoYm9scCkgMCAxKSkpIChwb2lu dC1hdC1lb2wpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2lm IHBvaW50IGlzIGF0IGJvbCwgZG8gbm90IGNvdW50IHRoZSBjdXJyZW50IGxpbmUKICAgICh3aXRo LXRlbXAtYnVmZmVyCiAgICAgIChpbnNlcnQgc29uZykKICAgICAgKGdvdG8tY2hhciAocG9pbnQt bWluKSkKICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCAiXiIgKHBvaW50LW1heCkgdCkK CShyZXBsYWNlLW1hdGNoICJcIiIpKQogICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAg ICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJcbiIgKHBvaW50LW1heCkgdCkKCShyZXBsYWNl LW1hdGNoICJcIiAiKSkKICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAgKGluc2Vy dCAiXCIiKQogICAgICAoc2hlbGwtY29tbWFuZCAoZm9ybWF0ICJtcGMgYWRkICVzIiAgKGJ1ZmZl ci1zdHJpbmcpKSB0KSkpKSA7c2lsZW50IGFkZGluZyBieSB0CgooZGVmdW4gbWluZ3VzLWRvd24t ZGlyLW9yLXBsYXktc29uZyAoKQogICJJbiAqTWluZ3VzIEJyb3dzZXIqIGJ1ZmZlciwgZGVzY2Vu ZCBpbnRvIGRpciBhdCBwb2ludCwgb3IgcGxheSBzb25nIGF0IHBvaW50IgogIChpbnRlcmFjdGl2 ZSkKICAoc2F2ZS1leGN1cnNpb24KICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgIChpZiAobWlu Z3VzLXNvbmdwKQogICAgICAgIChtaW5ndXMtaW5zZXJ0KQogICAgICAocHJvZ24KICAgICAgICAo cHVzaCAobWluZ3VzLWxpbmUtbnVtYmVyLWF0LXBvcykgKm1pbmd1cy1wb3NpdGlvbnMqKQogICAg ICAgIChtaW5ndXMtbHMgKGNvbmNhdCAiXCIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChi dWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwb2ludC1hdC1ib2wpKHBvaW50LWF0LWVvbCkpICJcIiIpKSkpKSkKCihkZWZ1biBtaW5ndXMt bHMgKHN0cmluZykKICAiTGlzdCBzb25ncy9kaXJzIGluIGRpcmVjdG9yeSBTVFJJTkcgaW4gZGVk aWNhdGVkICpNaW5ndXMgQnJvd3NlciogYnVmZmVyLiIKICAobWluZ3VzLXN3aXRjaC10by1icm93 c2VyKQogIChzYXZlLWV4Y3Vyc2lvbikKICAobGV0ICgoYnVmZmVyLXJlYWQtb25seSBuaWwpCgko bmV3Y29udGVudHMgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nIChjb25jYXQgIm1wYyBscyAiICBz dHJpbmcpKSkpCiAgICAoZXJhc2UtYnVmZmVyKQogICAgKGlmIChzdHJpbmc9ICIiIG5ld2NvbnRl bnRzKQoJKG1lc3NhZ2UgIk5vIHNvbmdzIGluIGRhdGFiYXNlOyBjaGVjayB5b3VyIG1wZCBzZXR0 aW5ncyIpCiAgICAgIChpbnNlcnQgKHN1YnN0cmluZyBuZXdjb250ZW50cyAwIC0xKSkpIAogICAg KG1pbmd1cy1icm93c2UtaW52aXNpYmxlKSkpCgooZGVmdW4gbWluZ3VzLWRpci11cCAoKQogICJJ biBNaW5ndXMtQnJvd3NlLCBnbyB1cCBvbmUgZGlyZWN0b3J5IGxldmVsLiIKICAoaW50ZXJhY3Rp dmUpCiAgKGVuZC1vZi1saW5lKQogIChsZXQgKChidWZmZXItcmVhZC1vbmx5IG5pbCkKICAgICAg ICAoZ29hbCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCiAgICAgICAgICAgICAgIChv ciAocmUtc2VhcmNoLWJhY2t3YXJkICIvIiAocG9pbnQtYXQtYm9sKSB0IDEpIChwb2ludCkpKHBv aW50LWF0LWJvbCkpKSkKICAgIChlbmQtb2YtbGluZSkKICAgIChpZiAocmUtc2VhcmNoLWJhY2t3 YXJkICIvIiAocG9pbnQtYXQtYm9sKSB0IDIpCiAgICAgICAgKHByb2duCiAgICAgICAgICAobWlu Z3VzLWxzCiAgICAgICAgICAgKGNvbmNhdCAiXCIiCiAgICAgICAgICAgICAgICAgICAoYnVmZmVy LXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludC1hdC1ib2wpIChwb2ludCkpCiAgICAgICAg ICAgICAgICAgICAiXCIiICkpKQogICAgICAocHJvZ24KICAgICAgICAobWluZ3VzLWxzICIiKSkp CiAgICAocmUtc2VhcmNoLWJhY2t3YXJkIGdvYWwpKSkKCihkZWZ1biogbWluZ3VzLWluc2VydCAo Jm9wdGlvbmFsIGFuZC1wbGF5KQogICJJbiAqTWluZ3VzIEJyb3dzZXIqIGJ1ZmZlciwgaW5zZXJ0 IGFueXRoaW5nIHVuZGVyIHBvaW50IG9yIHJlZ2lvbiBpbnRvIG1wZCBwbGF5bGlzdC4KQW55d2hl cmUgZWxzZSwgY2FsbCBgbWluZ3VzLWFkZC1yZWFkLWlucHV0Jy4KV2l0aCBwcmVmaXggYXJndW1l bnQsIGluc3RhbnRseSBwbGF5IHRoZSBpbnNlcnRpb24uIgogIChpbnRlcmFjdGl2ZSAiUCIpCiAg KGlmIGFuZC1wbGF5IChtaW5ndXMtaW5zZXJ0LWFuZC1wbGF5KQogICAgKGlmIChub3QgKGVxIG1h am9yLW1vZGUgJ21pbmd1cy1icm93c2UtbW9kZSkpCgkobWluZ3VzLWFkZC1yZWFkLWlucHV0KQog ICAgICAoaWYgKG1pbmd1cy1tYXJrLWFjdGl2ZSkKCSAgKG1pbmd1cy1hZGQtc29uZy1hdC1wICht YXJrKShwb2ludCkpCgkobWluZ3VzLWFkZC1zb25nLWF0LXApKSkKICAgIChpZiAoZXEgbWFqb3It bW9kZSAnbWluZ3VzLXBsYXlsaXN0LW1vZGUpCgkobWluZ3VzKQogICAgICAodW5sZXNzIChtaW5n dXMtbWFyay1hY3RpdmUpIChmb3J3YXJkLWxpbmUgMSkpKSkpCgooZGVmdW4qIG1pbmd1cy1zZXQt aW5zZXJ0aW9uLXBvaW50ICgmb3B0aW9uYWwgcCkKICAiSW4gTWluZ3VzLCBzZXQgKm1pbmd1cy1w b2ludC1vZi1pbnNlcnRpb24qIGZvciBuZXcgc29uZ3MuClRoZXkgd2lsbCBiZSBhZGRlZCBhZnRl ciB0aGlzIHBvaW50LgpQcmVmaXggYXJndW1lbnQgc2hvd3MgdmFsdWUgb2YgKm1pbmd1cy1wb2lu dC1vZi1pbnNlcnRpb24qLCBhbmQgbW92ZXMgdGhlcmUuIgogIChpbnRlcmFjdGl2ZSAiUCIpCiAg KGNvbmQgKChzdHJpbmc9ICIqTWluZ3VzKiIgKGJ1ZmZlci1uYW1lKSkKICAgICAgICAgKGNvbmQg KChudWxsIHApCiAgICAgICAgICAgICAgICAoc2V0ICcqbWluZ3VzLXBvaW50LW9mLWluc2VydGlv biogKGxpc3QgKGxpc3QgKG1pbmd1cy1saW5lLW51bWJlci1hdC1wb3MpCgkJCQkJCQkgICAgICAo YnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCgkJCQkJCQkgICAgICAgKHBvaW50LWF0LWJv bCkgKHBvaW50LWF0LWVvbCkpKSkpKQogICAgICAgICAgICAgICAoKm1pbmd1cy1wb2ludC1vZi1p bnNlcnRpb24qCiAgICAgICAgICAgICAgICAoZ290by1saW5lIChjYWFyICptaW5ndXMtcG9pbnQt b2YtaW5zZXJ0aW9uKikpKSkKICAgICAgICAgKG1lc3NhZ2UgIiptaW5ndXMtcG9pbnQtb2YtaW5z ZXJ0aW9uKiBzZXQgYXQgJXMiIChvciAoY2FkYXIgKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRpb24q KSAiZW5kIG9mIHBsYXlsaXN0ICh1bnNldCkiKSkpCiAgICAgICAgKHQgKG1lc3NhZ2UgIk5vdCBp biBcIipNaW5ndXMqXCIgYnVmZmVyIikpKSkKCQkJCQk7Zml4bWUgZG8gc29tZXRoaW5nIHdpdGgg dGV4dC1wcm9wZXJ0aWVzIGhlcmUgb25jZSBJIGZpbmQgb3V0IGhvdyB0by4uLgoKKGRlZnVuIG1p bmd1cy1zZXQtaW5zZXJ0aW9uLXBvaW50LWF0LWN1cnJlbnRseS1wbGF5aW5nLXNvbmcgKCkKICAo aW50ZXJhY3RpdmUpCiAgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbgogICAgKG1pbmd1cy1zd2l0Y2gt dG8tcGxheWxpc3QpCiAgICAobWluZ3VzLWdvdG8tY3VycmVudC1zb25nKQogICAgKG1pbmd1cy1z ZXQtaW5zZXJ0aW9uLXBvaW50KSkpCgoKCihkZWZ1biBtaW5ndXMtdW5zZXQtaW5zZXJ0aW9uLXBv aW50ICgpCiAgIlVuc2V0IE1pbmd1cycgKm1pbmd1cy1wb2ludC1vZi1pbnNlcnRpb24qLiIKICAo aW50ZXJhY3RpdmUpCiAgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbgogICAgKG1pbmd1cy1zd2l0Y2gt dG8tcGxheWxpc3QpCiAgICAoc2V0ICcqbWluZ3VzLXBvaW50LW9mLWluc2VydGlvbiogbmlsKQog ICAgKG1lc3NhZ2UgIiptaW5ndXMtcG9pbnQtb2YtaW5zZXJ0aW9uKiB1bnNldCIpKSkKCihkZWZ1 biBtaW5ndXMtbXBjLWxvYWQgKHBsYXlsaXN0KQogIChzaGVsbC1jb21tYW5kIChjb25jYXQgIm1w YyBsb2FkICIgcGxheWxpc3QpKSkKCihkZWZ1biBtaW5ndXMtbG9hZC1wbGF5bGlzdCAoJm9wdGlv bmFsIGFuZC1wbGF5KQogICJMb2FkIGFuIG1wZCBwbGF5bGlzdC4KQXBwZW5kIHBsYXlsaXN0IHRv IGN1cnJlbnQgcGxheWxpc3QuCldpdGggcHJlZml4IGFyZ3VtZW50LCBpbnN0YW50bHkgcGxheSB0 aGUgaW5zZXJ0aW9uLiIKICAoaW50ZXJhY3RpdmUgIlAiKQogIChpZiBhbmQtcGxheSAobWluZ3Vz LWxvYWQtcGxheWxpc3QtYW5kLXBsYXkpCiAgICAobGV0ICgobHN0IChzaGVsbC1jb21tYW5kLXRv LXN0cmluZyAibXBjIGxzcGxheWxpc3RzIikpKQogICAgICAoaWYgKHN0cmluZz0gIiIgbHN0KQoJ ICAobWVzc2FnZSAiTm8gcGxheWxpc3QgcHJlc2VudCIpCgkobGV0KiAoKHBsYXlsaXN0ICAoY29t cGxldGluZy1yZWFkLWFsbG93LXNwYWNlcyAiTG9hZCBwbGF5bGlzdDogIgoJCQkJCSAoc3BsaXQt c3RyaW5nIChzdWJzdHJpbmcgbHN0IDAgLTEpICJcbisiKSAgbmlsIHQpKQoJICAgICAgKHF1b3Rl ZC1wbGF5bGlzdCAoc2hlbGwtcXVvdGUtYXJndW1lbnQgcGxheWxpc3QpKSkKCSAgKGlmIChzdHJp bmc9ICIiIHBsYXlsaXN0KQoJICAgICAgKG1lc3NhZ2UgIk5vIHBsYXlsaXN0IHNlbGVjdGVkIikK CSAgICAocHJvZ24KCSAgICAgIChtaW5ndXMtbXBjLWxvYWQgcXVvdGVkLXBsYXlsaXN0KQoJICAg ICAgKG1lc3NhZ2UgKGZvcm1hdCAiUGxheWxpc3QgJXMgbG9hZGVkIiBwbGF5bGlzdCkpCgkgICAg ICAobWluZ3VzKSkpKSkpKSkKCihkZWZ1biBtaW5ndXMtc2F2ZS1wbGF5bGlzdCAoKQogICJTYXZl IGFuIG1wZCBwbGF5bGlzdCIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCogKChsc3QgKHNoZWxsLWNv bW1hbmQtdG8tc3RyaW5nICJtcGMgbHNwbGF5bGlzdHMiKSkKCSAocGxheWxpc3QgKGNvbXBsZXRp bmctcmVhZC1hbGxvdy1zcGFjZXMgIlNhdmUgcGxheWxpc3QgYXM6ICIKCQkJCSAgICAoaWYgKHN0 cmluZz0gIiIgbHN0KQoJCQkJCW5pbAoJCQkJICAgICAgKHNwbGl0LXN0cmluZyAoc3Vic3RyaW5n IGxzdCAwIC0xKSAiXG4rIikpIG5pbCBuaWwpKQoJIChxdW90ZWQtcGxheWxpc3QgKHNoZWxsLXF1 b3RlLWFyZ3VtZW50IHBsYXlsaXN0KSkpCiAgICAoaWYgKHN0cmluZz0gIiIgcGxheWxpc3QpCgko bWVzc2FnZSAiTm8gbmFtZSBmb3IgcGxheWxpc3QgcHJvdmlkZWQsIHdvbid0IHNhdmUuLi4iKQog ICAgICAoc2hlbGwtY29tbWFuZCAoZm9ybWF0ICJtcGMgcm0gJXMiIHF1b3RlZC1wbGF5bGlzdCkp CiAgICAgIChzaGVsbC1jb21tYW5kIChmb3JtYXQgIm1wYyBzYXZlICVzIiAgcXVvdGVkLXBsYXls aXN0KSkKICAgICAgKG1lc3NhZ2UgIlBsYXlsaXN0IHNhdmVkIGFzICVzIiBwbGF5bGlzdCkpKSkK CihkZWZ1biBtaW5ndXMtcmVtb3ZlLXBsYXlsaXN0ICgpCiAgIlJlbW92ZSBhbiBtcGQgcGxheWxp c3QiCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChsaXN0IChzaGVsbC1jb21tYW5kLXRvLXN0cmlu ZyAibXBjIGxzcGxheWxpc3RzIikpKQogICAgKGNvbmQgKChzdHJpbmc9ICIiIGxpc3QpCiAgICAg ICAgICAgKG1lc3NhZ2UgIk5vIHBsYXlsaXN0IHRvIHJlbW92ZSIpKQogICAgICAgICAgKHQKICAg ICAgICAgICAobGV0KiAoKHBsYXlsaXN0ICAoY29tcGxldGluZy1yZWFkLWFsbG93LXNwYWNlcyAi UmVtb3ZlIHBsYXlsaXN0OiAiCgkJCQkJCQkgIChzcGxpdC1zdHJpbmcgKHN1YnN0cmluZyBsaXN0 IDAgLTEpICJcbisiKSBuaWwgbmlsKSkKCQkgKHF1b3RlZC1wbGF5bGlzdCAoc2hlbGwtcXVvdGUt YXJndW1lbnQgcGxheWxpc3QpKSkKICAgICAgICAgICAgIChpZiAoc3RyaW5nPSAiIiBwbGF5bGlz dCkKICAgICAgICAgICAgICAgICAobWVzc2FnZSAiTm8gbmFtZSBmb3IgcGxheWxpc3QgcHJvdmlk ZWQsIHdvbid0IHJlbW92ZSIpCiAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAg IChzaGVsbC1jb21tYW5kIChjb25jYXQgIm1wYyBybSAiIHF1b3RlZC1wbGF5bGlzdCkpCiAgICAg ICAgICAgICAgICAgKG1lc3NhZ2UgIlBsYXlsaXN0ICVzIHJlbW92ZWQiIHBsYXlsaXN0KSkpKSkp KSkKCihkZWZ1biBtaW5ndXMtYWRkLXJlYWQtaW5wdXQgKCZvcHRpb25hbCBzdHJpbmcpCiAgIkFk ZCBzb25nIG9yIGRpciB0byBtcGQgcGxheWxpc3QgdXNpbmcgbWluaWJ1ZmZlciBpbnB1dCIKCQkJ CQk7ICAoaW50ZXJhY3RpdmUpCiAgKGxldCogKChzdHJpbmcgKGlmIHN0cmluZyBzdHJpbmcgIiIp KQoJIChyZXMtb25lICIiKQoJIChyZXMgKGNvbXBsZXRpbmctcmVhZC1hbGxvdy1zcGFjZXMKCSAg ICAgICAoZm9ybWF0ICJBZGQ6ICVzJXMiIHN0cmluZyAoaWYgKHN0cmluZz0gIiIgc3RyaW5nKSAi IiAiLyIpKQoJICAgICAgIChzcGxpdC1zdHJpbmcKCQkod2l0aC10ZW1wLWJ1ZmZlcgoJCSAgKGlu c2VydAoJCSAgIChzdWJzdHJpbmcgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nIChjb25jYXQgIm1w YyBscyAiICJcIiIgc3RyaW5nICJcIiIpKSAwIC0xKSkKCQkgIChnb3RvLWNoYXIgKHBvaW50LW1p bikpCgkJICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJeLiovIiAocG9pbnQtbWF4KSB0KQoJ CSAgICAocmVwbGFjZS1tYXRjaCAiIikpCgkJICAoYnVmZmVyLXN0cmluZykpCgkJIlxuKyIpIG5p bCB0KSkpCiAgICAoaWYgKG9yIChzdHJpbmctbWF0Y2ggbWluZ3VzLXNvbmctcmVnZXhwIHJlcyko c3RyaW5nLW1hdGNoICJuXFx8ICIgKHJlYWQta2V5LXNlcXVlbmNlICJEZXNjZW5kIGludG8gZGly PyAoXCJuXCIgb3IgU1BBQ0UgdG8gaW5zZXJ0IHdob2xlIGRpcikgIikpKQoJKHNoZWxsLWNvbW1h bmQtdG8tc3RyaW5nIChjb25jYXQgIm1wYyBhZGQgIiAiXCIiIHN0cmluZyAoaWYgKHN0cmluZz0g c3RyaW5nICIiKSAiIiAiLyIpIHJlcyAiXCIiKSkKICAgICAgKG1pbmd1cy1hZGQtcmVhZC1pbnB1 dCAoY29uY2F0IHN0cmluZyAoaWYgKG5vdCAoc3RyaW5nPSAiIiBzdHJpbmcpKSAiLyIgIiIpIHJl cykpKSkpCgo7OztTZWFyY2hpbmcgc2VjdGlvbgooZGVmdW4gbWluZ3VzLXF1ZXJ5ICgpCiAgIlF1 ZXJ5IHRoZSBtcGQgZGF0YWJhc2UgZm9yIGEgc3RyaW5nIG9yIHJlZ2V4cCAoaW4gY2FzZSBvZiBy ZWdleHAgb24gZmlsZW5hbWUpOwpTaG93IHJlc3VsdHMgaW4gZGVkaWNhdGVkICpNaW5ndXMgQnJv d3NlciogYnVmZmVyIGZvciBmdXJ0aGVyIHNlbGVjdGlvbi4iCiAgKGludGVyYWN0aXZlKQogIChs ZXQqICgodHlwZSkKICAgICAgICAgKGJ1ZmZlciAoYnVmZmVyLW5hbWUpKQogICAgICAgICAocG9z IChwb2ludCkpCiAgICAgICAgIChxdWVyeQogICAgICAgICAgKHJlYWQtZnJvbS1taW5pYnVmZmVy CiAgICAgICAgICAgKGNhcGl0YWxpemUgKGZvcm1hdCAiJXM6ICIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzZXQgJ3R5cGUgKGNvbXBsZXRpbmctcmVhZC1hbGxvdy1zcGFjZXMgIlNl YXJjaCB0eXBlOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJygiYWxidW0iICJhcnRpc3QiICJmaWxlbmFtZSIgInRpdGxlIiAicmVn ZXhwIG9uIGZpbGVuYW1lIikgbmlsIHQpKSkpKSkpCiAgICAobWluZ3VzLXF1ZXJ5LWRvLWl0IHR5 cGUgcXVlcnkgcG9zIGJ1ZmZlcikpKQoKKGRlZnVuIG1pbmd1cy1xdWVyeS1yZWdleHAgKCkKICAi UXVlcnkgdGhlIGZpbGVuYW1lcyBpbiB0aGUgbXBkIGRhdGFiYXNlIHdpdGggYSByZWd1bGFyIGV4 cHJlc3Npb247ClNob3cgcmVzdWx0cyBpbiBkZWRpY2F0ZWQgKk1pbmd1cyBCcm93c2VyKiBidWZm ZXIgZm9yIGZ1cnRoZXIgc2VsZWN0aW9uLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKGJ1ZmZl ciAoYnVmZmVyLW5hbWUpKQogICAgICAgIChwb3MgKHBvaW50KSkpCiAgICAobWluZ3VzLXF1ZXJ5 LWRvLWl0ICJyZWdleHAgb24gZmlsZW5hbWUiIChyZWFkLWZyb20tbWluaWJ1ZmZlciAiUmVnZXhw IHNlYXJjaCBvbiBmaWxlbmFtZSBpbiBtcGQgZGF0YWJhc2U6ICIpIHBvcyBidWZmZXIpKSkKCihk ZWZ1biBtaW5ndXMtcXVlcnktZG8taXQgKHR5cGUgcXVlcnkgcG9zIGJ1ZmZlcikKICAiUGVyZm9y bSB0aGUgcXVlcnkgcHJvdmlkZWQgYnkgZWl0aGVyIGBtaW5ndXMtcXVlcnknIG9yIGBtaW5ndXMt cXVlcnktcmVnZXhwJyIKICAobWluZ3VzLXN3aXRjaC10by1icm93c2VyKQogIChsZXQgKChidWZm ZXItcmVhZC1vbmx5IG5pbCkKICAgICAgICAocHJldiAoYnVmZmVyLXN0cmluZykpKQogICAgKGVy YXNlLWJ1ZmZlcikKICAgIChjb25kICgoc3RyaW5nLW1hdGNoICJyZWdleHAgb24gZmlsZW5hbWUi IHR5cGUpCiAgICAgICAgICAgKGluc2VydCAoc2hlbGwtY29tbWFuZC10by1zdHJpbmcgIm1wYyBs aXN0YWxsIikpCiAgICAgICAgICAgKGtlZXAtbGluZXMgcXVlcnkgKHBvaW50LW1pbikgKHBvaW50 LW1heCkpKQogICAgICAgICAgKHQgKGluc2VydAogICAgICAgICAgICAgIChzaGVsbC1jb21tYW5k LXRvLXN0cmluZyAoZm9ybWF0ICJtcGMgc2VhcmNoICVzICVzIiB0eXBlIHF1ZXJ5KSkpKSkKICAg IChtaW5ndXMtYnJvd3NlLWludmlzaWJsZSkKICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAg ICAobWluZ3VzLXJldmVydC1mcm9tLXF1ZXJ5IHBvcyBwcmV2IGJ1ZmZlcikpKQoKKGRlZnVuIG1p bmd1cy1yZXZlcnQtZnJvbS1xdWVyeSAocG9zIHByZXYgYnVmZmVyKQogICJSZXN0b3JlIHByZXZp b3VzIHNpdHVhdGlvbiB3aGVuIGBtaW5ndXMtcXVlcnktZG8taXQnIGRpZCBub3QgcmV0dXJuIGFu eSByZXN1bHRzLiIKICAoY29uZCAoKGVvYnApCiAgICAgICAgIChpbnNlcnQgcHJldikKICAgICAg ICAgKHN3aXRjaC10by1idWZmZXIgYnVmZmVyKQogICAgICAgICAoZ290by1jaGFyIHBvcykKICAg ICAgICAgKG1lc3NhZ2UgIk5vIGhpdHMhIikpCiAgICAgICAgKHQKICAgICAgICAgKHNldHEgbW9k ZS1uYW1lICJRdWVyeSByZXN1bHRzIikKICAgICAgICAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJs ZSAnbWluZ3VzLWxhc3QtcXVlcnktcmVzdWx0cykgKGJ1ZmZlci1zdHJpbmcpKSkpKQoKKGRlZnVu IG1pbmd1cy1sYXN0LXF1ZXJ5LXJlc3VsdHMgKCkKICAiU2hvdyBsYXN0IHF1ZXJ5IHJlc3VsdHMg YWdhaW4gaW4gZGVkaWNhdGVkICpNaW5ndXMgQnJvd3NlciogYnVmZmVyIgogIChpbnRlcmFjdGl2 ZSkKICAoY29uZCAoKHNhdmUtd2luZG93LWV4Y3Vyc2lvbgogICAgICAgICAgIChtaW5ndXMtc3dp dGNoLXRvLWJyb3dzZXIpCiAgICAgICAgICAgKG51bGwgbWluZ3VzLWxhc3QtcXVlcnktcmVzdWx0 cykpCiAgICAgICAgIChtZXNzYWdlICJObyBzdWNjZXNmdWwgc2VhcmNoIHlldCIpKQogICAgICAg ICh0IChzd2l0Y2gtdG8tYnVmZmVyICIqTWluZ3VzIEJyb3dzZXIqIikKICAgICAgICAgICAoc2V0 cSBtb2RlLW5hbWUgIlF1ZXJ5IHJlc3VsdHMiKQogICAgICAgICAgIChsZXQgKChidWZmZXItcmVh ZC1vbmx5IG5pbCkpCiAgICAgICAgICAgICAoZXJhc2UtYnVmZmVyKQogICAgICAgICAgICAgKGlu c2VydCBtaW5ndXMtbGFzdC1xdWVyeS1yZXN1bHRzKQogICAgICAgICAgICAgKGdvdG8tY2hhciAo cG9pbnQtbWluKSkpKSkpCgooZGVmYWxpYXMgJ21pbmd1cy1zZWFyY2ggJ21pbmd1cy1xdWVyeSkK Cjs7Ozsge3tXYWtlIHVwIGNhbGx9fQooZGVmdW4gbWluZ3VzLWRhdGUtdG8tc2VjLWZyb20tZXBv Y2ggKGRhdGVzdHJpbmcpCiAgKGFwcGx5ICMnZW5jb2RlLXRpbWUKCSAobWFwY2FyICMnc3RyaW5n LXRvLW51bWJlciAKCQkgKGxpc3QgCgkJICAoc3Vic3RyaW5nIGRhdGVzdHJpbmcgMTIgMTQpCTtz ZWNvbmRzCgkJICAoc3Vic3RyaW5nIGRhdGVzdHJpbmcgMTAgMTIpCTttaW51dGUKCQkgIChzdWJz dHJpbmcgZGF0ZXN0cmluZyA4IDEwKQk7ZGF5CgkJICAoc3Vic3RyaW5nIGRhdGVzdHJpbmcgNiA4 KQk7bW9udGgKCQkgIChzdWJzdHJpbmcgZGF0ZXN0cmluZyA0IDYpCQkKCQkgIChzdWJzdHJpbmcg ZGF0ZXN0cmluZyAwIDQpKSkpKSAKCgooZGVmdW4gbWluZ3VzLXdha2UtdXAtY2FsbCAoJm9wdGlv bmFsIHApCiAgIlNldCBhIHRpbWUgZm9yIG1pbmd1cyB0byBzdGFydCBwbGF5aW5nLiAKVElNRSB3 aWxsIGJlIGludGVycHJldGVkIHRvIGFsd2F5cyBsaWUgaW4gdGhlIGZ1dHVyZS4KV2l0aCBwcmVm aXggYXJndW1lbnQsIGNhbmNlbCB0aGUgd2FrZS11cCBjYWxsLgoKVGhlIHRpbWVyLW9iamVjdCBp cyByZWZlcmVuY2VkIHRvIGJ5IHRoZSB2YXJpYWJsZSBgbWluZ3VzLXdha2UtdXAtY2FsbCciCiAg KGludGVyYWN0aXZlICJQIikKICAoY29uZCAoKGFuZCBwICh0aW1lcnAgbWluZ3VzLXdha2UtdXAt Y2FsbCkpIAoJIChjYW5jZWwtdGltZXIgbWluZ3VzLXdha2UtdXAtY2FsbCkKCSAobWVzc2FnZSAi V2FrZS11cCBjYWxsIGNhbmNlbGxlZCIpKQoJKHQKCSAoc2V0cQoJICBtaW5ndXMtd2FrZS11cC1j YWxsIChydW4tYXQtdGltZSAKCQkJICAgICAgIChsZXQgKCh0aW1lIChtaW5ndXMtZGF0ZS10by1z ZWMtZnJvbS1lcG9jaCAKCQkJCQkgICAgKGNvbmNhdCAKCQkJCQkgICAgIChmb3JtYXQtdGltZS1z dHJpbmcgIiVZJW0lZCIpCgkJCQkJICAgICAoZm9ybWF0ICIlMDJkIiAocmVhZC1udW1iZXIgIkhv dXI6ICIpKQoJCQkJCSAgICAgKGZvcm1hdCAiJTAyZCIgKHJlYWQtbnVtYmVyICJNaW51dGU6ICIp KSAiMDAiKSkpKQoJCQkJIChpZiAodGltZS1sZXNzLXAgdGltZSAoY3VycmVudC10aW1lKSkgKHRp bWUtYWRkIChkYXlzLXRvLXRpbWUgMSkgdGltZSkgdGltZSkpIAoJCQkgICAgICAgbmlsICdtaW5n dXMtcGxheSkpCgkgKG1lc3NhZ2UgKGZvcm1hdCAiJXNha2Ugc3VyZSB5b3UgaGF2ZSBhIHBsYXls aXN0IHNldCBiZWZvcmUgZG96aW5nIG9mZiEiIAoJCQkgIChpZiAoPSAgMCAobWluZ3VzLXBsYXls aXN0LWxlbmd0aCkpICJQbGF5bGlzdCBpcyBlbXB0eSwgbSIgIk0iKSkpKSkpCgoocHJvdmlkZSAn bWluZ3VzKQo7OzsgbWluZ3VzLmVsIGVuZHMgaGVyZQoK