Name: series-workflowfwpnz Phase: Failed StartedAt: 2026-07-01 21:55:00 +0000 UTC FinishedAt: 2026-07-01 22:10:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwpnz[0] Phase: Succeeded StartedAt: 2026-07-01 21:55:00 +0000 UTC FinishedAt: 2026-07-01 22:10:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwpnz[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 21:55:00 +0000 UTC FinishedAt: 2026-07-01 22:10:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBzeXNmcyBhdHRyaWJ1dGUgKGBjcHVfc2xhYnNgKSB0byByZXR1cm4gYSBoYXJkY29kZWQgXCYjMzQ7MFxcblwmIzM0OyBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHRoZSB2YWx1ZSwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdW51c2VkIG1hY3Jvcy4gVGhpcyBpcyBhIHB1cmVseSBpbmZvcm1hdGlvbmFsL3N5c2ZzIGNoYW5nZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljIG9yIGV4ZWN1dGlvbiBmbG93IHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWE1NTM3ODkzZjdjNTBmOGQzNGM3NDhkOWM5MmFiY2IwM2E4MmIzZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMjI6MDk6MzIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vc2x1Yi5jIGIvbW0vc2x1Yi5jXG5pbmRleCA5ZWM3NzRkYzcwMDk2OS4uZjJlYjYwY2UwZDIzMDIgMTAwNjQ0XG4tLS0gYS9tbS9zbHViLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3NsdWIuY1xuQEAgLTg5OTIsMTQgJiM0Mzs4OTkyLDEyIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nfc2xhYihzdHJ1Y3QgbG9jX3RyYWNrICp0LCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbiBlbnVtIHNsYWJfc3RhdF90eXBlIHtcbiBcdFNMX0FMTCxcdFx0XHQvKiBBbGwgc2xhYnMgKi9cbiBcdFNMX1BBUlRJQUwsXHRcdC8qIE9ubHkgcGFydGlhbGx5IGFsbG9jYXRlZCBzbGFicyAqL1xuLVx0U0xfQ1BVLFx0XHRcdC8qIE9ubHkgc2xhYnMgdXNlZCBmb3IgY3B1IGNhY2hlcyAqL1xuIFx0U0xfT0JKRUNUUyxcdFx0LyogRGV0ZXJtaW5lIGFsbG9jYXRlZCBvYmplY3RzIG5vdCBzbGFicyAqL1xuIFx0U0xfVE9UQUxcdFx0LyogRGV0ZXJtaW5lIG9iamVjdCBjYXBhY2l0eSBub3Qgc2xhYnMgKi9cbiB9O1xuIFxuICNkZWZpbmUgU09fQUxMXHRcdCgxIFx1MDAzY1x1MDAzYyBTTF9BTEwpXG4gI2RlZmluZSBTT19QQVJUSUFMXHQoMSBcdTAwM2NcdTAwM2MgU0xfUEFSVElBTClcbi0jZGVmaW5lIFNPX0NQVVx0XHQoMSBcdTAwM2NcdTAwM2MgU0xfQ1BVKVxuICNkZWZpbmUgU09fT0JKRUNUU1x0KDEgXHUwMDNjXHUwMDNjIFNMX09CSkVDVFMpXG4gI2RlZmluZSBTT19UT1RBTFx0KDEgXHUwMDNjXHUwMDNjIFNMX1RPVEFMKVxuIFxuQEAgLTkxODgsNyAmIzQzOzkxODYsNyBAQCBTTEFCX0FUVFJfUk8ocGFydGlhbCk7XG4gXG4gc3RhdGljIHNzaXplX3QgY3B1X3NsYWJzX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcbiB7XG4tXHRyZXR1cm4gc2hvd19zbGFiX29iamVjdHMocywgYnVmLCBTT19DUFUpO1xuJiM0MztcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MFxcblwmIzM0Oyk7XG4gfVxuIFNMQUJfQVRUUl9STyhjcHVfc2xhYnMpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBzeXNmcyBhdHRyaWJ1dGUgKGBjcHVfc2xhYnNgKSB0byByZXR1cm4gYSBoYXJkY29kZWQgXCYjMzQ7MFxcblwmIzM0OyBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHRoZSB2YWx1ZSwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdW51c2VkIG1hY3Jvcy4gVGhpcyBpcyBhIHB1cmVseSBpbmZvcm1hdGlvbmFsL3N5c2ZzIGNoYW5nZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljIG9yIGV4ZWN1dGlvbiBmbG93IHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YTU1Mzc4OTNmN2M1MGY4ZDM0Yzc0OGQ5YzkyYWJjYjAzYTgyYjNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAyMjowOTozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuYwppbmRleCA5ZWM3NzRkYzcwMDk2OS4uZjJlYjYwY2UwZDIzMDIgMTAwNjQ0Ci0tLSBhL21tL3NsdWIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9zbHViLmMKQEAgLTg5OTIsMTQgJiM0Mzs4OTkyLDEyIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nfc2xhYihzdHJ1Y3QgbG9jX3RyYWNrICp0LCBzdHJ1Y3Qga21lbV9jYWNoZSAqcywKIGVudW0gc2xhYl9zdGF0X3R5cGUgewogCVNMX0FMTCwJCQkvKiBBbGwgc2xhYnMgKi8KIAlTTF9QQVJUSUFMLAkJLyogT25seSBwYXJ0aWFsbHkgYWxsb2NhdGVkIHNsYWJzICovCi0JU0xfQ1BVLAkJCS8qIE9ubHkgc2xhYnMgdXNlZCBmb3IgY3B1IGNhY2hlcyAqLwogCVNMX09CSkVDVFMsCQkvKiBEZXRlcm1pbmUgYWxsb2NhdGVkIG9iamVjdHMgbm90IHNsYWJzICovCiAJU0xfVE9UQUwJCS8qIERldGVybWluZSBvYmplY3QgY2FwYWNpdHkgbm90IHNsYWJzICovCiB9OwogCiAjZGVmaW5lIFNPX0FMTAkJKDEgJmx0OyZsdDsgU0xfQUxMKQogI2RlZmluZSBTT19QQVJUSUFMCSgxICZsdDsmbHQ7IFNMX1BBUlRJQUwpCi0jZGVmaW5lIFNPX0NQVQkJKDEgJmx0OyZsdDsgU0xfQ1BVKQogI2RlZmluZSBTT19PQkpFQ1RTCSgxICZsdDsmbHQ7IFNMX09CSkVDVFMpCiAjZGVmaW5lIFNPX1RPVEFMCSgxICZsdDsmbHQ7IFNMX1RPVEFMKQogCkBAIC05MTg4LDcgJiM0Mzs5MTg2LDcgQEAgU0xBQl9BVFRSX1JPKHBhcnRpYWwpOwogCiBzdGF0aWMgc3NpemVfdCBjcHVfc2xhYnNfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKQogewotCXJldHVybiBzaG93X3NsYWJfb2JqZWN0cyhzLCBidWYsIFNPX0NQVSk7CiYjNDM7CXJldHVybiBzeXNmc19lbWl0KGJ1ZiwgJiMzNDswXG4mIzM0Oyk7CiB9CiBTTEFCX0FUVFJfUk8oY3B1X3NsYWJzKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU0xVQiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBtbS9zbHViLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgcmVtb3ZpbmcgYFNMX0NQVWAgYW5kIGBTT19DUFVgIGZyb20gdGhlIGBlbnVtIHNsYWJfc3RhdF90eXBlYCBhbmQgaXRzIGFzc29jaWF0ZWQgbWFjcm9zLiBUaGlzIGxvb2tzIGxpa2UgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGNsZWFudXAsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaGUgcGF0Y2ggYWxzbyBzaW1wbGlmaWVzIGBjcHVfc2xhYnNfc2hvd2AgdG8ganVzdCBvdXRwdXQgJiMzNDswXG4mIzM0OyBpbnN0ZWFkIG9mIGNhbGxpbmcgYHNob3dfc2xhYl9vYmplY3RzYCB3aXRoIGBTT19DUFVgLgoKTXkgZ3V0IHRlbGxzIG1lIHRoaXMgYFNPX0NQVWAgdXNhZ2UgaXMgbm93IGdvbmUgZW50aXJlbHkuIEkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQuIEhtbSwgYWN0dWFsbHksIHdhaXQsIHRoZSBwYXRjaCAqcmVtb3ZlcyogdGhlIGBTT19DUFVgICpkZWZpbml0aW9uKiBpdHNlbGYhIE9rYXksIHRoYXQgbWFrZXMgdGhpcyBhIHNpbXBsZXIgY2hhbmdlIHRoYW4gSSBpbml0aWFsbHkgYW50aWNpcGF0ZWQuIEkgYW0gbG9va2luZyBmb3IgdGhlIHVzYWdlIG9mIGBzaG93X3NsYWJfb2JqZWN0c2AgYW5kIGl0cyBjb2RlLiBJJiMzOTtsbCBoZWFkIHN0cmFpZ2h0IHRvIGBtbS9zbHViLmNgIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGNsZWFudXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2hvd19zbGFiX29iamVjdHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9zbHViLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jPTg5OTI9ZW51bSBzbGFiX3N0YXRfdHlwZSB7XG4tLVxubW0vc2x1Yi5jLTkwMDMtXG5tbS9zbHViLmM6OTAwNDpzdGF0aWMgc3NpemVfdCBzaG93X3NsYWJfb2JqZWN0cyhzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbm1tL3NsdWIuYy05MDA1LVx0XHRcdFx0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBmbGFncylcbi0tXG5tbS9zbHViLmM9OTE4MT1zdGF0aWMgc3NpemVfdCBwYXJ0aWFsX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zilcbm1tL3NsdWIuYy05MTgyLXtcbm1tL3NsdWIuYzo5MTgzOlx0cmV0dXJuIHNob3dfc2xhYl9vYmplY3RzKHMsIGJ1ZiwgU09fUEFSVElBTCk7XG5tbS9zbHViLmMtOTE4NC19XG4tLVxubW0vc2x1Yi5jPTkxOTM9c3RhdGljIHNzaXplX3Qgb2JqZWN0c19wYXJ0aWFsX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zilcbm1tL3NsdWIuYy05MTk0LXtcbm1tL3NsdWIuYzo5MTk1Olx0cmV0dXJuIHNob3dfc2xhYl9vYmplY3RzKHMsIGJ1ZiwgU09fUEFSVElBTHxTT19PQkpFQ1RTKTtcbm1tL3NsdWIuYy05MTk2LX1cbi0tXG5tbS9zbHViLmM9OTI0MD1zdGF0aWMgc3NpemVfdCBzbGFic19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG5tbS9zbHViLmMtOTI0MS17XG5tbS9zbHViLmM6OTI0MjpcdHJldHVybiBzaG93X3NsYWJfb2JqZWN0cyhzLCBidWYsIFNPX0FMTCk7XG5tbS9zbHViLmMtOTI0My19XG4tLVxubW0vc2x1Yi5jPTkyNDY9c3RhdGljIHNzaXplX3QgdG90YWxfb2JqZWN0c19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG5tbS9zbHViLmMtOTI0Ny17XG5tbS9zbHViLmM6OTI0ODpcdHJldHVybiBzaG93X3NsYWJfb2JqZWN0cyhzLCBidWYsIFNPX0FMTHxTT19UT1RBTCk7XG5tbS9zbHViLmMtOTI0OS19XG4tLVxubW0vc2x1Yi5jPTkyNTI9c3RhdGljIHNzaXplX3Qgb2JqZWN0c19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG5tbS9zbHViLmMtOTI1My17XG5tbS9zbHViLmM6OTI1NDpcdHJldHVybiBzaG93X3NsYWJfb2JqZWN0cyhzLCBidWYsIFNPX0FMTHxTT19PQkpFQ1RTKTtcbm1tL3NsdWIuYy05MjU1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCBzdW1tYXJpemluZyB0aGUgcHJvbXB0LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyB0aGUgYHNob3dfc2xhYl9vYmplY3RzYCBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCB0aGUgaW5zdHJ1Y3Rpb24gaXMgdG8gZm9jdXMgb24gdGhlIGBzaG93X3NsYWJfb2JqZWN0c2AgaW1wbGVtZW50YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtZW50YWxseSBwYXJzZSB3aGF0IHRoZSBmdW5jdGlvbiBpcyAqc3VwcG9zZWQqIHRvIGRvLiBXaGF04oCZcyB0aGUgZXhwZWN0ZWQgaW5wdXQ/IFdoYXQgb3V0cHV0IGZvcm1hdCBhcmUgd2UgbG9va2luZyBmb3I/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwb3RlbnRpYWwgcHJvYmxlbSBhcmVhcyBiYXNlZCBvbiBteSBleHBlcmllbmNlIHdpdGggc2ltaWxhciBvYmplY3QgZGlzcGxheSByb3V0aW5lcz8gR2l2ZW4gbXkga25vd2xlZGdlLCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogaG93IGl0IGhhbmRsZXMgbWVtb3J5IG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSBpZiBpdCBkZWFscyB3aXRoIGxhcmdlIGRhdGFzZXRzOyB3aGF0IGtpbmQgb2Ygb3B0aW1pemF0aW9ucyBhcmUgaW1wbGVtZW50ZWQgZm9yIGRpZmZlcmVudCBzbGFiIHNpemVzIG9yIG9iamVjdCB0eXBlczsgYW5kIGhvdyBpdCBkZWFscyB3aXRoIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgaWYgdGhlcmUmIzM5O3MgYW55IG11bHRpdGhyZWFkaW5nIGludm9sdmVkLiBJJiMzOTttIGFsc28gZ29pbmcgdG8gY2hlY2sgZm9yIGVycm9yIGhhbmRsaW5nIC0gYXJlIHRoZXJlIHByb3BlciBjaGVja3MgZm9yIG51bGwgcG9pbnRlcnMgb3IgdW5leHBlY3RlZCBkYXRhPyBBcmUgZXhjZXB0aW9ucyBoYW5kbGVkIGdyYWNlZnVsbHk/IEl0JiMzOTtzIGFsbCBhYm91dCBlbnN1cmluZyB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMgcHJlZGljdGFibHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMuIE15IGV4cGVydCBleWVzIHdpbGwgYmUgY2hlY2tpbmcgZm9yIGVsZWdhbmNlLCBlZmZpY2llbmN5LCBhbmQgcm9idXN0bmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL3NsdWIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzkwMDA6XHQjZGVmaW5lIFNPX1BBUlRJQUxcdCgxIFx1MDAzY1x1MDAzYyBTTF9QQVJUSUFMKVxuOTAwMTpcdCNkZWZpbmUgU09fT0JKRUNUU1x0KDEgXHUwMDNjXHUwMDNjIFNMX09CSkVDVFMpXG45MDAyOlx0I2RlZmluZSBTT19UT1RBTFx0KDEgXHUwMDNjXHUwMDNjIFNMX1RPVEFMKVxuOTAwMzpcdFxuOTAwNDpcdHN0YXRpYyBzc2l6ZV90IHNob3dfc2xhYl9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuOTAwNTpcdFx0XHRcdFx0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBmbGFncylcbjkwMDY6XHR7XG45MDA3Olx0XHR1bnNpZ25lZCBsb25nIHRvdGFsID0gMDtcbjkwMDg6XHRcdGludCBub2RlO1xuOTAwOTpcdFx0aW50IHg7XG45MDEwOlx0XHR1bnNpZ25lZCBsb25nICpub2RlcztcbjkwMTE6XHRcdGludCBsZW4gPSAwO1xuOTAxMjpcdFxuOTAxMzpcdFx0bm9kZXMgPSBrY2FsbG9jKG5yX25vZGVfaWRzLCBzaXplb2YodW5zaWduZWQgbG9uZyksIEdGUF9LRVJORUwpO1xuOTAxNDpcdFx0aWYgKCFub2RlcylcbjkwMTU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG45MDE2Olx0XG45MDE3Olx0XHQvKlxuOTAxODpcdFx0ICogSXQgaXMgaW1wb3NzaWJsZSB0byB0YWtlIFwmIzM0O21lbV9ob3RwbHVnX2xvY2tcJiMzNDsgaGVyZSB3aXRoIFwmIzM0O2tlcm5mc19tdXRleFwmIzM0O1xuOTAxOTpcdFx0ICogYWxyZWFkeSBoZWxkIHdoaWNoIHdpbGwgY29uZmxpY3Qgd2l0aCBhbiBleGlzdGluZyBsb2NrIG9yZGVyOlxuOTAyMDpcdFx0ICpcbjkwMjE6XHRcdCAqIG1lbV9ob3RwbHVnX2xvY2stXHUwMDNlc2xhYl9tdXRleC1cdTAwM2VrZXJuZnNfbXV0ZXhcbjkwMjI6XHRcdCAqXG45MDIzOlx0XHQgKiBXZSBkb24mIzM5O3QgcmVhbGx5IG5lZWQgbWVtX2hvdHBsdWdfbG9jayAodG8gaG9sZCBvZmZcbjkwMjQ6XHRcdCAqIHNsYWJfbWVtX2dvaW5nX29mZmxpbmVfY2FsbGJhY2spIGhlcmUgYmVjYXVzZSBzbGFiJiMzOTtzIG1lbW9yeSBob3RcbjkwMjU6XHRcdCAqIHVucGx1ZyBjb2RlIGRvZXNuJiMzOTt0IGRlc3Ryb3kgdGhlIGttZW1fY2FjaGUtXHUwMDNlbm9kZVtdIGRhdGEuXG45MDI2Olx0XHQgKi9cbjkwMjc6XHRcbjkwMjg6XHQjaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbjkwMjk6XHRcdGlmIChmbGFncyBcdTAwMjYgU09fQUxMKSB7XG45MDMwOlx0XHRcdHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm47XG45MDMxOlx0XG45MDMyOlx0XHRcdGZvcl9lYWNoX2ttZW1fY2FjaGVfbm9kZShzLCBub2RlLCBuKSB7XG45MDMzOlx0XG45MDM0Olx0XHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBTT19UT1RBTClcbjkwMzU6XHRcdFx0XHRcdHggPSBub2RlX25yX29ianMobik7XG45MDM2Olx0XHRcdFx0ZWxzZSBpZiAoZmxhZ3MgXHUwMDI2IFNPX09CSkVDVFMpXG45MDM3Olx0XHRcdFx0XHR4ID0gbm9kZV9ucl9vYmpzKG4pIC0gY291bnRfcGFydGlhbChuLCBjb3VudF9mcmVlKTtcbjkwMzg6XHRcdFx0XHRlbHNlXG45MDM5Olx0XHRcdFx0XHR4ID0gbm9kZV9ucl9zbGFicyhuKTtcbjkwNDA6XHRcdFx0XHR0b3RhbCAmIzQzOz0geDtcbjkwNDE6XHRcdFx0XHRub2Rlc1tub2RlXSAmIzQzOz0geDtcbjkwNDI6XHRcdFx0fVxuOTA0MzpcdFxuOTA0NDpcdFx0fSBlbHNlXG45MDQ1Olx0I2VuZGlmXG45MDQ2Olx0XHRpZiAoZmxhZ3MgXHUwMDI2IFNPX1BBUlRJQUwpIHtcbjkwNDc6XHRcdFx0c3RydWN0IGttZW1fY2FjaGVfbm9kZSAqbjtcbjkwNDg6XHRcbjkwNDk6XHRcdFx0Zm9yX2VhY2hfa21lbV9jYWNoZV9ub2RlKHMsIG5vZGUsIG4pIHtcbjkwNTA6XHRcdFx0XHRpZiAoZmxhZ3MgXHUwMDI2IFNPX1RPVEFMKVxuOTA1MTpcdFx0XHRcdFx0eCA9IGNvdW50X3BhcnRpYWwobiwgY291bnRfdG90YWwpO1xuOTA1MjpcdFx0XHRcdGVsc2UgaWYgKGZsYWdzIFx1MDAyNiBTT19PQkpFQ1RTKVxuOTA1MzpcdFx0XHRcdFx0eCA9IGNvdW50X3BhcnRpYWwobiwgY291bnRfaW51c2UpO1xuOTA1NDpcdFx0XHRcdGVsc2VcbjkwNTU6XHRcdFx0XHRcdHggPSBuLVx1MDAzZW5yX3BhcnRpYWw7XG45MDU2Olx0XHRcdFx0dG90YWwgJiM0Mzs9IHg7XG45MDU3Olx0XHRcdFx0bm9kZXNbbm9kZV0gJiM0Mzs9IHg7XG45MDU4Olx0XHRcdH1cbjkwNTk6XHRcdH1cbjkwNjA6XHRcbjkwNjE6XHRcdGxlbiAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXCYjMzQ7JWx1XCYjMzQ7LCB0b3RhbCk7XG45MDYyOlx0I2lmZGVmIENPTkZJR19OVU1BXG45MDYzOlx0XHRmb3IgKG5vZGUgPSAwOyBub2RlIFx1MDAzYyBucl9ub2RlX2lkczsgbm9kZSYjNDM7JiM0MzspIHtcbjkwNjQ6XHRcdFx0aWYgKG5vZGVzW25vZGVdKVxuOTA2NTpcdFx0XHRcdGxlbiAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXCYjMzQ7IE4lZD0lbHVcJiMzNDssXG45MDY2Olx0XHRcdFx0XHRcdCAgICAgbm9kZSwgbm9kZXNbbm9kZV0pO1xuOTA2NzpcdFx0fVxuOTA2ODpcdCNlbmRpZlxuOTA2OTpcdFx0bGVuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbGVuLCBcJiMzNDtcXG5cJiMzNDspO1xuOTA3MDpcdFx0a2ZyZWUobm9kZXMpO1xuOTA3MTpcdFxuOTA3MjpcdFx0cmV0dXJuIGxlbjtcbjkwNzM6XHR9XG45MDc0Olx0XG45MDc1Olx0I2RlZmluZSB0b19zbGFiX2F0dHIobikgY29udGFpbmVyX29mX2NvbnN0KG4sIHN0cnVjdCBzbGFiX2F0dHJpYnV0ZSwgYXR0cilcbjkwNzY6XHQjZGVmaW5lIHRvX3NsYWIobikgY29udGFpbmVyX29mKG4sIHN0cnVjdCBrbWVtX2NhY2hlLCBrb2JqKVxuOTA3NzpcdFxuOTA3ODpcdHN0cnVjdCBzbGFiX2F0dHJpYnV0ZSB7XG45MDc5Olx0XHRzdHJ1Y3QgYXR0cmlidXRlIGF0dHI7XG45MDgwOlx0XHRzc2l6ZV90ICgqc2hvdykoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zik7XG45MDgxOlx0XHRzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCBjaGFyICp4LCBzaXplX3QgY291bnQpO1xuOTA4MjpcdH07XG45MDgzOlx0XG45MDg0Olx0I2RlZmluZSBTTEFCX0FUVFJfUk8oX25hbWUpIFxcXG45MDg1Olx0XHRzdGF0aWMgY29uc3Qgc3RydWN0IHNsYWJfYXR0cmlidXRlIF9uYW1lIyNfYXR0ciA9IF9fQVRUUl9ST19NT0RFKF9uYW1lLCAwNDAwKVxuOTA4NjpcdFxuOTA4NzpcdCNkZWZpbmUgU0xBQl9BVFRSKF9uYW1lKSBcXFxuOTA4ODpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBzbGFiX2F0dHJpYnV0ZSBfbmFtZSMjX2F0dHIgPSBfX0FUVFJfUldfTU9ERShfbmFtZSwgMDYwMClcbjkwODk6XHRcbjkwOTA6XHRzdGF0aWMgc3NpemVfdCBzbGFiX3NpemVfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuOTA5MTpcdHtcbjkwOTI6XHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7JXVcXG5cJiMzNDssIHMtXHUwMDNlc2l6ZSk7XG45MDkzOlx0fVxuOTA5NDpcdFNMQUJfQVRUUl9STyhzbGFiX3NpemUpO1xuOTA5NTpcdFxuOTA5NjpcdHN0YXRpYyBzc2l6ZV90IGFsaWduX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcbjkwOTc6XHR7XG45MDk4Olx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBzLVx1MDAzZWFsaWduKTtcbjkwOTk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc3NwoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0LCBpdCBsb29rcyBsaWtlIGBjcHVfc2xhYnNfc2hvd2AgaXMgYmVpbmcgbW9kaWZpZWQgdG8gc2ltcGx5IHJldHVybiAmIzM0OzBcbiYjMzQ7LiBJbnRlcmVzdGluZy4gTm93LCB0aGlzIGlzIGEgc3lzZnMgYXR0cmlidXRlIGZvciBgY3B1X3NsYWJzYCBpbiB0aGUgU0xVQiBhbGxvY2F0b3IuIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBhIHJlYWQtb25seSBzeXNmcyBmaWxlLiBTbywgd2UmIzM5O3JlIG5vdCB0YWxraW5nIGFib3V0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUga2VybmVsIGxvZ2ljIGhlcmUgdGhhdCB3b3VsZCB3YXJyYW50IHRoZSB0aW1lIGFuZCBlZmZvcnQgb2YgZnV6emluZy4gSXQmIzM5O3MganVzdCBhIHZhbHVlIGJlaW5nIHJlcG9ydGVkIHRocm91Z2ggc3lzZnMuIEl0IGZlZWxzIGxpa2UgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBjb25jZXJuIGhlcmU7IEkgYmV0IGBTT19DUFVgIHdhcyByZW1vdmVkIGF0IHNvbWUgcG9pbnQsIGFuZCB0aGlzIGZpbGUgaXMgYmVpbmcgbWFpbnRhaW5lZCB0byBhdm9pZCBicmVha2luZyB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIHRoYXQgbWlnaHQgYmUgZXhwZWN0aW5nIGl0LCBidXQgdGhleSYjMzk7cmUganVzdCByZXR1cm5pbmcgYSBmaXhlZCB2YWx1ZSBub3cuIEl0JiMzOTtzIG5vdCBhIGNoYW5nZSB0aGF0IGFkZHMgYW55IG5ldyBhdHRhY2sgc3VyZmFjZSBhbmQgaXQgaXNuJiMzOTt0IHdvcnRoIGRlZGljYXRpbmcgcmVzb3VyY2VzIHRvd2FyZHMgYW55IGZ1enppbmcgZWZmb3J0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBzeXNmcyBhdHRyaWJ1dGUgKGBjcHVfc2xhYnNgKSB0byByZXR1cm4gYSBoYXJkY29kZWQgXCYjMzQ7MFxcblwmIzM0OyBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHRoZSB2YWx1ZSwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdW51c2VkIG1hY3Jvcy4gVGhpcyBpcyBhIHB1cmVseSBpbmZvcm1hdGlvbmFsL3N5c2ZzIGNoYW5nZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljIG9yIGV4ZWN1dGlvbiBmbG93IHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgc3lzZnMgYXR0cmlidXRlIChgY3B1X3NsYWJzYCkgdG8gcmV0dXJuIGEgaGFyZGNvZGVkIFwmIzM0OzBcXG5cJiMzNDsgaW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHVudXNlZCBtYWNyb3MuIFRoaXMgaXMgYSBwdXJlbHkgaW5mb3JtYXRpb25hbC9zeXNmcyBjaGFuZ2UgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjA5OjMzLjgyMjIzNDI4M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjg1MTA3ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgc3lzZnMgYXR0cmlidXRlIChgY3B1X3NsYWJzYCkgdG8gcmV0dXJuIGEgaGFyZGNvZGVkIFxcXCIwXFxcXG5cXFwiIGluc3RlYWQgb2YgY2FsY3VsYXRpbmcgdGhlIHZhbHVlLCBhbmQgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyB1bnVzZWQgbWFjcm9zLiBUaGlzIGlzIGEgcHVyZWx5IGluZm9ybWF0aW9uYWwvc3lzZnMgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBrZXJuZWwgbG9naWMgb3IgZXhlY3V0aW9uIGZsb3cgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjA5OjMzLjgyMjIzODE0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM5ODYwODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWE1NTM3ODkzZjdjNTBmOGQzNGM3NDhkOWM5MmFiY2IwM2E4MmIzZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDIyOjA5OjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xcbmluZGV4IDllYzc3NGRjNzAwOTY5Li5mMmViNjBjZTBkMjMwMiAxMDA2NDRcXG4tLS0gYS9tbS9zbHViLmNcXG4rKysgYi9tbS9zbHViLmNcXG5AQCAtODk5MiwxNCArODk5MiwxMiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3NsYWIoc3RydWN0IGxvY190cmFjayAqdCwgc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuIGVudW0gc2xhYl9zdGF0X3R5cGUge1xcbiBcXHRTTF9BTEwsXFx0XFx0XFx0LyogQWxsIHNsYWJzICovXFxuIFxcdFNMX1BBUlRJQUwsXFx0XFx0LyogT25seSBwYXJ0aWFsbHkgYWxsb2NhdGVkIHNsYWJzICovXFxuLVxcdFNMX0NQVSxcXHRcXHRcXHQvKiBPbmx5IHNsYWJzIHVzZWQgZm9yIGNwdSBjYWNoZXMgKi9cXG4gXFx0U0xfT0JKRUNUUyxcXHRcXHQvKiBEZXRlcm1pbmUgYWxsb2NhdGVkIG9iamVjdHMgbm90IHNsYWJzICovXFxuIFxcdFNMX1RPVEFMXFx0XFx0LyogRGV0ZXJtaW5lIG9iamVjdCBjYXBhY2l0eSBub3Qgc2xhYnMgKi9cXG4gfTtcXG4gXFxuICNkZWZpbmUgU09fQUxMXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgU0xfQUxMKVxcbiAjZGVmaW5lIFNPX1BBUlRJQUxcXHQoMSBcXHUwMDNjXFx1MDAzYyBTTF9QQVJUSUFMKVxcbi0jZGVmaW5lIFNPX0NQVVxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIFNMX0NQVSlcXG4gI2RlZmluZSBTT19PQkpFQ1RTXFx0KDEgXFx1MDAzY1xcdTAwM2MgU0xfT0JKRUNUUylcXG4gI2RlZmluZSBTT19UT1RBTFxcdCgxIFxcdTAwM2NcXHUwMDNjIFNMX1RPVEFMKVxcbiBcXG5AQCAtOTE4OCw3ICs5MTg2LDcgQEAgU0xBQl9BVFRSX1JPKHBhcnRpYWwpO1xcbiBcXG4gc3RhdGljIHNzaXplX3QgY3B1X3NsYWJzX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG4ge1xcbi1cXHRyZXR1cm4gc2hvd19zbGFiX29iamVjdHMocywgYnVmLCBTT19DUFUpO1xcbitcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIwXFxcXG5cXFwiKTtcXG4gfVxcbiBTTEFCX0FUVFJfUk8oY3B1X3NsYWJzKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjA5OjM0LjI2MzAwNDg3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIyNDQzMzE5NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBzeXNmcyBhdHRyaWJ1dGUgKGBjcHVfc2xhYnNgKSB0byByZXR1cm4gYSBoYXJkY29kZWQgXFxcIjBcXFxcblxcXCIgaW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHVudXNlZCBtYWNyb3MuIFRoaXMgaXMgYSBwdXJlbHkgaW5mb3JtYXRpb25hbC9zeXNmcyBjaGFuZ2UgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YTU1Mzc4OTNmN2M1MGY4ZDM0Yzc0OGQ5YzkyYWJjYjAzYTgyYjNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAyMjowOTozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xuaW5kZXggOWVjNzc0ZGM3MDA5NjkuLmYyZWI2MGNlMGQyMzAyIDEwMDY0NFxuLS0tIGEvbW0vc2x1Yi5jXG4rKysgYi9tbS9zbHViLmNcbkBAIC04OTkyLDE0ICs4OTkyLDEyIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nfc2xhYihzdHJ1Y3QgbG9jX3RyYWNrICp0LCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbiBlbnVtIHNsYWJfc3RhdF90eXBlIHtcbiBcdFNMX0FMTCxcdFx0XHQvKiBBbGwgc2xhYnMgKi9cbiBcdFNMX1BBUlRJQUwsXHRcdC8qIE9ubHkgcGFydGlhbGx5IGFsbG9jYXRlZCBzbGFicyAqL1xuLVx0U0xfQ1BVLFx0XHRcdC8qIE9ubHkgc2xhYnMgdXNlZCBmb3IgY3B1IGNhY2hlcyAqL1xuIFx0U0xfT0JKRUNUUyxcdFx0LyogRGV0ZXJtaW5lIGFsbG9jYXRlZCBvYmplY3RzIG5vdCBzbGFicyAqL1xuIFx0U0xfVE9UQUxcdFx0LyogRGV0ZXJtaW5lIG9iamVjdCBjYXBhY2l0eSBub3Qgc2xhYnMgKi9cbiB9O1xuIFxuICNkZWZpbmUgU09fQUxMXHRcdCgxIFx1MDAzY1x1MDAzYyBTTF9BTEwpXG4gI2RlZmluZSBTT19QQVJUSUFMXHQoMSBcdTAwM2NcdTAwM2MgU0xfUEFSVElBTClcbi0jZGVmaW5lIFNPX0NQVVx0XHQoMSBcdTAwM2NcdTAwM2MgU0xfQ1BVKVxuICNkZWZpbmUgU09fT0JKRUNUU1x0KDEgXHUwMDNjXHUwMDNjIFNMX09CSkVDVFMpXG4gI2RlZmluZSBTT19UT1RBTFx0KDEgXHUwMDNjXHUwMDNjIFNMX1RPVEFMKVxuIFxuQEAgLTkxODgsNyArOTE4Niw3IEBAIFNMQUJfQVRUUl9STyhwYXJ0aWFsKTtcbiBcbiBzdGF0aWMgc3NpemVfdCBjcHVfc2xhYnNfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuIHtcbi1cdHJldHVybiBzaG93X3NsYWJfb2JqZWN0cyhzLCBidWYsIFNPX0NQVSk7XG4rXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwiMFxcblwiKTtcbiB9XG4gU0xBQl9BVFRSX1JPKGNwdV9zbGFicyk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjowOTozNC4yNjMwMDY0NDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI0NDQyODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0xVQiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG1tL3NsdWIuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiByZW1vdmluZyBgU0xfQ1BVYCBhbmQgYFNPX0NQVWAgZnJvbSB0aGUgYGVudW0gc2xhYl9zdGF0X3R5cGVgIGFuZCBpdHMgYXNzb2NpYXRlZCBtYWNyb3MuIFRoaXMgbG9va3MgbGlrZSBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgY2xlYW51cCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoZSBwYXRjaCBhbHNvIHNpbXBsaWZpZXMgYGNwdV9zbGFic19zaG93YCB0byBqdXN0IG91dHB1dCBcIjBcXG5cIiBpbnN0ZWFkIG9mIGNhbGxpbmcgYHNob3dfc2xhYl9vYmplY3RzYCB3aXRoIGBTT19DUFVgLlxuXG5NeSBndXQgdGVsbHMgbWUgdGhpcyBgU09fQ1BVYCB1c2FnZSBpcyBub3cgZ29uZSBlbnRpcmVseS4gSSdsbCBxdWlja2x5IHZlcmlmeSB0aGF0LiBIbW0sIGFjdHVhbGx5LCB3YWl0LCB0aGUgcGF0Y2ggKnJlbW92ZXMqIHRoZSBgU09fQ1BVYCAqZGVmaW5pdGlvbiogaXRzZWxmISBPa2F5LCB0aGF0IG1ha2VzIHRoaXMgYSBzaW1wbGVyIGNoYW5nZSB0aGFuIEkgaW5pdGlhbGx5IGFudGljaXBhdGVkLiBJIGFtIGxvb2tpbmcgZm9yIHRoZSB1c2FnZSBvZiBgc2hvd19zbGFiX29iamVjdHNgIGFuZCBpdHMgY29kZS4gSSdsbCBoZWFkIHN0cmFpZ2h0IHRvIGBtbS9zbHViLmNgIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGNsZWFudXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjowOTozOS4wODc0NTEzNTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU5MzEyMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2hvd19zbGFiX29iamVjdHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vc2x1Yi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3NsdWIuYz04OTkyPWVudW0gc2xhYl9zdGF0X3R5cGUge1xcbi0tXFxubW0vc2x1Yi5jLTkwMDMtXFxubW0vc2x1Yi5jOjkwMDQ6c3RhdGljIHNzaXplX3Qgc2hvd19zbGFiX29iamVjdHMoc3RydWN0IGttZW1fY2FjaGUgKnMsXFxubW0vc2x1Yi5jLTkwMDUtXFx0XFx0XFx0XFx0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBmbGFncylcXG4tLVxcbm1tL3NsdWIuYz05MTgxPXN0YXRpYyBzc2l6ZV90IHBhcnRpYWxfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbm1tL3NsdWIuYy05MTgyLXtcXG5tbS9zbHViLmM6OTE4MzpcXHRyZXR1cm4gc2hvd19zbGFiX29iamVjdHMocywgYnVmLCBTT19QQVJUSUFMKTtcXG5tbS9zbHViLmMtOTE4NC19XFxuLS1cXG5tbS9zbHViLmM9OTE5Mz1zdGF0aWMgc3NpemVfdCBvYmplY3RzX3BhcnRpYWxfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbm1tL3NsdWIuYy05MTk0LXtcXG5tbS9zbHViLmM6OTE5NTpcXHRyZXR1cm4gc2hvd19zbGFiX29iamVjdHMocywgYnVmLCBTT19QQVJUSUFMfFNPX09CSkVDVFMpO1xcbm1tL3NsdWIuYy05MTk2LX1cXG4tLVxcbm1tL3NsdWIuYz05MjQwPXN0YXRpYyBzc2l6ZV90IHNsYWJzX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG5tbS9zbHViLmMtOTI0MS17XFxubW0vc2x1Yi5jOjkyNDI6XFx0cmV0dXJuIHNob3dfc2xhYl9vYmplY3RzKHMsIGJ1ZiwgU09fQUxMKTtcXG5tbS9zbHViLmMtOTI0My19XFxuLS1cXG5tbS9zbHViLmM9OTI0Nj1zdGF0aWMgc3NpemVfdCB0b3RhbF9vYmplY3RzX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG5tbS9zbHViLmMtOTI0Ny17XFxubW0vc2x1Yi5jOjkyNDg6XFx0cmV0dXJuIHNob3dfc2xhYl9vYmplY3RzKHMsIGJ1ZiwgU09fQUxMfFNPX1RPVEFMKTtcXG5tbS9zbHViLmMtOTI0OS19XFxuLS1cXG5tbS9zbHViLmM9OTI1Mj1zdGF0aWMgc3NpemVfdCBvYmplY3RzX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG5tbS9zbHViLmMtOTI1My17XFxubW0vc2x1Yi5jOjkyNTQ6XFx0cmV0dXJuIHNob3dfc2xhYl9vYmplY3RzKHMsIGJ1ZiwgU09fQUxMfFNPX09CSkVDVFMpO1xcbm1tL3NsdWIuYy05MjU1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjI6MDk6MzkuMTQzMzkyMzJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDgxMTgwNzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggc3VtbWFyaXppbmcgdGhlIHByb21wdCwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyB0aGUgYHNob3dfc2xhYl9vYmplY3RzYCBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBpbnN0cnVjdGlvbiBpcyB0byBmb2N1cyBvbiB0aGUgYHNob3dfc2xhYl9vYmplY3RzYCBpbXBsZW1lbnRhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1lbnRhbGx5IHBhcnNlIHdoYXQgdGhlIGZ1bmN0aW9uIGlzICpzdXBwb3NlZCogdG8gZG8uIFdoYXTigJlzIHRoZSBleHBlY3RlZCBpbnB1dD8gV2hhdCBvdXRwdXQgZm9ybWF0IGFyZSB3ZSBsb29raW5nIGZvcj8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIHBvdGVudGlhbCBwcm9ibGVtIGFyZWFzIGJhc2VkIG9uIG15IGV4cGVyaWVuY2Ugd2l0aCBzaW1pbGFyIG9iamVjdCBkaXNwbGF5IHJvdXRpbmVzPyBHaXZlbiBteSBrbm93bGVkZ2UsIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IGhvdyBpdCBoYW5kbGVzIG1lbW9yeSBtYW5hZ2VtZW50LCBwYXJ0aWN1bGFybHkgaWYgaXQgZGVhbHMgd2l0aCBsYXJnZSBkYXRhc2V0czsgd2hhdCBraW5kIG9mIG9wdGltaXphdGlvbnMgYXJlIGltcGxlbWVudGVkIGZvciBkaWZmZXJlbnQgc2xhYiBzaXplcyBvciBvYmplY3QgdHlwZXM7IGFuZCBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzIGlmIHRoZXJlJ3MgYW55IG11bHRpdGhyZWFkaW5nIGludm9sdmVkLiBJJ20gYWxzbyBnb2luZyB0byBjaGVjayBmb3IgZXJyb3IgaGFuZGxpbmcgLSBhcmUgdGhlcmUgcHJvcGVyIGNoZWNrcyBmb3IgbnVsbCBwb2ludGVycyBvciB1bmV4cGVjdGVkIGRhdGE/IEFyZSBleGNlcHRpb25zIGhhbmRsZWQgZ3JhY2VmdWxseT8gSXQncyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIHByZWRpY3RhYmx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMuIE15IGV4cGVydCBleWVzIHdpbGwgYmUgY2hlY2tpbmcgZm9yIGVsZWdhbmNlLCBlZmZpY2llbmN5LCBhbmQgcm9idXN0bmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjA5OjQyLjIyNDU3NTIzOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MjA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9zbHViLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTAwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjkwMDA6XFx0I2RlZmluZSBTT19QQVJUSUFMXFx0KDEgXFx1MDAzY1xcdTAwM2MgU0xfUEFSVElBTClcXG45MDAxOlxcdCNkZWZpbmUgU09fT0JKRUNUU1xcdCgxIFxcdTAwM2NcXHUwMDNjIFNMX09CSkVDVFMpXFxuOTAwMjpcXHQjZGVmaW5lIFNPX1RPVEFMXFx0KDEgXFx1MDAzY1xcdTAwM2MgU0xfVE9UQUwpXFxuOTAwMzpcXHRcXG45MDA0OlxcdHN0YXRpYyBzc2l6ZV90IHNob3dfc2xhYl9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbjkwMDU6XFx0XFx0XFx0XFx0XFx0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBmbGFncylcXG45MDA2OlxcdHtcXG45MDA3OlxcdFxcdHVuc2lnbmVkIGxvbmcgdG90YWwgPSAwO1xcbjkwMDg6XFx0XFx0aW50IG5vZGU7XFxuOTAwOTpcXHRcXHRpbnQgeDtcXG45MDEwOlxcdFxcdHVuc2lnbmVkIGxvbmcgKm5vZGVzO1xcbjkwMTE6XFx0XFx0aW50IGxlbiA9IDA7XFxuOTAxMjpcXHRcXG45MDEzOlxcdFxcdG5vZGVzID0ga2NhbGxvYyhucl9ub2RlX2lkcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLCBHRlBfS0VSTkVMKTtcXG45MDE0OlxcdFxcdGlmICghbm9kZXMpXFxuOTAxNTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG45MDE2OlxcdFxcbjkwMTc6XFx0XFx0LypcXG45MDE4OlxcdFxcdCAqIEl0IGlzIGltcG9zc2libGUgdG8gdGFrZSBcXFwibWVtX2hvdHBsdWdfbG9ja1xcXCIgaGVyZSB3aXRoIFxcXCJrZXJuZnNfbXV0ZXhcXFwiXFxuOTAxOTpcXHRcXHQgKiBhbHJlYWR5IGhlbGQgd2hpY2ggd2lsbCBjb25mbGljdCB3aXRoIGFuIGV4aXN0aW5nIGxvY2sgb3JkZXI6XFxuOTAyMDpcXHRcXHQgKlxcbjkwMjE6XFx0XFx0ICogbWVtX2hvdHBsdWdfbG9jay1cXHUwMDNlc2xhYl9tdXRleC1cXHUwMDNla2VybmZzX211dGV4XFxuOTAyMjpcXHRcXHQgKlxcbjkwMjM6XFx0XFx0ICogV2UgZG9uJ3QgcmVhbGx5IG5lZWQgbWVtX2hvdHBsdWdfbG9jayAodG8gaG9sZCBvZmZcXG45MDI0OlxcdFxcdCAqIHNsYWJfbWVtX2dvaW5nX29mZmxpbmVfY2FsbGJhY2spIGhlcmUgYmVjYXVzZSBzbGFiJ3MgbWVtb3J5IGhvdFxcbjkwMjU6XFx0XFx0ICogdW5wbHVnIGNvZGUgZG9lc24ndCBkZXN0cm95IHRoZSBrbWVtX2NhY2hlLVxcdTAwM2Vub2RlW10gZGF0YS5cXG45MDI2OlxcdFxcdCAqL1xcbjkwMjc6XFx0XFxuOTAyODpcXHQjaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG45MDI5OlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IFNPX0FMTCkge1xcbjkwMzA6XFx0XFx0XFx0c3RydWN0IGttZW1fY2FjaGVfbm9kZSAqbjtcXG45MDMxOlxcdFxcbjkwMzI6XFx0XFx0XFx0Zm9yX2VhY2hfa21lbV9jYWNoZV9ub2RlKHMsIG5vZGUsIG4pIHtcXG45MDMzOlxcdFxcbjkwMzQ6XFx0XFx0XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgU09fVE9UQUwpXFxuOTAzNTpcXHRcXHRcXHRcXHRcXHR4ID0gbm9kZV9ucl9vYmpzKG4pO1xcbjkwMzY6XFx0XFx0XFx0XFx0ZWxzZSBpZiAoZmxhZ3MgXFx1MDAyNiBTT19PQkpFQ1RTKVxcbjkwMzc6XFx0XFx0XFx0XFx0XFx0eCA9IG5vZGVfbnJfb2JqcyhuKSAtIGNvdW50X3BhcnRpYWwobiwgY291bnRfZnJlZSk7XFxuOTAzODpcXHRcXHRcXHRcXHRlbHNlXFxuOTAzOTpcXHRcXHRcXHRcXHRcXHR4ID0gbm9kZV9ucl9zbGFicyhuKTtcXG45MDQwOlxcdFxcdFxcdFxcdHRvdGFsICs9IHg7XFxuOTA0MTpcXHRcXHRcXHRcXHRub2Rlc1tub2RlXSArPSB4O1xcbjkwNDI6XFx0XFx0XFx0fVxcbjkwNDM6XFx0XFxuOTA0NDpcXHRcXHR9IGVsc2VcXG45MDQ1OlxcdCNlbmRpZlxcbjkwNDY6XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgU09fUEFSVElBTCkge1xcbjkwNDc6XFx0XFx0XFx0c3RydWN0IGttZW1fY2FjaGVfbm9kZSAqbjtcXG45MDQ4OlxcdFxcbjkwNDk6XFx0XFx0XFx0Zm9yX2VhY2hfa21lbV9jYWNoZV9ub2RlKHMsIG5vZGUsIG4pIHtcXG45MDUwOlxcdFxcdFxcdFxcdGlmIChmbGFncyBcXHUwMDI2IFNPX1RPVEFMKVxcbjkwNTE6XFx0XFx0XFx0XFx0XFx0eCA9IGNvdW50X3BhcnRpYWwobiwgY291bnRfdG90YWwpO1xcbjkwNTI6XFx0XFx0XFx0XFx0ZWxzZSBpZiAoZmxhZ3MgXFx1MDAyNiBTT19PQkpFQ1RTKVxcbjkwNTM6XFx0XFx0XFx0XFx0XFx0eCA9IGNvdW50X3BhcnRpYWwobiwgY291bnRfaW51c2UpO1xcbjkwNTQ6XFx0XFx0XFx0XFx0ZWxzZVxcbjkwNTU6XFx0XFx0XFx0XFx0XFx0eCA9IG4tXFx1MDAzZW5yX3BhcnRpYWw7XFxuOTA1NjpcXHRcXHRcXHRcXHR0b3RhbCArPSB4O1xcbjkwNTc6XFx0XFx0XFx0XFx0bm9kZXNbbm9kZV0gKz0geDtcXG45MDU4OlxcdFxcdFxcdH1cXG45MDU5OlxcdFxcdH1cXG45MDYwOlxcdFxcbjkwNjE6XFx0XFx0bGVuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBsZW4sIFxcXCIlbHVcXFwiLCB0b3RhbCk7XFxuOTA2MjpcXHQjaWZkZWYgQ09ORklHX05VTUFcXG45MDYzOlxcdFxcdGZvciAobm9kZSA9IDA7IG5vZGUgXFx1MDAzYyBucl9ub2RlX2lkczsgbm9kZSsrKSB7XFxuOTA2NDpcXHRcXHRcXHRpZiAobm9kZXNbbm9kZV0pXFxuOTA2NTpcXHRcXHRcXHRcXHRsZW4gKz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXFxcIiBOJWQ9JWx1XFxcIixcXG45MDY2OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgbm9kZSwgbm9kZXNbbm9kZV0pO1xcbjkwNjc6XFx0XFx0fVxcbjkwNjg6XFx0I2VuZGlmXFxuOTA2OTpcXHRcXHRsZW4gKz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXFxcIlxcXFxuXFxcIik7XFxuOTA3MDpcXHRcXHRrZnJlZShub2Rlcyk7XFxuOTA3MTpcXHRcXG45MDcyOlxcdFxcdHJldHVybiBsZW47XFxuOTA3MzpcXHR9XFxuOTA3NDpcXHRcXG45MDc1OlxcdCNkZWZpbmUgdG9fc2xhYl9hdHRyKG4pIGNvbnRhaW5lcl9vZl9jb25zdChuLCBzdHJ1Y3Qgc2xhYl9hdHRyaWJ1dGUsIGF0dHIpXFxuOTA3NjpcXHQjZGVmaW5lIHRvX3NsYWIobikgY29udGFpbmVyX29mKG4sIHN0cnVjdCBrbWVtX2NhY2hlLCBrb2JqKVxcbjkwNzc6XFx0XFxuOTA3ODpcXHRzdHJ1Y3Qgc2xhYl9hdHRyaWJ1dGUge1xcbjkwNzk6XFx0XFx0c3RydWN0IGF0dHJpYnV0ZSBhdHRyO1xcbjkwODA6XFx0XFx0c3NpemVfdCAoKnNob3cpKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpO1xcbjkwODE6XFx0XFx0c3NpemVfdCAoKnN0b3JlKShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY29uc3QgY2hhciAqeCwgc2l6ZV90IGNvdW50KTtcXG45MDgyOlxcdH07XFxuOTA4MzpcXHRcXG45MDg0OlxcdCNkZWZpbmUgU0xBQl9BVFRSX1JPKF9uYW1lKSBcXFxcXFxuOTA4NTpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHNsYWJfYXR0cmlidXRlIF9uYW1lIyNfYXR0ciA9IF9fQVRUUl9ST19NT0RFKF9uYW1lLCAwNDAwKVxcbjkwODY6XFx0XFxuOTA4NzpcXHQjZGVmaW5lIFNMQUJfQVRUUihfbmFtZSkgXFxcXFxcbjkwODg6XFx0XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBzbGFiX2F0dHJpYnV0ZSBfbmFtZSMjX2F0dHIgPSBfX0FUVFJfUldfTU9ERShfbmFtZSwgMDYwMClcXG45MDg5OlxcdFxcbjkwOTA6XFx0c3RhdGljIHNzaXplX3Qgc2xhYl9zaXplX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG45MDkxOlxcdHtcXG45MDkyOlxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIiV1XFxcXG5cXFwiLCBzLVxcdTAwM2VzaXplKTtcXG45MDkzOlxcdH1cXG45MDk0OlxcdFNMQUJfQVRUUl9STyhzbGFiX3NpemUpO1xcbjkwOTU6XFx0XFxuOTA5NjpcXHRzdGF0aWMgc3NpemVfdCBhbGlnbl9zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXFxuOTA5NzpcXHR7XFxuOTA5ODpcXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIldVxcXFxuXFxcIiwgcy1cXHUwMDNlYWxpZ24pO1xcbjkwOTk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjowOTo0Mi4yMjQ5Mjg4MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjgyMzgyMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIHBhdGNoIEknbSBsb29raW5nIGF0LCBpdCBsb29rcyBsaWtlIGBjcHVfc2xhYnNfc2hvd2AgaXMgYmVpbmcgbW9kaWZpZWQgdG8gc2ltcGx5IHJldHVybiBcIjBcXG5cIi4gSW50ZXJlc3RpbmcuIE5vdywgdGhpcyBpcyBhIHN5c2ZzIGF0dHJpYnV0ZSBmb3IgYGNwdV9zbGFic2AgaW4gdGhlIFNMVUIgYWxsb2NhdG9yLiBFc3NlbnRpYWxseSwgaXQncyBhIHJlYWQtb25seSBzeXNmcyBmaWxlLiBTbywgd2UncmUgbm90IHRhbGtpbmcgYWJvdXQgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBrZXJuZWwgbG9naWMgaGVyZSB0aGF0IHdvdWxkIHdhcnJhbnQgdGhlIHRpbWUgYW5kIGVmZm9ydCBvZiBmdXp6aW5nLiBJdCdzIGp1c3QgYSB2YWx1ZSBiZWluZyByZXBvcnRlZCB0aHJvdWdoIHN5c2ZzLiBJdCBmZWVscyBsaWtlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXMgdGhlIHByaW1hcnkgY29uY2VybiBoZXJlOyBJIGJldCBgU09fQ1BVYCB3YXMgcmVtb3ZlZCBhdCBzb21lIHBvaW50LCBhbmQgdGhpcyBmaWxlIGlzIGJlaW5nIG1haW50YWluZWQgdG8gYXZvaWQgYnJlYWtpbmcgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyB0aGF0IG1pZ2h0IGJlIGV4cGVjdGluZyBpdCwgYnV0IHRoZXkncmUganVzdCByZXR1cm5pbmcgYSBmaXhlZCB2YWx1ZSBub3cuIEl0J3Mgbm90IGEgY2hhbmdlIHRoYXQgYWRkcyBhbnkgbmV3IGF0dGFjayBzdXJmYWNlIGFuZCBpdCBpc24ndCB3b3J0aCBkZWRpY2F0aW5nIHJlc291cmNlcyB0b3dhcmRzIGFueSBmdXp6aW5nIGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NzcsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjowOTo0Ni41MDczMTMxNDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBzeXNmcyBhdHRyaWJ1dGUgKGBjcHVfc2xhYnNgKSB0byByZXR1cm4gYSBoYXJkY29kZWQgXFxcIjBcXFxcblxcXCIgaW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHVudXNlZCBtYWNyb3MuIFRoaXMgaXMgYSBwdXJlbHkgaW5mb3JtYXRpb25hbC9zeXNmcyBjaGFuZ2UgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHN5c2ZzIGF0dHJpYnV0ZSAoYGNwdV9zbGFic2ApIHRvIHJldHVybiBhIGhhcmRjb2RlZCBcXFwiMFxcXFxuXFxcIiBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHRoZSB2YWx1ZSwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdW51c2VkIG1hY3Jvcy4gVGhpcyBpcyBhIHB1cmVseSBpbmZvcm1hdGlvbmFsL3N5c2ZzIGNoYW5nZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljIG9yIGV4ZWN1dGlvbiBmbG93IHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwpnz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 21:55:00 +0000 UTC FinishedAt: 2026-07-01 22:09:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBzeXNmcyBhdHRyaWJ1dGUgKGBjcHVfc2xhYnNgKSB0byByZXR1cm4gYSBoYXJkY29kZWQgXCYjMzQ7MFxcblwmIzM0OyBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHRoZSB2YWx1ZSwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdW51c2VkIG1hY3Jvcy4gVGhpcyBpcyBhIHB1cmVseSBpbmZvcm1hdGlvbmFsL3N5c2ZzIGNoYW5nZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljIG9yIGV4ZWN1dGlvbiBmbG93IHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWE1NTM3ODkzZjdjNTBmOGQzNGM3NDhkOWM5MmFiY2IwM2E4MmIzZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMjI6MDk6MzIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vc2x1Yi5jIGIvbW0vc2x1Yi5jXG5pbmRleCA5ZWM3NzRkYzcwMDk2OS4uZjJlYjYwY2UwZDIzMDIgMTAwNjQ0XG4tLS0gYS9tbS9zbHViLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3NsdWIuY1xuQEAgLTg5OTIsMTQgJiM0Mzs4OTkyLDEyIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nfc2xhYihzdHJ1Y3QgbG9jX3RyYWNrICp0LCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbiBlbnVtIHNsYWJfc3RhdF90eXBlIHtcbiBcdFNMX0FMTCxcdFx0XHQvKiBBbGwgc2xhYnMgKi9cbiBcdFNMX1BBUlRJQUwsXHRcdC8qIE9ubHkgcGFydGlhbGx5IGFsbG9jYXRlZCBzbGFicyAqL1xuLVx0U0xfQ1BVLFx0XHRcdC8qIE9ubHkgc2xhYnMgdXNlZCBmb3IgY3B1IGNhY2hlcyAqL1xuIFx0U0xfT0JKRUNUUyxcdFx0LyogRGV0ZXJtaW5lIGFsbG9jYXRlZCBvYmplY3RzIG5vdCBzbGFicyAqL1xuIFx0U0xfVE9UQUxcdFx0LyogRGV0ZXJtaW5lIG9iamVjdCBjYXBhY2l0eSBub3Qgc2xhYnMgKi9cbiB9O1xuIFxuICNkZWZpbmUgU09fQUxMXHRcdCgxIFx1MDAzY1x1MDAzYyBTTF9BTEwpXG4gI2RlZmluZSBTT19QQVJUSUFMXHQoMSBcdTAwM2NcdTAwM2MgU0xfUEFSVElBTClcbi0jZGVmaW5lIFNPX0NQVVx0XHQoMSBcdTAwM2NcdTAwM2MgU0xfQ1BVKVxuICNkZWZpbmUgU09fT0JKRUNUU1x0KDEgXHUwMDNjXHUwMDNjIFNMX09CSkVDVFMpXG4gI2RlZmluZSBTT19UT1RBTFx0KDEgXHUwMDNjXHUwMDNjIFNMX1RPVEFMKVxuIFxuQEAgLTkxODgsNyAmIzQzOzkxODYsNyBAQCBTTEFCX0FUVFJfUk8ocGFydGlhbCk7XG4gXG4gc3RhdGljIHNzaXplX3QgY3B1X3NsYWJzX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcbiB7XG4tXHRyZXR1cm4gc2hvd19zbGFiX29iamVjdHMocywgYnVmLCBTT19DUFUpO1xuJiM0MztcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MFxcblwmIzM0Oyk7XG4gfVxuIFNMQUJfQVRUUl9STyhjcHVfc2xhYnMpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIyOjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBzeXNmcyBhdHRyaWJ1dGUgKGBjcHVfc2xhYnNgKSB0byByZXR1cm4gYSBoYXJkY29kZWQgXCYjMzQ7MFxcblwmIzM0OyBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHRoZSB2YWx1ZSwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdW51c2VkIG1hY3Jvcy4gVGhpcyBpcyBhIHB1cmVseSBpbmZvcm1hdGlvbmFsL3N5c2ZzIGNoYW5nZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljIG9yIGV4ZWN1dGlvbiBmbG93IHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YTU1Mzc4OTNmN2M1MGY4ZDM0Yzc0OGQ5YzkyYWJjYjAzYTgyYjNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAyMjowOTozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuYwppbmRleCA5ZWM3NzRkYzcwMDk2OS4uZjJlYjYwY2UwZDIzMDIgMTAwNjQ0Ci0tLSBhL21tL3NsdWIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9zbHViLmMKQEAgLTg5OTIsMTQgJiM0Mzs4OTkyLDEyIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nfc2xhYihzdHJ1Y3QgbG9jX3RyYWNrICp0LCBzdHJ1Y3Qga21lbV9jYWNoZSAqcywKIGVudW0gc2xhYl9zdGF0X3R5cGUgewogCVNMX0FMTCwJCQkvKiBBbGwgc2xhYnMgKi8KIAlTTF9QQVJUSUFMLAkJLyogT25seSBwYXJ0aWFsbHkgYWxsb2NhdGVkIHNsYWJzICovCi0JU0xfQ1BVLAkJCS8qIE9ubHkgc2xhYnMgdXNlZCBmb3IgY3B1IGNhY2hlcyAqLwogCVNMX09CSkVDVFMsCQkvKiBEZXRlcm1pbmUgYWxsb2NhdGVkIG9iamVjdHMgbm90IHNsYWJzICovCiAJU0xfVE9UQUwJCS8qIERldGVybWluZSBvYmplY3QgY2FwYWNpdHkgbm90IHNsYWJzICovCiB9OwogCiAjZGVmaW5lIFNPX0FMTAkJKDEgJmx0OyZsdDsgU0xfQUxMKQogI2RlZmluZSBTT19QQVJUSUFMCSgxICZsdDsmbHQ7IFNMX1BBUlRJQUwpCi0jZGVmaW5lIFNPX0NQVQkJKDEgJmx0OyZsdDsgU0xfQ1BVKQogI2RlZmluZSBTT19PQkpFQ1RTCSgxICZsdDsmbHQ7IFNMX09CSkVDVFMpCiAjZGVmaW5lIFNPX1RPVEFMCSgxICZsdDsmbHQ7IFNMX1RPVEFMKQogCkBAIC05MTg4LDcgJiM0Mzs5MTg2LDcgQEAgU0xBQl9BVFRSX1JPKHBhcnRpYWwpOwogCiBzdGF0aWMgc3NpemVfdCBjcHVfc2xhYnNfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKQogewotCXJldHVybiBzaG93X3NsYWJfb2JqZWN0cyhzLCBidWYsIFNPX0NQVSk7CiYjNDM7CXJldHVybiBzeXNmc19lbWl0KGJ1ZiwgJiMzNDswXG4mIzM0Oyk7CiB9CiBTTEFCX0FUVFJfUk8oY3B1X3NsYWJzKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU0xVQiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBtbS9zbHViLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgcmVtb3ZpbmcgYFNMX0NQVWAgYW5kIGBTT19DUFVgIGZyb20gdGhlIGBlbnVtIHNsYWJfc3RhdF90eXBlYCBhbmQgaXRzIGFzc29jaWF0ZWQgbWFjcm9zLiBUaGlzIGxvb2tzIGxpa2UgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGNsZWFudXAsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaGUgcGF0Y2ggYWxzbyBzaW1wbGlmaWVzIGBjcHVfc2xhYnNfc2hvd2AgdG8ganVzdCBvdXRwdXQgJiMzNDswXG4mIzM0OyBpbnN0ZWFkIG9mIGNhbGxpbmcgYHNob3dfc2xhYl9vYmplY3RzYCB3aXRoIGBTT19DUFVgLgoKTXkgZ3V0IHRlbGxzIG1lIHRoaXMgYFNPX0NQVWAgdXNhZ2UgaXMgbm93IGdvbmUgZW50aXJlbHkuIEkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQuIEhtbSwgYWN0dWFsbHksIHdhaXQsIHRoZSBwYXRjaCAqcmVtb3ZlcyogdGhlIGBTT19DUFVgICpkZWZpbml0aW9uKiBpdHNlbGYhIE9rYXksIHRoYXQgbWFrZXMgdGhpcyBhIHNpbXBsZXIgY2hhbmdlIHRoYW4gSSBpbml0aWFsbHkgYW50aWNpcGF0ZWQuIEkgYW0gbG9va2luZyBmb3IgdGhlIHVzYWdlIG9mIGBzaG93X3NsYWJfb2JqZWN0c2AgYW5kIGl0cyBjb2RlLiBJJiMzOTtsbCBoZWFkIHN0cmFpZ2h0IHRvIGBtbS9zbHViLmNgIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGNsZWFudXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2hvd19zbGFiX29iamVjdHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9zbHViLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jPTg5OTI9ZW51bSBzbGFiX3N0YXRfdHlwZSB7XG4tLVxubW0vc2x1Yi5jLTkwMDMtXG5tbS9zbHViLmM6OTAwNDpzdGF0aWMgc3NpemVfdCBzaG93X3NsYWJfb2JqZWN0cyhzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbm1tL3NsdWIuYy05MDA1LVx0XHRcdFx0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBmbGFncylcbi0tXG5tbS9zbHViLmM9OTE4MT1zdGF0aWMgc3NpemVfdCBwYXJ0aWFsX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zilcbm1tL3NsdWIuYy05MTgyLXtcbm1tL3NsdWIuYzo5MTgzOlx0cmV0dXJuIHNob3dfc2xhYl9vYmplY3RzKHMsIGJ1ZiwgU09fUEFSVElBTCk7XG5tbS9zbHViLmMtOTE4NC19XG4tLVxubW0vc2x1Yi5jPTkxOTM9c3RhdGljIHNzaXplX3Qgb2JqZWN0c19wYXJ0aWFsX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zilcbm1tL3NsdWIuYy05MTk0LXtcbm1tL3NsdWIuYzo5MTk1Olx0cmV0dXJuIHNob3dfc2xhYl9vYmplY3RzKHMsIGJ1ZiwgU09fUEFSVElBTHxTT19PQkpFQ1RTKTtcbm1tL3NsdWIuYy05MTk2LX1cbi0tXG5tbS9zbHViLmM9OTI0MD1zdGF0aWMgc3NpemVfdCBzbGFic19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG5tbS9zbHViLmMtOTI0MS17XG5tbS9zbHViLmM6OTI0MjpcdHJldHVybiBzaG93X3NsYWJfb2JqZWN0cyhzLCBidWYsIFNPX0FMTCk7XG5tbS9zbHViLmMtOTI0My19XG4tLVxubW0vc2x1Yi5jPTkyNDY9c3RhdGljIHNzaXplX3QgdG90YWxfb2JqZWN0c19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG5tbS9zbHViLmMtOTI0Ny17XG5tbS9zbHViLmM6OTI0ODpcdHJldHVybiBzaG93X3NsYWJfb2JqZWN0cyhzLCBidWYsIFNPX0FMTHxTT19UT1RBTCk7XG5tbS9zbHViLmMtOTI0OS19XG4tLVxubW0vc2x1Yi5jPTkyNTI9c3RhdGljIHNzaXplX3Qgb2JqZWN0c19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG5tbS9zbHViLmMtOTI1My17XG5tbS9zbHViLmM6OTI1NDpcdHJldHVybiBzaG93X3NsYWJfb2JqZWN0cyhzLCBidWYsIFNPX0FMTHxTT19PQkpFQ1RTKTtcbm1tL3NsdWIuYy05MjU1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCBzdW1tYXJpemluZyB0aGUgcHJvbXB0LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyB0aGUgYHNob3dfc2xhYl9vYmplY3RzYCBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCB0aGUgaW5zdHJ1Y3Rpb24gaXMgdG8gZm9jdXMgb24gdGhlIGBzaG93X3NsYWJfb2JqZWN0c2AgaW1wbGVtZW50YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtZW50YWxseSBwYXJzZSB3aGF0IHRoZSBmdW5jdGlvbiBpcyAqc3VwcG9zZWQqIHRvIGRvLiBXaGF04oCZcyB0aGUgZXhwZWN0ZWQgaW5wdXQ/IFdoYXQgb3V0cHV0IGZvcm1hdCBhcmUgd2UgbG9va2luZyBmb3I/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwb3RlbnRpYWwgcHJvYmxlbSBhcmVhcyBiYXNlZCBvbiBteSBleHBlcmllbmNlIHdpdGggc2ltaWxhciBvYmplY3QgZGlzcGxheSByb3V0aW5lcz8gR2l2ZW4gbXkga25vd2xlZGdlLCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogaG93IGl0IGhhbmRsZXMgbWVtb3J5IG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSBpZiBpdCBkZWFscyB3aXRoIGxhcmdlIGRhdGFzZXRzOyB3aGF0IGtpbmQgb2Ygb3B0aW1pemF0aW9ucyBhcmUgaW1wbGVtZW50ZWQgZm9yIGRpZmZlcmVudCBzbGFiIHNpemVzIG9yIG9iamVjdCB0eXBlczsgYW5kIGhvdyBpdCBkZWFscyB3aXRoIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgaWYgdGhlcmUmIzM5O3MgYW55IG11bHRpdGhyZWFkaW5nIGludm9sdmVkLiBJJiMzOTttIGFsc28gZ29pbmcgdG8gY2hlY2sgZm9yIGVycm9yIGhhbmRsaW5nIC0gYXJlIHRoZXJlIHByb3BlciBjaGVja3MgZm9yIG51bGwgcG9pbnRlcnMgb3IgdW5leHBlY3RlZCBkYXRhPyBBcmUgZXhjZXB0aW9ucyBoYW5kbGVkIGdyYWNlZnVsbHk/IEl0JiMzOTtzIGFsbCBhYm91dCBlbnN1cmluZyB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMgcHJlZGljdGFibHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMuIE15IGV4cGVydCBleWVzIHdpbGwgYmUgY2hlY2tpbmcgZm9yIGVsZWdhbmNlLCBlZmZpY2llbmN5LCBhbmQgcm9idXN0bmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL3NsdWIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzkwMDA6XHQjZGVmaW5lIFNPX1BBUlRJQUxcdCgxIFx1MDAzY1x1MDAzYyBTTF9QQVJUSUFMKVxuOTAwMTpcdCNkZWZpbmUgU09fT0JKRUNUU1x0KDEgXHUwMDNjXHUwMDNjIFNMX09CSkVDVFMpXG45MDAyOlx0I2RlZmluZSBTT19UT1RBTFx0KDEgXHUwMDNjXHUwMDNjIFNMX1RPVEFMKVxuOTAwMzpcdFxuOTAwNDpcdHN0YXRpYyBzc2l6ZV90IHNob3dfc2xhYl9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuOTAwNTpcdFx0XHRcdFx0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBmbGFncylcbjkwMDY6XHR7XG45MDA3Olx0XHR1bnNpZ25lZCBsb25nIHRvdGFsID0gMDtcbjkwMDg6XHRcdGludCBub2RlO1xuOTAwOTpcdFx0aW50IHg7XG45MDEwOlx0XHR1bnNpZ25lZCBsb25nICpub2RlcztcbjkwMTE6XHRcdGludCBsZW4gPSAwO1xuOTAxMjpcdFxuOTAxMzpcdFx0bm9kZXMgPSBrY2FsbG9jKG5yX25vZGVfaWRzLCBzaXplb2YodW5zaWduZWQgbG9uZyksIEdGUF9LRVJORUwpO1xuOTAxNDpcdFx0aWYgKCFub2RlcylcbjkwMTU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG45MDE2Olx0XG45MDE3Olx0XHQvKlxuOTAxODpcdFx0ICogSXQgaXMgaW1wb3NzaWJsZSB0byB0YWtlIFwmIzM0O21lbV9ob3RwbHVnX2xvY2tcJiMzNDsgaGVyZSB3aXRoIFwmIzM0O2tlcm5mc19tdXRleFwmIzM0O1xuOTAxOTpcdFx0ICogYWxyZWFkeSBoZWxkIHdoaWNoIHdpbGwgY29uZmxpY3Qgd2l0aCBhbiBleGlzdGluZyBsb2NrIG9yZGVyOlxuOTAyMDpcdFx0ICpcbjkwMjE6XHRcdCAqIG1lbV9ob3RwbHVnX2xvY2stXHUwMDNlc2xhYl9tdXRleC1cdTAwM2VrZXJuZnNfbXV0ZXhcbjkwMjI6XHRcdCAqXG45MDIzOlx0XHQgKiBXZSBkb24mIzM5O3QgcmVhbGx5IG5lZWQgbWVtX2hvdHBsdWdfbG9jayAodG8gaG9sZCBvZmZcbjkwMjQ6XHRcdCAqIHNsYWJfbWVtX2dvaW5nX29mZmxpbmVfY2FsbGJhY2spIGhlcmUgYmVjYXVzZSBzbGFiJiMzOTtzIG1lbW9yeSBob3RcbjkwMjU6XHRcdCAqIHVucGx1ZyBjb2RlIGRvZXNuJiMzOTt0IGRlc3Ryb3kgdGhlIGttZW1fY2FjaGUtXHUwMDNlbm9kZVtdIGRhdGEuXG45MDI2Olx0XHQgKi9cbjkwMjc6XHRcbjkwMjg6XHQjaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbjkwMjk6XHRcdGlmIChmbGFncyBcdTAwMjYgU09fQUxMKSB7XG45MDMwOlx0XHRcdHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm47XG45MDMxOlx0XG45MDMyOlx0XHRcdGZvcl9lYWNoX2ttZW1fY2FjaGVfbm9kZShzLCBub2RlLCBuKSB7XG45MDMzOlx0XG45MDM0Olx0XHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBTT19UT1RBTClcbjkwMzU6XHRcdFx0XHRcdHggPSBub2RlX25yX29ianMobik7XG45MDM2Olx0XHRcdFx0ZWxzZSBpZiAoZmxhZ3MgXHUwMDI2IFNPX09CSkVDVFMpXG45MDM3Olx0XHRcdFx0XHR4ID0gbm9kZV9ucl9vYmpzKG4pIC0gY291bnRfcGFydGlhbChuLCBjb3VudF9mcmVlKTtcbjkwMzg6XHRcdFx0XHRlbHNlXG45MDM5Olx0XHRcdFx0XHR4ID0gbm9kZV9ucl9zbGFicyhuKTtcbjkwNDA6XHRcdFx0XHR0b3RhbCAmIzQzOz0geDtcbjkwNDE6XHRcdFx0XHRub2Rlc1tub2RlXSAmIzQzOz0geDtcbjkwNDI6XHRcdFx0fVxuOTA0MzpcdFxuOTA0NDpcdFx0fSBlbHNlXG45MDQ1Olx0I2VuZGlmXG45MDQ2Olx0XHRpZiAoZmxhZ3MgXHUwMDI2IFNPX1BBUlRJQUwpIHtcbjkwNDc6XHRcdFx0c3RydWN0IGttZW1fY2FjaGVfbm9kZSAqbjtcbjkwNDg6XHRcbjkwNDk6XHRcdFx0Zm9yX2VhY2hfa21lbV9jYWNoZV9ub2RlKHMsIG5vZGUsIG4pIHtcbjkwNTA6XHRcdFx0XHRpZiAoZmxhZ3MgXHUwMDI2IFNPX1RPVEFMKVxuOTA1MTpcdFx0XHRcdFx0eCA9IGNvdW50X3BhcnRpYWwobiwgY291bnRfdG90YWwpO1xuOTA1MjpcdFx0XHRcdGVsc2UgaWYgKGZsYWdzIFx1MDAyNiBTT19PQkpFQ1RTKVxuOTA1MzpcdFx0XHRcdFx0eCA9IGNvdW50X3BhcnRpYWwobiwgY291bnRfaW51c2UpO1xuOTA1NDpcdFx0XHRcdGVsc2VcbjkwNTU6XHRcdFx0XHRcdHggPSBuLVx1MDAzZW5yX3BhcnRpYWw7XG45MDU2Olx0XHRcdFx0dG90YWwgJiM0Mzs9IHg7XG45MDU3Olx0XHRcdFx0bm9kZXNbbm9kZV0gJiM0Mzs9IHg7XG45MDU4Olx0XHRcdH1cbjkwNTk6XHRcdH1cbjkwNjA6XHRcbjkwNjE6XHRcdGxlbiAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXCYjMzQ7JWx1XCYjMzQ7LCB0b3RhbCk7XG45MDYyOlx0I2lmZGVmIENPTkZJR19OVU1BXG45MDYzOlx0XHRmb3IgKG5vZGUgPSAwOyBub2RlIFx1MDAzYyBucl9ub2RlX2lkczsgbm9kZSYjNDM7JiM0MzspIHtcbjkwNjQ6XHRcdFx0aWYgKG5vZGVzW25vZGVdKVxuOTA2NTpcdFx0XHRcdGxlbiAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXCYjMzQ7IE4lZD0lbHVcJiMzNDssXG45MDY2Olx0XHRcdFx0XHRcdCAgICAgbm9kZSwgbm9kZXNbbm9kZV0pO1xuOTA2NzpcdFx0fVxuOTA2ODpcdCNlbmRpZlxuOTA2OTpcdFx0bGVuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbGVuLCBcJiMzNDtcXG5cJiMzNDspO1xuOTA3MDpcdFx0a2ZyZWUobm9kZXMpO1xuOTA3MTpcdFxuOTA3MjpcdFx0cmV0dXJuIGxlbjtcbjkwNzM6XHR9XG45MDc0Olx0XG45MDc1Olx0I2RlZmluZSB0b19zbGFiX2F0dHIobikgY29udGFpbmVyX29mX2NvbnN0KG4sIHN0cnVjdCBzbGFiX2F0dHJpYnV0ZSwgYXR0cilcbjkwNzY6XHQjZGVmaW5lIHRvX3NsYWIobikgY29udGFpbmVyX29mKG4sIHN0cnVjdCBrbWVtX2NhY2hlLCBrb2JqKVxuOTA3NzpcdFxuOTA3ODpcdHN0cnVjdCBzbGFiX2F0dHJpYnV0ZSB7XG45MDc5Olx0XHRzdHJ1Y3QgYXR0cmlidXRlIGF0dHI7XG45MDgwOlx0XHRzc2l6ZV90ICgqc2hvdykoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zik7XG45MDgxOlx0XHRzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCBjaGFyICp4LCBzaXplX3QgY291bnQpO1xuOTA4MjpcdH07XG45MDgzOlx0XG45MDg0Olx0I2RlZmluZSBTTEFCX0FUVFJfUk8oX25hbWUpIFxcXG45MDg1Olx0XHRzdGF0aWMgY29uc3Qgc3RydWN0IHNsYWJfYXR0cmlidXRlIF9uYW1lIyNfYXR0ciA9IF9fQVRUUl9ST19NT0RFKF9uYW1lLCAwNDAwKVxuOTA4NjpcdFxuOTA4NzpcdCNkZWZpbmUgU0xBQl9BVFRSKF9uYW1lKSBcXFxuOTA4ODpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBzbGFiX2F0dHJpYnV0ZSBfbmFtZSMjX2F0dHIgPSBfX0FUVFJfUldfTU9ERShfbmFtZSwgMDYwMClcbjkwODk6XHRcbjkwOTA6XHRzdGF0aWMgc3NpemVfdCBzbGFiX3NpemVfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuOTA5MTpcdHtcbjkwOTI6XHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7JXVcXG5cJiMzNDssIHMtXHUwMDNlc2l6ZSk7XG45MDkzOlx0fVxuOTA5NDpcdFNMQUJfQVRUUl9STyhzbGFiX3NpemUpO1xuOTA5NTpcdFxuOTA5NjpcdHN0YXRpYyBzc2l6ZV90IGFsaWduX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcbjkwOTc6XHR7XG45MDk4Olx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBzLVx1MDAzZWFsaWduKTtcbjkwOTk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjI6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc3NwoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0LCBpdCBsb29rcyBsaWtlIGBjcHVfc2xhYnNfc2hvd2AgaXMgYmVpbmcgbW9kaWZpZWQgdG8gc2ltcGx5IHJldHVybiAmIzM0OzBcbiYjMzQ7LiBJbnRlcmVzdGluZy4gTm93LCB0aGlzIGlzIGEgc3lzZnMgYXR0cmlidXRlIGZvciBgY3B1X3NsYWJzYCBpbiB0aGUgU0xVQiBhbGxvY2F0b3IuIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBhIHJlYWQtb25seSBzeXNmcyBmaWxlLiBTbywgd2UmIzM5O3JlIG5vdCB0YWxraW5nIGFib3V0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUga2VybmVsIGxvZ2ljIGhlcmUgdGhhdCB3b3VsZCB3YXJyYW50IHRoZSB0aW1lIGFuZCBlZmZvcnQgb2YgZnV6emluZy4gSXQmIzM5O3MganVzdCBhIHZhbHVlIGJlaW5nIHJlcG9ydGVkIHRocm91Z2ggc3lzZnMuIEl0IGZlZWxzIGxpa2UgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBjb25jZXJuIGhlcmU7IEkgYmV0IGBTT19DUFVgIHdhcyByZW1vdmVkIGF0IHNvbWUgcG9pbnQsIGFuZCB0aGlzIGZpbGUgaXMgYmVpbmcgbWFpbnRhaW5lZCB0byBhdm9pZCBicmVha2luZyB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIHRoYXQgbWlnaHQgYmUgZXhwZWN0aW5nIGl0LCBidXQgdGhleSYjMzk7cmUganVzdCByZXR1cm5pbmcgYSBmaXhlZCB2YWx1ZSBub3cuIEl0JiMzOTtzIG5vdCBhIGNoYW5nZSB0aGF0IGFkZHMgYW55IG5ldyBhdHRhY2sgc3VyZmFjZSBhbmQgaXQgaXNuJiMzOTt0IHdvcnRoIGRlZGljYXRpbmcgcmVzb3VyY2VzIHRvd2FyZHMgYW55IGZ1enppbmcgZWZmb3J0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBzeXNmcyBhdHRyaWJ1dGUgKGBjcHVfc2xhYnNgKSB0byByZXR1cm4gYSBoYXJkY29kZWQgXCYjMzQ7MFxcblwmIzM0OyBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHRoZSB2YWx1ZSwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdW51c2VkIG1hY3Jvcy4gVGhpcyBpcyBhIHB1cmVseSBpbmZvcm1hdGlvbmFsL3N5c2ZzIGNoYW5nZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljIG9yIGV4ZWN1dGlvbiBmbG93IHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgc3lzZnMgYXR0cmlidXRlIChgY3B1X3NsYWJzYCkgdG8gcmV0dXJuIGEgaGFyZGNvZGVkIFwmIzM0OzBcXG5cJiMzNDsgaW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHVudXNlZCBtYWNyb3MuIFRoaXMgaXMgYSBwdXJlbHkgaW5mb3JtYXRpb25hbC9zeXNmcyBjaGFuZ2UgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjA5OjMzLjgyMjIzNDI4M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjg1MTA3ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgc3lzZnMgYXR0cmlidXRlIChgY3B1X3NsYWJzYCkgdG8gcmV0dXJuIGEgaGFyZGNvZGVkIFxcXCIwXFxcXG5cXFwiIGluc3RlYWQgb2YgY2FsY3VsYXRpbmcgdGhlIHZhbHVlLCBhbmQgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyB1bnVzZWQgbWFjcm9zLiBUaGlzIGlzIGEgcHVyZWx5IGluZm9ybWF0aW9uYWwvc3lzZnMgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgY29yZSBrZXJuZWwgbG9naWMgb3IgZXhlY3V0aW9uIGZsb3cgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjA5OjMzLjgyMjIzODE0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM5ODYwODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWE1NTM3ODkzZjdjNTBmOGQzNGM3NDhkOWM5MmFiY2IwM2E4MmIzZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDIyOjA5OjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xcbmluZGV4IDllYzc3NGRjNzAwOTY5Li5mMmViNjBjZTBkMjMwMiAxMDA2NDRcXG4tLS0gYS9tbS9zbHViLmNcXG4rKysgYi9tbS9zbHViLmNcXG5AQCAtODk5MiwxNCArODk5MiwxMiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3NsYWIoc3RydWN0IGxvY190cmFjayAqdCwgc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuIGVudW0gc2xhYl9zdGF0X3R5cGUge1xcbiBcXHRTTF9BTEwsXFx0XFx0XFx0LyogQWxsIHNsYWJzICovXFxuIFxcdFNMX1BBUlRJQUwsXFx0XFx0LyogT25seSBwYXJ0aWFsbHkgYWxsb2NhdGVkIHNsYWJzICovXFxuLVxcdFNMX0NQVSxcXHRcXHRcXHQvKiBPbmx5IHNsYWJzIHVzZWQgZm9yIGNwdSBjYWNoZXMgKi9cXG4gXFx0U0xfT0JKRUNUUyxcXHRcXHQvKiBEZXRlcm1pbmUgYWxsb2NhdGVkIG9iamVjdHMgbm90IHNsYWJzICovXFxuIFxcdFNMX1RPVEFMXFx0XFx0LyogRGV0ZXJtaW5lIG9iamVjdCBjYXBhY2l0eSBub3Qgc2xhYnMgKi9cXG4gfTtcXG4gXFxuICNkZWZpbmUgU09fQUxMXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgU0xfQUxMKVxcbiAjZGVmaW5lIFNPX1BBUlRJQUxcXHQoMSBcXHUwMDNjXFx1MDAzYyBTTF9QQVJUSUFMKVxcbi0jZGVmaW5lIFNPX0NQVVxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIFNMX0NQVSlcXG4gI2RlZmluZSBTT19PQkpFQ1RTXFx0KDEgXFx1MDAzY1xcdTAwM2MgU0xfT0JKRUNUUylcXG4gI2RlZmluZSBTT19UT1RBTFxcdCgxIFxcdTAwM2NcXHUwMDNjIFNMX1RPVEFMKVxcbiBcXG5AQCAtOTE4OCw3ICs5MTg2LDcgQEAgU0xBQl9BVFRSX1JPKHBhcnRpYWwpO1xcbiBcXG4gc3RhdGljIHNzaXplX3QgY3B1X3NsYWJzX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG4ge1xcbi1cXHRyZXR1cm4gc2hvd19zbGFiX29iamVjdHMocywgYnVmLCBTT19DUFUpO1xcbitcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIwXFxcXG5cXFwiKTtcXG4gfVxcbiBTTEFCX0FUVFJfUk8oY3B1X3NsYWJzKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjA5OjM0LjI2MzAwNDg3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIyNDQzMzE5NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBzeXNmcyBhdHRyaWJ1dGUgKGBjcHVfc2xhYnNgKSB0byByZXR1cm4gYSBoYXJkY29kZWQgXFxcIjBcXFxcblxcXCIgaW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHVudXNlZCBtYWNyb3MuIFRoaXMgaXMgYSBwdXJlbHkgaW5mb3JtYXRpb25hbC9zeXNmcyBjaGFuZ2UgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YTU1Mzc4OTNmN2M1MGY4ZDM0Yzc0OGQ5YzkyYWJjYjAzYTgyYjNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAyMjowOTozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xuaW5kZXggOWVjNzc0ZGM3MDA5NjkuLmYyZWI2MGNlMGQyMzAyIDEwMDY0NFxuLS0tIGEvbW0vc2x1Yi5jXG4rKysgYi9tbS9zbHViLmNcbkBAIC04OTkyLDE0ICs4OTkyLDEyIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nfc2xhYihzdHJ1Y3QgbG9jX3RyYWNrICp0LCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbiBlbnVtIHNsYWJfc3RhdF90eXBlIHtcbiBcdFNMX0FMTCxcdFx0XHQvKiBBbGwgc2xhYnMgKi9cbiBcdFNMX1BBUlRJQUwsXHRcdC8qIE9ubHkgcGFydGlhbGx5IGFsbG9jYXRlZCBzbGFicyAqL1xuLVx0U0xfQ1BVLFx0XHRcdC8qIE9ubHkgc2xhYnMgdXNlZCBmb3IgY3B1IGNhY2hlcyAqL1xuIFx0U0xfT0JKRUNUUyxcdFx0LyogRGV0ZXJtaW5lIGFsbG9jYXRlZCBvYmplY3RzIG5vdCBzbGFicyAqL1xuIFx0U0xfVE9UQUxcdFx0LyogRGV0ZXJtaW5lIG9iamVjdCBjYXBhY2l0eSBub3Qgc2xhYnMgKi9cbiB9O1xuIFxuICNkZWZpbmUgU09fQUxMXHRcdCgxIFx1MDAzY1x1MDAzYyBTTF9BTEwpXG4gI2RlZmluZSBTT19QQVJUSUFMXHQoMSBcdTAwM2NcdTAwM2MgU0xfUEFSVElBTClcbi0jZGVmaW5lIFNPX0NQVVx0XHQoMSBcdTAwM2NcdTAwM2MgU0xfQ1BVKVxuICNkZWZpbmUgU09fT0JKRUNUU1x0KDEgXHUwMDNjXHUwMDNjIFNMX09CSkVDVFMpXG4gI2RlZmluZSBTT19UT1RBTFx0KDEgXHUwMDNjXHUwMDNjIFNMX1RPVEFMKVxuIFxuQEAgLTkxODgsNyArOTE4Niw3IEBAIFNMQUJfQVRUUl9STyhwYXJ0aWFsKTtcbiBcbiBzdGF0aWMgc3NpemVfdCBjcHVfc2xhYnNfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuIHtcbi1cdHJldHVybiBzaG93X3NsYWJfb2JqZWN0cyhzLCBidWYsIFNPX0NQVSk7XG4rXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwiMFxcblwiKTtcbiB9XG4gU0xBQl9BVFRSX1JPKGNwdV9zbGFicyk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjowOTozNC4yNjMwMDY0NDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI0NDQyODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0xVQiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG1tL3NsdWIuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiByZW1vdmluZyBgU0xfQ1BVYCBhbmQgYFNPX0NQVWAgZnJvbSB0aGUgYGVudW0gc2xhYl9zdGF0X3R5cGVgIGFuZCBpdHMgYXNzb2NpYXRlZCBtYWNyb3MuIFRoaXMgbG9va3MgbGlrZSBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgY2xlYW51cCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoZSBwYXRjaCBhbHNvIHNpbXBsaWZpZXMgYGNwdV9zbGFic19zaG93YCB0byBqdXN0IG91dHB1dCBcIjBcXG5cIiBpbnN0ZWFkIG9mIGNhbGxpbmcgYHNob3dfc2xhYl9vYmplY3RzYCB3aXRoIGBTT19DUFVgLlxuXG5NeSBndXQgdGVsbHMgbWUgdGhpcyBgU09fQ1BVYCB1c2FnZSBpcyBub3cgZ29uZSBlbnRpcmVseS4gSSdsbCBxdWlja2x5IHZlcmlmeSB0aGF0LiBIbW0sIGFjdHVhbGx5LCB3YWl0LCB0aGUgcGF0Y2ggKnJlbW92ZXMqIHRoZSBgU09fQ1BVYCAqZGVmaW5pdGlvbiogaXRzZWxmISBPa2F5LCB0aGF0IG1ha2VzIHRoaXMgYSBzaW1wbGVyIGNoYW5nZSB0aGFuIEkgaW5pdGlhbGx5IGFudGljaXBhdGVkLiBJIGFtIGxvb2tpbmcgZm9yIHRoZSB1c2FnZSBvZiBgc2hvd19zbGFiX29iamVjdHNgIGFuZCBpdHMgY29kZS4gSSdsbCBoZWFkIHN0cmFpZ2h0IHRvIGBtbS9zbHViLmNgIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGNsZWFudXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjowOTozOS4wODc0NTEzNTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU5MzEyMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2hvd19zbGFiX29iamVjdHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vc2x1Yi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3NsdWIuYz04OTkyPWVudW0gc2xhYl9zdGF0X3R5cGUge1xcbi0tXFxubW0vc2x1Yi5jLTkwMDMtXFxubW0vc2x1Yi5jOjkwMDQ6c3RhdGljIHNzaXplX3Qgc2hvd19zbGFiX29iamVjdHMoc3RydWN0IGttZW1fY2FjaGUgKnMsXFxubW0vc2x1Yi5jLTkwMDUtXFx0XFx0XFx0XFx0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBmbGFncylcXG4tLVxcbm1tL3NsdWIuYz05MTgxPXN0YXRpYyBzc2l6ZV90IHBhcnRpYWxfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbm1tL3NsdWIuYy05MTgyLXtcXG5tbS9zbHViLmM6OTE4MzpcXHRyZXR1cm4gc2hvd19zbGFiX29iamVjdHMocywgYnVmLCBTT19QQVJUSUFMKTtcXG5tbS9zbHViLmMtOTE4NC19XFxuLS1cXG5tbS9zbHViLmM9OTE5Mz1zdGF0aWMgc3NpemVfdCBvYmplY3RzX3BhcnRpYWxfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbm1tL3NsdWIuYy05MTk0LXtcXG5tbS9zbHViLmM6OTE5NTpcXHRyZXR1cm4gc2hvd19zbGFiX29iamVjdHMocywgYnVmLCBTT19QQVJUSUFMfFNPX09CSkVDVFMpO1xcbm1tL3NsdWIuYy05MTk2LX1cXG4tLVxcbm1tL3NsdWIuYz05MjQwPXN0YXRpYyBzc2l6ZV90IHNsYWJzX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG5tbS9zbHViLmMtOTI0MS17XFxubW0vc2x1Yi5jOjkyNDI6XFx0cmV0dXJuIHNob3dfc2xhYl9vYmplY3RzKHMsIGJ1ZiwgU09fQUxMKTtcXG5tbS9zbHViLmMtOTI0My19XFxuLS1cXG5tbS9zbHViLmM9OTI0Nj1zdGF0aWMgc3NpemVfdCB0b3RhbF9vYmplY3RzX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG5tbS9zbHViLmMtOTI0Ny17XFxubW0vc2x1Yi5jOjkyNDg6XFx0cmV0dXJuIHNob3dfc2xhYl9vYmplY3RzKHMsIGJ1ZiwgU09fQUxMfFNPX1RPVEFMKTtcXG5tbS9zbHViLmMtOTI0OS19XFxuLS1cXG5tbS9zbHViLmM9OTI1Mj1zdGF0aWMgc3NpemVfdCBvYmplY3RzX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG5tbS9zbHViLmMtOTI1My17XFxubW0vc2x1Yi5jOjkyNTQ6XFx0cmV0dXJuIHNob3dfc2xhYl9vYmplY3RzKHMsIGJ1ZiwgU09fQUxMfFNPX09CSkVDVFMpO1xcbm1tL3NsdWIuYy05MjU1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjI6MDk6MzkuMTQzMzkyMzJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDgxMTgwNzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggc3VtbWFyaXppbmcgdGhlIHByb21wdCwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyB0aGUgYHNob3dfc2xhYl9vYmplY3RzYCBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBpbnN0cnVjdGlvbiBpcyB0byBmb2N1cyBvbiB0aGUgYHNob3dfc2xhYl9vYmplY3RzYCBpbXBsZW1lbnRhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1lbnRhbGx5IHBhcnNlIHdoYXQgdGhlIGZ1bmN0aW9uIGlzICpzdXBwb3NlZCogdG8gZG8uIFdoYXTigJlzIHRoZSBleHBlY3RlZCBpbnB1dD8gV2hhdCBvdXRwdXQgZm9ybWF0IGFyZSB3ZSBsb29raW5nIGZvcj8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIHBvdGVudGlhbCBwcm9ibGVtIGFyZWFzIGJhc2VkIG9uIG15IGV4cGVyaWVuY2Ugd2l0aCBzaW1pbGFyIG9iamVjdCBkaXNwbGF5IHJvdXRpbmVzPyBHaXZlbiBteSBrbm93bGVkZ2UsIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IGhvdyBpdCBoYW5kbGVzIG1lbW9yeSBtYW5hZ2VtZW50LCBwYXJ0aWN1bGFybHkgaWYgaXQgZGVhbHMgd2l0aCBsYXJnZSBkYXRhc2V0czsgd2hhdCBraW5kIG9mIG9wdGltaXphdGlvbnMgYXJlIGltcGxlbWVudGVkIGZvciBkaWZmZXJlbnQgc2xhYiBzaXplcyBvciBvYmplY3QgdHlwZXM7IGFuZCBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzIGlmIHRoZXJlJ3MgYW55IG11bHRpdGhyZWFkaW5nIGludm9sdmVkLiBJJ20gYWxzbyBnb2luZyB0byBjaGVjayBmb3IgZXJyb3IgaGFuZGxpbmcgLSBhcmUgdGhlcmUgcHJvcGVyIGNoZWNrcyBmb3IgbnVsbCBwb2ludGVycyBvciB1bmV4cGVjdGVkIGRhdGE/IEFyZSBleGNlcHRpb25zIGhhbmRsZWQgZ3JhY2VmdWxseT8gSXQncyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIHByZWRpY3RhYmx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMuIE15IGV4cGVydCBleWVzIHdpbGwgYmUgY2hlY2tpbmcgZm9yIGVsZWdhbmNlLCBlZmZpY2llbmN5LCBhbmQgcm9idXN0bmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIyOjA5OjQyLjIyNDU3NTIzOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MjA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9zbHViLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTAwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjkwMDA6XFx0I2RlZmluZSBTT19QQVJUSUFMXFx0KDEgXFx1MDAzY1xcdTAwM2MgU0xfUEFSVElBTClcXG45MDAxOlxcdCNkZWZpbmUgU09fT0JKRUNUU1xcdCgxIFxcdTAwM2NcXHUwMDNjIFNMX09CSkVDVFMpXFxuOTAwMjpcXHQjZGVmaW5lIFNPX1RPVEFMXFx0KDEgXFx1MDAzY1xcdTAwM2MgU0xfVE9UQUwpXFxuOTAwMzpcXHRcXG45MDA0OlxcdHN0YXRpYyBzc2l6ZV90IHNob3dfc2xhYl9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbjkwMDU6XFx0XFx0XFx0XFx0XFx0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBmbGFncylcXG45MDA2OlxcdHtcXG45MDA3OlxcdFxcdHVuc2lnbmVkIGxvbmcgdG90YWwgPSAwO1xcbjkwMDg6XFx0XFx0aW50IG5vZGU7XFxuOTAwOTpcXHRcXHRpbnQgeDtcXG45MDEwOlxcdFxcdHVuc2lnbmVkIGxvbmcgKm5vZGVzO1xcbjkwMTE6XFx0XFx0aW50IGxlbiA9IDA7XFxuOTAxMjpcXHRcXG45MDEzOlxcdFxcdG5vZGVzID0ga2NhbGxvYyhucl9ub2RlX2lkcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLCBHRlBfS0VSTkVMKTtcXG45MDE0OlxcdFxcdGlmICghbm9kZXMpXFxuOTAxNTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG45MDE2OlxcdFxcbjkwMTc6XFx0XFx0LypcXG45MDE4OlxcdFxcdCAqIEl0IGlzIGltcG9zc2libGUgdG8gdGFrZSBcXFwibWVtX2hvdHBsdWdfbG9ja1xcXCIgaGVyZSB3aXRoIFxcXCJrZXJuZnNfbXV0ZXhcXFwiXFxuOTAxOTpcXHRcXHQgKiBhbHJlYWR5IGhlbGQgd2hpY2ggd2lsbCBjb25mbGljdCB3aXRoIGFuIGV4aXN0aW5nIGxvY2sgb3JkZXI6XFxuOTAyMDpcXHRcXHQgKlxcbjkwMjE6XFx0XFx0ICogbWVtX2hvdHBsdWdfbG9jay1cXHUwMDNlc2xhYl9tdXRleC1cXHUwMDNla2VybmZzX211dGV4XFxuOTAyMjpcXHRcXHQgKlxcbjkwMjM6XFx0XFx0ICogV2UgZG9uJ3QgcmVhbGx5IG5lZWQgbWVtX2hvdHBsdWdfbG9jayAodG8gaG9sZCBvZmZcXG45MDI0OlxcdFxcdCAqIHNsYWJfbWVtX2dvaW5nX29mZmxpbmVfY2FsbGJhY2spIGhlcmUgYmVjYXVzZSBzbGFiJ3MgbWVtb3J5IGhvdFxcbjkwMjU6XFx0XFx0ICogdW5wbHVnIGNvZGUgZG9lc24ndCBkZXN0cm95IHRoZSBrbWVtX2NhY2hlLVxcdTAwM2Vub2RlW10gZGF0YS5cXG45MDI2OlxcdFxcdCAqL1xcbjkwMjc6XFx0XFxuOTAyODpcXHQjaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG45MDI5OlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IFNPX0FMTCkge1xcbjkwMzA6XFx0XFx0XFx0c3RydWN0IGttZW1fY2FjaGVfbm9kZSAqbjtcXG45MDMxOlxcdFxcbjkwMzI6XFx0XFx0XFx0Zm9yX2VhY2hfa21lbV9jYWNoZV9ub2RlKHMsIG5vZGUsIG4pIHtcXG45MDMzOlxcdFxcbjkwMzQ6XFx0XFx0XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgU09fVE9UQUwpXFxuOTAzNTpcXHRcXHRcXHRcXHRcXHR4ID0gbm9kZV9ucl9vYmpzKG4pO1xcbjkwMzY6XFx0XFx0XFx0XFx0ZWxzZSBpZiAoZmxhZ3MgXFx1MDAyNiBTT19PQkpFQ1RTKVxcbjkwMzc6XFx0XFx0XFx0XFx0XFx0eCA9IG5vZGVfbnJfb2JqcyhuKSAtIGNvdW50X3BhcnRpYWwobiwgY291bnRfZnJlZSk7XFxuOTAzODpcXHRcXHRcXHRcXHRlbHNlXFxuOTAzOTpcXHRcXHRcXHRcXHRcXHR4ID0gbm9kZV9ucl9zbGFicyhuKTtcXG45MDQwOlxcdFxcdFxcdFxcdHRvdGFsICs9IHg7XFxuOTA0MTpcXHRcXHRcXHRcXHRub2Rlc1tub2RlXSArPSB4O1xcbjkwNDI6XFx0XFx0XFx0fVxcbjkwNDM6XFx0XFxuOTA0NDpcXHRcXHR9IGVsc2VcXG45MDQ1OlxcdCNlbmRpZlxcbjkwNDY6XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgU09fUEFSVElBTCkge1xcbjkwNDc6XFx0XFx0XFx0c3RydWN0IGttZW1fY2FjaGVfbm9kZSAqbjtcXG45MDQ4OlxcdFxcbjkwNDk6XFx0XFx0XFx0Zm9yX2VhY2hfa21lbV9jYWNoZV9ub2RlKHMsIG5vZGUsIG4pIHtcXG45MDUwOlxcdFxcdFxcdFxcdGlmIChmbGFncyBcXHUwMDI2IFNPX1RPVEFMKVxcbjkwNTE6XFx0XFx0XFx0XFx0XFx0eCA9IGNvdW50X3BhcnRpYWwobiwgY291bnRfdG90YWwpO1xcbjkwNTI6XFx0XFx0XFx0XFx0ZWxzZSBpZiAoZmxhZ3MgXFx1MDAyNiBTT19PQkpFQ1RTKVxcbjkwNTM6XFx0XFx0XFx0XFx0XFx0eCA9IGNvdW50X3BhcnRpYWwobiwgY291bnRfaW51c2UpO1xcbjkwNTQ6XFx0XFx0XFx0XFx0ZWxzZVxcbjkwNTU6XFx0XFx0XFx0XFx0XFx0eCA9IG4tXFx1MDAzZW5yX3BhcnRpYWw7XFxuOTA1NjpcXHRcXHRcXHRcXHR0b3RhbCArPSB4O1xcbjkwNTc6XFx0XFx0XFx0XFx0bm9kZXNbbm9kZV0gKz0geDtcXG45MDU4OlxcdFxcdFxcdH1cXG45MDU5OlxcdFxcdH1cXG45MDYwOlxcdFxcbjkwNjE6XFx0XFx0bGVuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBsZW4sIFxcXCIlbHVcXFwiLCB0b3RhbCk7XFxuOTA2MjpcXHQjaWZkZWYgQ09ORklHX05VTUFcXG45MDYzOlxcdFxcdGZvciAobm9kZSA9IDA7IG5vZGUgXFx1MDAzYyBucl9ub2RlX2lkczsgbm9kZSsrKSB7XFxuOTA2NDpcXHRcXHRcXHRpZiAobm9kZXNbbm9kZV0pXFxuOTA2NTpcXHRcXHRcXHRcXHRsZW4gKz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXFxcIiBOJWQ9JWx1XFxcIixcXG45MDY2OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgbm9kZSwgbm9kZXNbbm9kZV0pO1xcbjkwNjc6XFx0XFx0fVxcbjkwNjg6XFx0I2VuZGlmXFxuOTA2OTpcXHRcXHRsZW4gKz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXFxcIlxcXFxuXFxcIik7XFxuOTA3MDpcXHRcXHRrZnJlZShub2Rlcyk7XFxuOTA3MTpcXHRcXG45MDcyOlxcdFxcdHJldHVybiBsZW47XFxuOTA3MzpcXHR9XFxuOTA3NDpcXHRcXG45MDc1OlxcdCNkZWZpbmUgdG9fc2xhYl9hdHRyKG4pIGNvbnRhaW5lcl9vZl9jb25zdChuLCBzdHJ1Y3Qgc2xhYl9hdHRyaWJ1dGUsIGF0dHIpXFxuOTA3NjpcXHQjZGVmaW5lIHRvX3NsYWIobikgY29udGFpbmVyX29mKG4sIHN0cnVjdCBrbWVtX2NhY2hlLCBrb2JqKVxcbjkwNzc6XFx0XFxuOTA3ODpcXHRzdHJ1Y3Qgc2xhYl9hdHRyaWJ1dGUge1xcbjkwNzk6XFx0XFx0c3RydWN0IGF0dHJpYnV0ZSBhdHRyO1xcbjkwODA6XFx0XFx0c3NpemVfdCAoKnNob3cpKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpO1xcbjkwODE6XFx0XFx0c3NpemVfdCAoKnN0b3JlKShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY29uc3QgY2hhciAqeCwgc2l6ZV90IGNvdW50KTtcXG45MDgyOlxcdH07XFxuOTA4MzpcXHRcXG45MDg0OlxcdCNkZWZpbmUgU0xBQl9BVFRSX1JPKF9uYW1lKSBcXFxcXFxuOTA4NTpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHNsYWJfYXR0cmlidXRlIF9uYW1lIyNfYXR0ciA9IF9fQVRUUl9ST19NT0RFKF9uYW1lLCAwNDAwKVxcbjkwODY6XFx0XFxuOTA4NzpcXHQjZGVmaW5lIFNMQUJfQVRUUihfbmFtZSkgXFxcXFxcbjkwODg6XFx0XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBzbGFiX2F0dHJpYnV0ZSBfbmFtZSMjX2F0dHIgPSBfX0FUVFJfUldfTU9ERShfbmFtZSwgMDYwMClcXG45MDg5OlxcdFxcbjkwOTA6XFx0c3RhdGljIHNzaXplX3Qgc2xhYl9zaXplX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG45MDkxOlxcdHtcXG45MDkyOlxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIiV1XFxcXG5cXFwiLCBzLVxcdTAwM2VzaXplKTtcXG45MDkzOlxcdH1cXG45MDk0OlxcdFNMQUJfQVRUUl9STyhzbGFiX3NpemUpO1xcbjkwOTU6XFx0XFxuOTA5NjpcXHRzdGF0aWMgc3NpemVfdCBhbGlnbl9zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXFxuOTA5NzpcXHR7XFxuOTA5ODpcXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIldVxcXFxuXFxcIiwgcy1cXHUwMDNlYWxpZ24pO1xcbjkwOTk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjowOTo0Mi4yMjQ5Mjg4MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjgyMzgyMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIHBhdGNoIEknbSBsb29raW5nIGF0LCBpdCBsb29rcyBsaWtlIGBjcHVfc2xhYnNfc2hvd2AgaXMgYmVpbmcgbW9kaWZpZWQgdG8gc2ltcGx5IHJldHVybiBcIjBcXG5cIi4gSW50ZXJlc3RpbmcuIE5vdywgdGhpcyBpcyBhIHN5c2ZzIGF0dHJpYnV0ZSBmb3IgYGNwdV9zbGFic2AgaW4gdGhlIFNMVUIgYWxsb2NhdG9yLiBFc3NlbnRpYWxseSwgaXQncyBhIHJlYWQtb25seSBzeXNmcyBmaWxlLiBTbywgd2UncmUgbm90IHRhbGtpbmcgYWJvdXQgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBrZXJuZWwgbG9naWMgaGVyZSB0aGF0IHdvdWxkIHdhcnJhbnQgdGhlIHRpbWUgYW5kIGVmZm9ydCBvZiBmdXp6aW5nLiBJdCdzIGp1c3QgYSB2YWx1ZSBiZWluZyByZXBvcnRlZCB0aHJvdWdoIHN5c2ZzLiBJdCBmZWVscyBsaWtlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXMgdGhlIHByaW1hcnkgY29uY2VybiBoZXJlOyBJIGJldCBgU09fQ1BVYCB3YXMgcmVtb3ZlZCBhdCBzb21lIHBvaW50LCBhbmQgdGhpcyBmaWxlIGlzIGJlaW5nIG1haW50YWluZWQgdG8gYXZvaWQgYnJlYWtpbmcgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyB0aGF0IG1pZ2h0IGJlIGV4cGVjdGluZyBpdCwgYnV0IHRoZXkncmUganVzdCByZXR1cm5pbmcgYSBmaXhlZCB2YWx1ZSBub3cuIEl0J3Mgbm90IGEgY2hhbmdlIHRoYXQgYWRkcyBhbnkgbmV3IGF0dGFjayBzdXJmYWNlIGFuZCBpdCBpc24ndCB3b3J0aCBkZWRpY2F0aW5nIHJlc291cmNlcyB0b3dhcmRzIGFueSBmdXp6aW5nIGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NzcsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMjowOTo0Ni41MDczMTMxNDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSBzeXNmcyBhdHRyaWJ1dGUgKGBjcHVfc2xhYnNgKSB0byByZXR1cm4gYSBoYXJkY29kZWQgXFxcIjBcXFxcblxcXCIgaW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHVudXNlZCBtYWNyb3MuIFRoaXMgaXMgYSBwdXJlbHkgaW5mb3JtYXRpb25hbC9zeXNmcyBjaGFuZ2UgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBleGVjdXRpb24gZmxvdyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHN5c2ZzIGF0dHJpYnV0ZSAoYGNwdV9zbGFic2ApIHRvIHJldHVybiBhIGhhcmRjb2RlZCBcXFwiMFxcXFxuXFxcIiBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHRoZSB2YWx1ZSwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdW51c2VkIG1hY3Jvcy4gVGhpcyBpcyBhIHB1cmVseSBpbmZvcm1hdGlvbmFsL3N5c2ZzIGNoYW5nZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljIG9yIGV4ZWN1dGlvbiBmbG93IHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwpnz[1] Phase: Running StartedAt: 2026-07-01 22:10:09 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwpnz[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-01 22:10:09 +0000 UTC FinishedAt: 2026-07-01 22:10:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}