Name: series-workflowmbd8c Phase: Failed StartedAt: 2026-09-01 23:25:15 +0000 UTC FinishedAt: 2026-09-02 00:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbd8c[0] Phase: Succeeded StartedAt: 2026-09-01 23:25:15 +0000 UTC FinishedAt: 2026-09-02 00:12:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbd8c[0].run-triage Phase: Succeeded StartedAt: 2026-09-01 23:25:15 +0000 UTC FinishedAt: 2026-09-02 00:12:26 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDAwOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYykuIFRoaXMgZHJpdmVyIGlzIGZvciB2ZW5kb3Itc3BlY2lmaWMgTWFydmVsbCBPY3Rlb25UWDIgaGFyZHdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUvU29DIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAwOjExPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDFkZmVlODc2YjBjMGU4ZTBmNTJlOGU2M2UxYmY1NzcwZjMzNTIxMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDA6MTE6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jXG5pbmRleCBlMmEzM2U0NmI0OGFkLi5jODI1NTI3MWY4NGViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmNcbkBAIC01OCw2ICYjNDM7NTgsMTkgQEAgc3RhdGljIGludCBucGFfYXFfZW5xdWV1ZV93YWl0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IHJ2dV9ibG9jayAqYmxvY2ssXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgbnBhX2F1cmFfdHJhbnNsYXRlX3Bvb2xfYWRkcihzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYsIHU2NCAqcG9vbF9hZGRyKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFwZnZmLVx1MDAzZXBvb2xfY3R4KVxuJiM0MztcdFx0cmV0dXJuIE5QQV9BRl9FUlJfQVFfRU5RVUVVRTtcbiYjNDM7XG4mIzQzO1x0aWYgKCpwb29sX2FkZHIgXHUwMDNlPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZXFzaXplKVxuJiM0MztcdFx0cmV0dXJuIE5QQV9BRl9FUlJfUEFSQU07XG4mIzQzO1xuJiM0MztcdCpwb29sX2FkZHIgPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWlvdmEgJiM0MztcbiYjNDM7XHRcdCAgICAgKCpwb29sX2FkZHIgKiBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWVudHJ5X3N6KTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBpbnQgcnZ1X25wYV9hcV9lbnFfaW5zdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGFfYXFfZW5xX3JlcSAqcmVxLFxuIFx0XHRcdHN0cnVjdCBucGFfYXFfZW5xX3JzcCAqcnNwKVxuIHtcbkBAIC0xMTYsNiAmIzQzOzEyOSwxMiBAQCBpbnQgcnZ1X25wYV9hcV9lbnFfaW5zdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGFfYXFfZW5xX3JlcSAqcmVxLFxuIFx0Y2FzZSBOUEFfQVFfSU5TVE9QX1dSSVRFOlxuIFx0XHQvKiBDb3B5IGNvbnRleHQgYW5kIHdyaXRlIG1hc2sgKi9cbiBcdFx0aWYgKHJlcS1cdTAwM2VjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkge1xuJiM0MztcdFx0XHRpZiAocmVxLVx1MDAzZWF1cmFfbWFzay5wb29sX2FkZHIpIHtcbiYjNDM7XHRcdFx0XHRyYyA9IG5wYV9hdXJhX3RyYW5zbGF0ZV9wb29sX2FkZHIocGZ2ZixcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgXHUwMDI2cmVxLVx1MDAzZWF1cmEucG9vbF9hZGRyKTtcbiYjNDM7XHRcdFx0XHRpZiAocmMpXG4mIzQzO1x0XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuIFx0XHRcdG1lbWNweShtYXNrLCBcdTAwMjZyZXEtXHUwMDNlYXVyYV9tYXNrLFxuIFx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG5wYV9hdXJhX3MpKTtcbiBcdFx0XHRtZW1jcHkoY3R4LCBcdTAwMjZyZXEtXHUwMDNlYXVyYSwgc2l6ZW9mKHN0cnVjdCBucGFfYXVyYV9zKSk7XG5AQCAtMTI3LDEzICYjNDM7MTQ2LDEwIEBAIGludCBydnVfbnBhX2FxX2VucV9pbnN0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wYV9hcV9lbnFfcmVxICpyZXEsXG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOUEFfQVFfSU5TVE9QX0lOSVQ6XG4gXHRcdGlmIChyZXEtXHUwMDNlY3R5cGUgPT0gTlBBX0FRX0NUWVBFX0FVUkEpIHtcbi1cdFx0XHRpZiAocmVxLVx1MDAzZWF1cmEucG9vbF9hZGRyIFx1MDAzZT0gcGZ2Zi1cdTAwM2Vwb29sX2N0eC1cdTAwM2Vxc2l6ZSkge1xuLVx0XHRcdFx0cmMgPSBOUEFfQUZfRVJSX0FRX0ZVTEw7XG4mIzQzO1x0XHRcdHJjID0gbnBhX2F1cmFfdHJhbnNsYXRlX3Bvb2xfYWRkcihwZnZmLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgXHUwMDI2cmVxLVx1MDAzZWF1cmEucG9vbF9hZGRyKTtcbiYjNDM7XHRcdFx0aWYgKHJjKVxuIFx0XHRcdFx0YnJlYWs7XG4tXHRcdFx0fVxuLVx0XHRcdC8qIFNldCBwb29sJiMzOTtzIGNvbnRleHQgYWRkcmVzcyAqL1xuLVx0XHRcdHJlcS1cdTAwM2VhdXJhLnBvb2xfYWRkciA9IHBmdmYtXHUwMDNlcG9vbF9jdHgtXHUwMDNlaW92YSAmIzQzO1xuLVx0XHRcdChyZXEtXHUwMDNlYXVyYS5wb29sX2FkZHIgKiBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWVudHJ5X3N6KTtcbiBcdFx0XHRtZW1jcHkoY3R4LCBcdTAwMjZyZXEtXHUwMDNlYXVyYSwgc2l6ZW9mKHN0cnVjdCBucGFfYXVyYV9zKSk7XG4gXHRcdH0gZWxzZSB7IC8qIFBPT0wmIzM5O3MgY29udGV4dCAqL1xuIFx0XHRcdG1lbWNweShjdHgsIFx1MDAyNnJlcS1cdTAwM2Vwb29sLCBzaXplb2Yoc3RydWN0IG5wYV9wb29sX3MpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMDoxMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jKS4gVGhpcyBkcml2ZXIgaXMgZm9yIHZlbmRvci1zcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZS9Tb0MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMWRmZWU4NzZiMGMwZThlMGY1MmU4ZTYzZTFiZjU3NzBmMzM1MjEyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAwMDoxMTozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYwppbmRleCBlMmEzM2U0NmI0OGFkLi5jODI1NTI3MWY4NGViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jCkBAIC01OCw2ICYjNDM7NTgsMTkgQEAgc3RhdGljIGludCBucGFfYXFfZW5xdWV1ZV93YWl0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IHJ2dV9ibG9jayAqYmxvY2ssCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgaW50IG5wYV9hdXJhX3RyYW5zbGF0ZV9wb29sX2FkZHIoc3RydWN0IHJ2dV9wZnZmICpwZnZmLCB1NjQgKnBvb2xfYWRkcikKJiM0Mzt7CiYjNDM7CWlmICghcGZ2Zi0mZ3Q7cG9vbF9jdHgpCiYjNDM7CQlyZXR1cm4gTlBBX0FGX0VSUl9BUV9FTlFVRVVFOwomIzQzOwomIzQzOwlpZiAoKnBvb2xfYWRkciAmZ3Q7PSBwZnZmLSZndDtwb29sX2N0eC0mZ3Q7cXNpemUpCiYjNDM7CQlyZXR1cm4gTlBBX0FGX0VSUl9QQVJBTTsKJiM0MzsKJiM0MzsJKnBvb2xfYWRkciA9IHBmdmYtJmd0O3Bvb2xfY3R4LSZndDtpb3ZhICYjNDM7CiYjNDM7CQkgICAgICgqcG9vbF9hZGRyICogcGZ2Zi0mZ3Q7cG9vbF9jdHgtJmd0O2VudHJ5X3N6KTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSwKIAkJCXN0cnVjdCBucGFfYXFfZW5xX3JzcCAqcnNwKQogewpAQCAtMTE2LDYgJiM0MzsxMjksMTIgQEAgaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSwKIAljYXNlIE5QQV9BUV9JTlNUT1BfV1JJVEU6CiAJCS8qIENvcHkgY29udGV4dCBhbmQgd3JpdGUgbWFzayAqLwogCQlpZiAocmVxLSZndDtjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkgewomIzQzOwkJCWlmIChyZXEtJmd0O2F1cmFfbWFzay5wb29sX2FkZHIpIHsKJiM0MzsJCQkJcmMgPSBucGFfYXVyYV90cmFuc2xhdGVfcG9vbF9hZGRyKHBmdmYsCiYjNDM7CQkJCQkJCQkgICZhbXA7cmVxLSZndDthdXJhLnBvb2xfYWRkcik7CiYjNDM7CQkJCWlmIChyYykKJiM0MzsJCQkJCWJyZWFrOwomIzQzOwkJCX0KIAkJCW1lbWNweShtYXNrLCAmYW1wO3JlcS0mZ3Q7YXVyYV9tYXNrLAogCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgbnBhX2F1cmFfcykpOwogCQkJbWVtY3B5KGN0eCwgJmFtcDtyZXEtJmd0O2F1cmEsIHNpemVvZihzdHJ1Y3QgbnBhX2F1cmFfcykpOwpAQCAtMTI3LDEzICYjNDM7MTQ2LDEwIEBAIGludCBydnVfbnBhX2FxX2VucV9pbnN0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wYV9hcV9lbnFfcmVxICpyZXEsCiAJCWJyZWFrOwogCWNhc2UgTlBBX0FRX0lOU1RPUF9JTklUOgogCQlpZiAocmVxLSZndDtjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkgewotCQkJaWYgKHJlcS0mZ3Q7YXVyYS5wb29sX2FkZHIgJmd0Oz0gcGZ2Zi0mZ3Q7cG9vbF9jdHgtJmd0O3FzaXplKSB7Ci0JCQkJcmMgPSBOUEFfQUZfRVJSX0FRX0ZVTEw7CiYjNDM7CQkJcmMgPSBucGFfYXVyYV90cmFuc2xhdGVfcG9vbF9hZGRyKHBmdmYsCiYjNDM7CQkJCQkJCSAgJmFtcDtyZXEtJmd0O2F1cmEucG9vbF9hZGRyKTsKJiM0MzsJCQlpZiAocmMpCiAJCQkJYnJlYWs7Ci0JCQl9Ci0JCQkvKiBTZXQgcG9vbCYjMzk7cyBjb250ZXh0IGFkZHJlc3MgKi8KLQkJCXJlcS0mZ3Q7YXVyYS5wb29sX2FkZHIgPSBwZnZmLSZndDtwb29sX2N0eC0mZ3Q7aW92YSAmIzQzOwotCQkJKHJlcS0mZ3Q7YXVyYS5wb29sX2FkZHIgKiBwZnZmLSZndDtwb29sX2N0eC0mZ3Q7ZW50cnlfc3opOwogCQkJbWVtY3B5KGN0eCwgJmFtcDtyZXEtJmd0O2F1cmEsIHNpemVvZihzdHJ1Y3QgbnBhX2F1cmFfcykpOwogCQl9IGVsc2UgeyAvKiBQT09MJiMzOTtzIGNvbnRleHQgKi8KIAkJCW1lbWNweShjdHgsICZhbXA7cmVxLSZndDtwb29sLCBzaXplb2Yoc3RydWN0IG5wYV9wb29sX3MpKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGFuZCBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBoYXJkd2FyZS9kcml2ZXIgY29tYmluYXRpb24uIFRpbWUgdG8gaGl0IGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZC4gSXQmIzM5O3MgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSAoUmVzb3VyY2UgVmlydHVhbGl6YXRpb24gVW5pdCkgTlBBIChOZXR3b3JrIFBvb2wgQWxsb2NhdG9yKSBkcml2ZXIsIHJpZ2h0PyBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyB0aGlzIE1hcnZlbGwgT2N0ZW9uVFgyIGhhcmR3YXJlLXNwZWNpZmljLCBvciBkb2VzIGl0IGhhdmUgc29tZSBzb3J0IG9mIFFFTVUgZW11bGF0aW9uPwoKSSBuZWVkIHRvIGFwcGx5IHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhLiBNeSBtZW50YWwgY2hlY2tsaXN0IGdvZXMgc29tZXRoaW5nIGxpa2U6CiogICBJcyB0aGUgY29kZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZT8KKiAgIElzIHRoaXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGNvZGU/CgpJZiBpdCYjMzk7cyB0aGUgbGF0dGVyLCBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlbiBpdCYjMzk7cyBhICYjMzQ7bm8tZ28mIzM0Oy4gU28sIEkgc2hvdWxkIHN0YXJ0IGV4cGxvcmluZyB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2AgZGlyZWN0b3J5IGFuZCBgS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgSSBuZWVkIHRvIGZpbmQgdGhlIGFuc3dlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfT0NURU9OVFgyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9NQk9YKSAmIzQzOz0gYWYvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICYjNDM7PSBhZi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgJiM0Mzs9IG5pYy9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZT02PWNjZmxhZ3MteSAmIzQzOz0gLUkkKHNyYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9NQk9YKSAmIzQzOz0gcnZ1X21ib3gub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSAmIzQzOz0gcnZ1X2FmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlLTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSAmIzQzOz0gcnZ1X25pY3BmLm8gb3R4Ml9wdHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9WRikgJiM0Mzs9IHJ2dV9uaWN2Zi5vIG90eDJfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS04LW9iai0kKENPTkZJR19SVlVfRVNXSVRDSCkgJiM0Mzs9IHJ2dV9yZXAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBPY3Rlb25UWDIgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgT0NURU9OVFgyX0FGYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhbGwgYWJvdXQuIE15IGluc3RpbmN0IGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGBLY29uZmlnYCBmaWxlIGZvciB0aGUgTWFydmVsbCBPY3Rlb25UWDIgRXRoZXJuZXQgZHJpdmVyLiBUaGF0JiMzOTtzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnYC4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgcGxhY2Ugd2hlcmUgeW91IGRlZmluZSB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgZHJpdmVyLiBJJiMzOTttIGd1ZXNzaW5nIHRoYXQgYE9DVEVPTlRYMl9BRmAgaXMgYSBmZWF0dXJlIGZsYWcsIG9yIGEgZGVwZW5kZW5jeSwgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCBpdCBlbmFibGVzLCBkaXNhYmxlcywgb3Igd2hhdCBoYXJkd2FyZSBpdCBpcyBzcGVjaWZpYyB0by4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBjbHVlcyBsaWtlIGEgZGVmaW5lZCBzeW1ib2wsIGEgZGVmYXVsdCB2YWx1ZSwgYW5kIHBvc3NpYmxlIGhlbHAgdGV4dCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZ29pbmcgb24uIEtub3dpbmcgdGhlIGhhcmR3YXJlIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdpbGwgaGVscCBtZSBpbW1lbnNlbHkgaW4gdHJvdWJsZXNob290aW5nIG9yIG1vZGlmeWluZyB0aGUgZHJpdmVyLCBpZiBuZWVkZWQuIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gZmVhdHVyZXMgc3VjaCBhcyBhbiBvZmZsb2FkIGVuZ2luZSBvciBhZHZhbmNlZCBwYWNrZXQgcHJvY2Vzc2luZyBjYXBhYmlsaXRpZXMgdGhhdCBkZXBlbmQgb24gYSBzcGVjaWZpYyBkZXZpY2UgdmVyc2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNYXJ2ZWxsIFJWVSBOZXR3b3JrIGRyaXZlcnMgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgT0NURU9OVFgyX01CT1hcbiAgIDc6XHRcdHRyaXN0YXRlXG4gICA4Olx0XG4gICA5Olx0Y29uZmlnIE9DVEVPTlRYMl9BRlxuICAxMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuICAxMTpcdFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXG4gIDEyOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTM6XHRcdGRlcGVuZHMgb24gKDY0QklUIFx1MDAyNlx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XG4gIDE0Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAxNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsJiMzOTtzIE9jdGVvblRYMiBSZXNvdXJjZSBWaXJ0dWFsaXphdGlvblxuICAxODpcdFx0ICBVbml0JiMzOTtzIGFkbWluIGZ1bmN0aW9uIG1hbmFnZXIgd2hpY2ggbWFuYWdlcyBhbGwgUlZVIEhXIHJlc291cmNlc1xuICAxOTpcdFx0ICBhbmQgcHJvdmlkZXMgYSBtZWRpdW0gdG8gb3RoZXIgUEYvVkZzIHRvIGNvbmZpZ3VyZSBIVy4gU2hvdWxkIGJlXG4gIDIwOlx0XHQgIGVuYWJsZWQgZm9yIG90aGVyIFJWVSBkZXZpY2UgZHJpdmVycyB0byB3b3JrLlxuICAyMTpcdFxuICAyMjpcdGNvbmZpZyBORENfRElTX0RZTkFNSUNfQ0FDSElOR1xuICAyMzpcdFx0Ym9vbCBcJiMzNDtEaXNhYmxlIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIGluIE5EQ1wmIzM0O1xuICAyNDpcdFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfQUZcbiAgMjU6XHRcdGRlZmF1bHQgblxuICAyNjpcdFx0aGVscFxuICAyNzpcdFx0ICBUaGlzIGNvbmZpZyBvcHRpb24gZGlzYWJsZXMgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgc3VjaCBhcyBOSVggU1FFc1xuICAyODpcdFx0ICAsIE5QQSBzdGFjayBwYWdlcyBldGMgaW4gTkRDLiBBbHNvIGxvY2tzIGRvd24gTklYIFNRL0NRL1JRL1JTUyBhbmRcbiAgMjk6XHRcdCAgTlBBIEF1cmEvUG9vbCBjb250ZXh0cy5cbiAgMzA6XHRcbiAgMzE6XHRjb25maWcgT0NURU9OVFgyX1BGXG4gIDMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG4gIDMzOlx0XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbiAgMzQ6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAzNTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAzNjpcdFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xuICAzNzpcdFx0ZGVwZW5kcyBvbiAoNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcbiAgMzg6XHRcdHNlbGVjdCBESU1MSUJcbiAgMzk6XHRcdGRlcGVuZHMgb24gUENJXG4gIDQwOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDQxOlx0XHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCAhTUFDU0VDXG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIE5JQyBwaHlzaWNhbCBmdW5jdGlvbi5cbiAgNDQ6XHRcbiAgNDU6XHRjb25maWcgT0NURU9OVFgyX1ZGXG4gIDQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXG4gIDQ4Olx0XHRoZWxwXG4gIDQ5Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIE5JQyB2aXJ0dWFsIGZ1bmN0aW9uLlxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NTIKCQkJCQkJCW91dHB1dDogMTE0CgkJCQkJCQl0aG91Z2h0czogNDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBhIHNwZWNpYWxpemVkIHBpZWNlIG9mIGtpdDogYSBNYXJ2ZWxsIE9jdGVvblRYMi4gSXQmIzM5O3MgYW4gQVJNNjQgU29DLCBhIG5ldHdvcmsgcHJvY2Vzc29yLCBhbmQsIGltcG9ydGFudGx5LCBhIFBDSWUgZGV2aWNlIHdpdGggdGhpcyBSVlUgKFJlc291cmNlIFZpcnR1YWxpemF0aW9uIFVuaXQpIEFkbWluIEZ1bmN0aW9uIGFuZCBOSUMgZnVuY3Rpb25zLgoKVGhlIGtleSBxdWVzdGlvbiBpcywgYW5kIHRoaXMgaXMgd2hlcmUgSSBuZWVkIHRvIGJlIHN1cmUsIGlzIHRoaXMgKnZlbmRvci1zcGVjaWZpYyogaGFyZHdhcmU/IElzIHRoaXMgT2N0ZW9uVFgyIFJWVSBzdHVmZiBzb21ldGhpbmcgdGhhdCYjMzk7cyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQW5kIHRoZSBhbnN3ZXIsIHVuZm9ydHVuYXRlbHksIGlzICpubyouIFRoaXMgUlZVIGlzIHNwZWNpZmljIHRvIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIENOOVhYWCBhbmQgQ04xMFhYWCBzZXJpZXMuIFN0YW5kYXJkIFFFTVUganVzdCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgaGFyZHdhcmUuIEl0JiMzOTtzIG5vdCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBzZXQuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2UgZG91Ymx5IHN1cmUgYmFzZWQgb24gb3VyIHJ1bGVzLiBSZW1lbWJlciB0aGF0IHdlJiMzOTtyZSBsb29raW5nIGZvciBjb2RlIHRoYXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2hlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gQW5kIHdlIGFyZSBsb29raW5nIGF0IGNvZGUgc3BlY2lmaWNhbGx5IGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLiBUaGF0JiMzOTtzIHdoYXQgdGhpcyBhcHBlYXJzIHRvIGJlLgoKQWxyaWdodCwgc28gYmVjYXVzZSBvZiB0aGlzIE1hcnZlbGwgT2N0ZW9uVFgyJiMzOTtzIHZlbmRvci1zcGVjaWZpYyBuYXR1cmUsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnLCB3aXRob3V0IGEgZG91YnQsIHNob3VsZCBiZSBgZmFsc2VgLgoKSnVzdCBuZWVkIHRvIGNvbmZpcm0gdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGNoYW5nZXMgaW4gb3RoZXIgZmlsZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMuIEdvb2QsIGxvb2tzIGxpa2UgdGhlIG9ubHkgZmlsZSB0b3VjaGVkIGlzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmNgLgoKT2theSwgbm93IGxldCYjMzk7cyBzZXQgdXAgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBjYWxsLgoKLSAgIGBFbmFibGVDb25maWdzYCBhcmUgZW1wdHkuCi0gICBgRm9jdXNTeW1ib2xzYCBhcmUgZW1wdHkuCi0gICBNeSBSZWFzb25pbmcgaXMgc29saWQuIENoYW5nZXMgYXJlIGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyIChgT0NURU9OVFgyX0FGYCkuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBNYXJ2ZWxsIE9jdGVvblRYMiBTb0MvUENJZSBkZXZpY2VzLCBhbmQgYXMgd2UmIzM5O3ZlIGVzdGFibGlzaGVkLCB0aGlzIGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIG90aGVyIGZ1enppbmcgZW52aXJvbm1lbnRzLCBzbyBpdOKAmXMgdW5yZWFjaGFibGUuCi0gICBgV29ydGhGdXp6aW5nYCBpcyB1bmVxdWl2b2NhbGx5IGBmYWxzZWAuCgpMZXQmIzM5O3MgaW52b2tlIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jKS4gVGhpcyBkcml2ZXIgaXMgZm9yIHZlbmRvci1zcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZS9Tb0MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMpLiBUaGlzIGRyaXZlciBpcyBmb3IgdmVuZG9yLXNwZWNpZmljIE1hcnZlbGwgT2N0ZW9uVFgyIGhhcmR3YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llL1NvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMDoxMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDJUMDA6MTE6MzguNzA5ODYzNTYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwOTM0MDgzMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jKS4gVGhpcyBkcml2ZXIgaXMgZm9yIHZlbmRvci1zcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZS9Tb0MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAwOjExOjM4LjcwOTg2ODU3M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5NzM1MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDFkZmVlODc2YjBjMGU4ZTBmNTJlOGU2M2UxYmY1NzcwZjMzNTIxMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDAwOjExOjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuY1xcbmluZGV4IGUyYTMzZTQ2YjQ4YWQuLmM4MjU1MjcxZjg0ZWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jXFxuQEAgLTU4LDYgKzU4LDE5IEBAIHN0YXRpYyBpbnQgbnBhX2FxX2VucXVldWVfd2FpdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBydnVfYmxvY2sgKmJsb2NrLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBucGFfYXVyYV90cmFuc2xhdGVfcG9vbF9hZGRyKHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiwgdTY0ICpwb29sX2FkZHIpXFxuK3tcXG4rXFx0aWYgKCFwZnZmLVxcdTAwM2Vwb29sX2N0eClcXG4rXFx0XFx0cmV0dXJuIE5QQV9BRl9FUlJfQVFfRU5RVUVVRTtcXG4rXFxuK1xcdGlmICgqcG9vbF9hZGRyIFxcdTAwM2U9IHBmdmYtXFx1MDAzZXBvb2xfY3R4LVxcdTAwM2Vxc2l6ZSlcXG4rXFx0XFx0cmV0dXJuIE5QQV9BRl9FUlJfUEFSQU07XFxuK1xcbitcXHQqcG9vbF9hZGRyID0gcGZ2Zi1cXHUwMDNlcG9vbF9jdHgtXFx1MDAzZWlvdmEgK1xcbitcXHRcXHQgICAgICgqcG9vbF9hZGRyICogcGZ2Zi1cXHUwMDNlcG9vbF9jdHgtXFx1MDAzZWVudHJ5X3N6KTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIGludCBydnVfbnBhX2FxX2VucV9pbnN0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wYV9hcV9lbnFfcmVxICpyZXEsXFxuIFxcdFxcdFxcdHN0cnVjdCBucGFfYXFfZW5xX3JzcCAqcnNwKVxcbiB7XFxuQEAgLTExNiw2ICsxMjksMTIgQEAgaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSxcXG4gXFx0Y2FzZSBOUEFfQVFfSU5TVE9QX1dSSVRFOlxcbiBcXHRcXHQvKiBDb3B5IGNvbnRleHQgYW5kIHdyaXRlIG1hc2sgKi9cXG4gXFx0XFx0aWYgKHJlcS1cXHUwMDNlY3R5cGUgPT0gTlBBX0FRX0NUWVBFX0FVUkEpIHtcXG4rXFx0XFx0XFx0aWYgKHJlcS1cXHUwMDNlYXVyYV9tYXNrLnBvb2xfYWRkcikge1xcbitcXHRcXHRcXHRcXHRyYyA9IG5wYV9hdXJhX3RyYW5zbGF0ZV9wb29sX2FkZHIocGZ2ZixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2cmVxLVxcdTAwM2VhdXJhLnBvb2xfYWRkcik7XFxuK1xcdFxcdFxcdFxcdGlmIChyYylcXG4rXFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0XFx0bWVtY3B5KG1hc2ssIFxcdTAwMjZyZXEtXFx1MDAzZWF1cmFfbWFzayxcXG4gXFx0XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbnBhX2F1cmFfcykpO1xcbiBcXHRcXHRcXHRtZW1jcHkoY3R4LCBcXHUwMDI2cmVxLVxcdTAwM2VhdXJhLCBzaXplb2Yoc3RydWN0IG5wYV9hdXJhX3MpKTtcXG5AQCAtMTI3LDEzICsxNDYsMTAgQEAgaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSxcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTlBBX0FRX0lOU1RPUF9JTklUOlxcbiBcXHRcXHRpZiAocmVxLVxcdTAwM2VjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkge1xcbi1cXHRcXHRcXHRpZiAocmVxLVxcdTAwM2VhdXJhLnBvb2xfYWRkciBcXHUwMDNlPSBwZnZmLVxcdTAwM2Vwb29sX2N0eC1cXHUwMDNlcXNpemUpIHtcXG4tXFx0XFx0XFx0XFx0cmMgPSBOUEFfQUZfRVJSX0FRX0ZVTEw7XFxuK1xcdFxcdFxcdHJjID0gbnBhX2F1cmFfdHJhbnNsYXRlX3Bvb2xfYWRkcihwZnZmLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZyZXEtXFx1MDAzZWF1cmEucG9vbF9hZGRyKTtcXG4rXFx0XFx0XFx0aWYgKHJjKVxcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHQvKiBTZXQgcG9vbCdzIGNvbnRleHQgYWRkcmVzcyAqL1xcbi1cXHRcXHRcXHRyZXEtXFx1MDAzZWF1cmEucG9vbF9hZGRyID0gcGZ2Zi1cXHUwMDNlcG9vbF9jdHgtXFx1MDAzZWlvdmEgK1xcbi1cXHRcXHRcXHQocmVxLVxcdTAwM2VhdXJhLnBvb2xfYWRkciAqIHBmdmYtXFx1MDAzZXBvb2xfY3R4LVxcdTAwM2VlbnRyeV9zeik7XFxuIFxcdFxcdFxcdG1lbWNweShjdHgsIFxcdTAwMjZyZXEtXFx1MDAzZWF1cmEsIHNpemVvZihzdHJ1Y3QgbnBhX2F1cmFfcykpO1xcbiBcXHRcXHR9IGVsc2UgeyAvKiBQT09MJ3MgY29udGV4dCAqL1xcbiBcXHRcXHRcXHRtZW1jcHkoY3R4LCBcXHUwMDI2cmVxLVxcdTAwM2Vwb29sLCBzaXplb2Yoc3RydWN0IG5wYV9wb29sX3MpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDA6MTE6MzkuMTkxODg4NzEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMjYxMTM2NTMzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYykuIFRoaXMgZHJpdmVyIGlzIGZvciB2ZW5kb3Itc3BlY2lmaWMgTWFydmVsbCBPY3Rlb25UWDIgaGFyZHdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUvU29DIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkMWRmZWU4NzZiMGMwZThlMGY1MmU4ZTYzZTFiZjU3NzBmMzM1MjEyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAwMDoxMTozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuY1xuaW5kZXggZTJhMzNlNDZiNDhhZC4uYzgyNTUyNzFmODRlYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jXG5AQCAtNTgsNiArNTgsMTkgQEAgc3RhdGljIGludCBucGFfYXFfZW5xdWV1ZV93YWl0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IHJ2dV9ibG9jayAqYmxvY2ssXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBucGFfYXVyYV90cmFuc2xhdGVfcG9vbF9hZGRyKHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiwgdTY0ICpwb29sX2FkZHIpXG4re1xuK1x0aWYgKCFwZnZmLVx1MDAzZXBvb2xfY3R4KVxuK1x0XHRyZXR1cm4gTlBBX0FGX0VSUl9BUV9FTlFVRVVFO1xuK1xuK1x0aWYgKCpwb29sX2FkZHIgXHUwMDNlPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZXFzaXplKVxuK1x0XHRyZXR1cm4gTlBBX0FGX0VSUl9QQVJBTTtcbitcbitcdCpwb29sX2FkZHIgPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWlvdmEgK1xuK1x0XHQgICAgICgqcG9vbF9hZGRyICogcGZ2Zi1cdTAwM2Vwb29sX2N0eC1cdTAwM2VlbnRyeV9zeik7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSxcbiBcdFx0XHRzdHJ1Y3QgbnBhX2FxX2VucV9yc3AgKnJzcClcbiB7XG5AQCAtMTE2LDYgKzEyOSwxMiBAQCBpbnQgcnZ1X25wYV9hcV9lbnFfaW5zdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGFfYXFfZW5xX3JlcSAqcmVxLFxuIFx0Y2FzZSBOUEFfQVFfSU5TVE9QX1dSSVRFOlxuIFx0XHQvKiBDb3B5IGNvbnRleHQgYW5kIHdyaXRlIG1hc2sgKi9cbiBcdFx0aWYgKHJlcS1cdTAwM2VjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkge1xuK1x0XHRcdGlmIChyZXEtXHUwMDNlYXVyYV9tYXNrLnBvb2xfYWRkcikge1xuK1x0XHRcdFx0cmMgPSBucGFfYXVyYV90cmFuc2xhdGVfcG9vbF9hZGRyKHBmdmYsXG4rXHRcdFx0XHRcdFx0XHRcdCAgXHUwMDI2cmVxLVx1MDAzZWF1cmEucG9vbF9hZGRyKTtcbitcdFx0XHRcdGlmIChyYylcbitcdFx0XHRcdFx0YnJlYWs7XG4rXHRcdFx0fVxuIFx0XHRcdG1lbWNweShtYXNrLCBcdTAwMjZyZXEtXHUwMDNlYXVyYV9tYXNrLFxuIFx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG5wYV9hdXJhX3MpKTtcbiBcdFx0XHRtZW1jcHkoY3R4LCBcdTAwMjZyZXEtXHUwMDNlYXVyYSwgc2l6ZW9mKHN0cnVjdCBucGFfYXVyYV9zKSk7XG5AQCAtMTI3LDEzICsxNDYsMTAgQEAgaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSxcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5QQV9BUV9JTlNUT1BfSU5JVDpcbiBcdFx0aWYgKHJlcS1cdTAwM2VjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkge1xuLVx0XHRcdGlmIChyZXEtXHUwMDNlYXVyYS5wb29sX2FkZHIgXHUwMDNlPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZXFzaXplKSB7XG4tXHRcdFx0XHRyYyA9IE5QQV9BRl9FUlJfQVFfRlVMTDtcbitcdFx0XHRyYyA9IG5wYV9hdXJhX3RyYW5zbGF0ZV9wb29sX2FkZHIocGZ2ZixcbitcdFx0XHRcdFx0XHRcdCAgXHUwMDI2cmVxLVx1MDAzZWF1cmEucG9vbF9hZGRyKTtcbitcdFx0XHRpZiAocmMpXG4gXHRcdFx0XHRicmVhaztcbi1cdFx0XHR9XG4tXHRcdFx0LyogU2V0IHBvb2wncyBjb250ZXh0IGFkZHJlc3MgKi9cbi1cdFx0XHRyZXEtXHUwMDNlYXVyYS5wb29sX2FkZHIgPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWlvdmEgK1xuLVx0XHRcdChyZXEtXHUwMDNlYXVyYS5wb29sX2FkZHIgKiBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWVudHJ5X3N6KTtcbiBcdFx0XHRtZW1jcHkoY3R4LCBcdTAwMjZyZXEtXHUwMDNlYXVyYSwgc2l6ZW9mKHN0cnVjdCBucGFfYXVyYV9zKSk7XG4gXHRcdH0gZWxzZSB7IC8qIFBPT0wncyBjb250ZXh0ICovXG4gXHRcdFx0bWVtY3B5KGN0eCwgXHUwMDI2cmVxLVx1MDAzZXBvb2wsIHNpemVvZihzdHJ1Y3QgbnBhX3Bvb2xfcykpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDA6MTE6MzkuMTkxODkwMTYzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ5NzYzODU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGFuZCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgaGFyZHdhcmUvZHJpdmVyIGNvbWJpbmF0aW9uLiBUaW1lIHRvIGhpdCBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQuIEl0J3MgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSAoUmVzb3VyY2UgVmlydHVhbGl6YXRpb24gVW5pdCkgTlBBIChOZXR3b3JrIFBvb2wgQWxsb2NhdG9yKSBkcml2ZXIsIHJpZ2h0PyBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyB0aGlzIE1hcnZlbGwgT2N0ZW9uVFgyIGhhcmR3YXJlLXNwZWNpZmljLCBvciBkb2VzIGl0IGhhdmUgc29tZSBzb3J0IG9mIFFFTVUgZW11bGF0aW9uP1xuXG5JIG5lZWQgdG8gYXBwbHkgdGhlIFwiV29ydGhGdXp6aW5nXCIgY3JpdGVyaWEuIE15IG1lbnRhbCBjaGVja2xpc3QgZ29lcyBzb21ldGhpbmcgbGlrZTpcbiogICBJcyB0aGUgY29kZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZT9cbiogICBJcyB0aGlzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBjb2RlP1xuXG5JZiBpdCdzIHRoZSBsYXR0ZXIsIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGVuIGl0J3MgYSBcIm5vLWdvXCIuIFNvLCBJIHNob3VsZCBzdGFydCBleHBsb3JpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9gIGRpcmVjdG9yeSBhbmQgYEtjb25maWdgLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBmaW5kIHRoZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMDoxMTo0NC42ODk1MzI1MzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MjEyNDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19PQ1RFT05UWDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgKz0gYWYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSArPSBhZi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfUEYpICs9IG5pYy9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlPTY9Y2NmbGFncy15ICs9IC1JJChzcmMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICs9IHJ2dV9tYm94Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICs9IHJ2dV9hZi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGUtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PQ1RFT05UWDJfUEYpICs9IHJ2dV9uaWNwZi5vIG90eDJfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX1ZGKSArPSBydnVfbmljdmYubyBvdHgyX3B0cC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTgtb2JqLSQoQ09ORklHX1JWVV9FU1dJVENIKSArPSBydnVfcmVwLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDA6MTE6NDQuNzk3NzU1MTA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE0NDI3NDgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBPY3Rlb25UWDIgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBPQ1RFT05UWDJfQUZgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGFsbCBhYm91dC4gTXkgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBFdGhlcm5ldCBkcml2ZXIuIFRoYXQncyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ2AuIEl0J3MgdGhlIGNlbnRyYWwgcGxhY2Ugd2hlcmUgeW91IGRlZmluZSB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgZHJpdmVyLiBJJ20gZ3Vlc3NpbmcgdGhhdCBgT0NURU9OVFgyX0FGYCBpcyBhIGZlYXR1cmUgZmxhZywgb3IgYSBkZXBlbmRlbmN5LCBhbmQgSSBuZWVkIHRvIHNlZSB3aGF0IGl0IGVuYWJsZXMsIGRpc2FibGVzLCBvciB3aGF0IGhhcmR3YXJlIGl0IGlzIHNwZWNpZmljIHRvLiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3IgY2x1ZXMgbGlrZSBhIGRlZmluZWQgc3ltYm9sLCBhIGRlZmF1bHQgdmFsdWUsIGFuZCBwb3NzaWJsZSBoZWxwIHRleHQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24uIEtub3dpbmcgdGhlIGhhcmR3YXJlIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdpbGwgaGVscCBtZSBpbW1lbnNlbHkgaW4gdHJvdWJsZXNob290aW5nIG9yIG1vZGlmeWluZyB0aGUgZHJpdmVyLCBpZiBuZWVkZWQuIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gZmVhdHVyZXMgc3VjaCBhcyBhbiBvZmZsb2FkIGVuZ2luZSBvciBhZHZhbmNlZCBwYWNrZXQgcHJvY2Vzc2luZyBjYXBhYmlsaXRpZXMgdGhhdCBkZXBlbmQgb24gYSBzcGVjaWZpYyBkZXZpY2UgdmVyc2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxMSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAwOjExOjQ2Ljk0MjAzMjQwOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFydmVsbCBSVlUgTmV0d29yayBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgT0NURU9OVFgyX0FGXFxuICAxMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDExOlxcdFxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbiAgMTI6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxMzpcXHRcXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsJ3MgT2N0ZW9uVFgyIFJlc291cmNlIFZpcnR1YWxpemF0aW9uXFxuICAxODpcXHRcXHQgIFVuaXQncyBhZG1pbiBmdW5jdGlvbiBtYW5hZ2VyIHdoaWNoIG1hbmFnZXMgYWxsIFJWVSBIVyByZXNvdXJjZXNcXG4gIDE5OlxcdFxcdCAgYW5kIHByb3ZpZGVzIGEgbWVkaXVtIHRvIG90aGVyIFBGL1ZGcyB0byBjb25maWd1cmUgSFcuIFNob3VsZCBiZVxcbiAgMjA6XFx0XFx0ICBlbmFibGVkIGZvciBvdGhlciBSVlUgZGV2aWNlIGRyaXZlcnMgdG8gd29yay5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXFxuICAyMzpcXHRcXHRib29sIFxcXCJEaXNhYmxlIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIGluIE5EQ1xcXCJcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gT0NURU9OVFgyX0FGXFxuICAyNTpcXHRcXHRkZWZhdWx0IG5cXG4gIDI2OlxcdFxcdGhlbHBcXG4gIDI3OlxcdFxcdCAgVGhpcyBjb25maWcgb3B0aW9uIGRpc2FibGVzIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIHN1Y2ggYXMgTklYIFNRRXNcXG4gIDI4OlxcdFxcdCAgLCBOUEEgc3RhY2sgcGFnZXMgZXRjIGluIE5EQy4gQWxzbyBsb2NrcyBkb3duIE5JWCBTUS9DUS9SUS9SU1MgYW5kXFxuICAyOTpcXHRcXHQgIE5QQSBBdXJhL1Bvb2wgY29udGV4dHMuXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBPQ1RFT05UWDJfUEZcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgMzM6XFx0XFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDM1OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDM2OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gKDY0QklUIFxcdTAwMjZcXHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcXG4gIDM4OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDM5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA0MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCAhTUFDU0VDXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwncyBPY3Rlb25UWDIgTklDIHBoeXNpY2FsIGZ1bmN0aW9uLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWcgT0NURU9OVFgyX1ZGXFxuICA0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG4gIDQ4OlxcdFxcdGhlbHBcXG4gIDQ5OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIE9jdGVvblRYMiBOSUMgdmlydHVhbCBmdW5jdGlvbi5cXG4gIDUwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMDoxMTo0Ni45NDIxMjY2NTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0ODYxMDk1NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBzcGVjaWFsaXplZCBwaWVjZSBvZiBraXQ6IGEgTWFydmVsbCBPY3Rlb25UWDIuIEl0J3MgYW4gQVJNNjQgU29DLCBhIG5ldHdvcmsgcHJvY2Vzc29yLCBhbmQsIGltcG9ydGFudGx5LCBhIFBDSWUgZGV2aWNlIHdpdGggdGhpcyBSVlUgKFJlc291cmNlIFZpcnR1YWxpemF0aW9uIFVuaXQpIEFkbWluIEZ1bmN0aW9uIGFuZCBOSUMgZnVuY3Rpb25zLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzLCBhbmQgdGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gYmUgc3VyZSwgaXMgdGhpcyAqdmVuZG9yLXNwZWNpZmljKiBoYXJkd2FyZT8gSXMgdGhpcyBPY3Rlb25UWDIgUlZVIHN0dWZmIHNvbWV0aGluZyB0aGF0J3MgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEFuZCB0aGUgYW5zd2VyLCB1bmZvcnR1bmF0ZWx5LCBpcyAqbm8qLiBUaGlzIFJWVSBpcyBzcGVjaWZpYyB0byBNYXJ2ZWxsJ3MgT2N0ZW9uVFgyIENOOVhYWCBhbmQgQ04xMFhYWCBzZXJpZXMuIFN0YW5kYXJkIFFFTVUganVzdCBkb2Vzbid0IGVtdWxhdGUgdGhhdCBoYXJkd2FyZS4gSXQncyBub3QgcGFydCBvZiB0aGUgc3RhbmRhcmQgc2V0LlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBkb3VibHkgc3VyZSBiYXNlZCBvbiBvdXIgcnVsZXMuIFJlbWVtYmVyIHRoYXQgd2UncmUgbG9va2luZyBmb3IgY29kZSB0aGF0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdoZW4gdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEFuZCB3ZSBhcmUgbG9va2luZyBhdCBjb2RlIHNwZWNpZmljYWxseSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gVGhhdCdzIHdoYXQgdGhpcyBhcHBlYXJzIHRvIGJlLlxuXG5BbHJpZ2h0LCBzbyBiZWNhdXNlIG9mIHRoaXMgTWFydmVsbCBPY3Rlb25UWDIncyB2ZW5kb3Itc3BlY2lmaWMgbmF0dXJlLCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZywgd2l0aG91dCBhIGRvdWJ0LCBzaG91bGQgYmUgYGZhbHNlYC5cblxuSnVzdCBuZWVkIHRvIGNvbmZpcm0gdGhlcmUgYXJlbid0IGFueSBzbmVha3kgY2hhbmdlcyBpbiBvdGhlciBmaWxlcyBpbiB0aGlzIHBhdGNoIHNlcmllcy4gR29vZCwgbG9va3MgbGlrZSB0aGUgb25seSBmaWxlIHRvdWNoZWQgaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuY2AuXG5cbk9rYXksIG5vdyBsZXQncyBzZXQgdXAgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBjYWxsLlxuXG4tICAgYEVuYWJsZUNvbmZpZ3NgIGFyZSBlbXB0eS5cbi0gICBgRm9jdXNTeW1ib2xzYCBhcmUgZW1wdHkuXG4tICAgTXkgUmVhc29uaW5nIGlzIHNvbGlkLiBDaGFuZ2VzIGFyZSBpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoYE9DVEVPTlRYMl9BRmApLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgTWFydmVsbCBPY3Rlb25UWDIgU29DL1BDSWUgZGV2aWNlcywgYW5kIGFzIHdlJ3ZlIGVzdGFibGlzaGVkLCB0aGlzIGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3Igb3RoZXIgZnV6emluZyBlbnZpcm9ubWVudHMsIHNvIGl04oCZcyB1bnJlYWNoYWJsZS5cbi0gICBgV29ydGhGdXp6aW5nYCBpcyB1bmVxdWl2b2NhbGx5IGBmYWxzZWAuXG5cbkxldCdzIGludm9rZSBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODUyLCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAwOjExOjUxLjgwMzIyNDE0NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYykuIFRoaXMgZHJpdmVyIGlzIGZvciB2ZW5kb3Itc3BlY2lmaWMgTWFydmVsbCBPY3Rlb25UWDIgaGFyZHdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUvU29DIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jKS4gVGhpcyBkcml2ZXIgaXMgZm9yIHZlbmRvci1zcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZS9Tb0MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAwOjExOjUxLjgwMzI1NTk4NloiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowmbd8c[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-01 23:25:15 +0000 UTC FinishedAt: 2026-09-02 00:11:53 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDAwOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYykuIFRoaXMgZHJpdmVyIGlzIGZvciB2ZW5kb3Itc3BlY2lmaWMgTWFydmVsbCBPY3Rlb25UWDIgaGFyZHdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUvU29DIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAwOjExPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDFkZmVlODc2YjBjMGU4ZTBmNTJlOGU2M2UxYmY1NzcwZjMzNTIxMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDA6MTE6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jXG5pbmRleCBlMmEzM2U0NmI0OGFkLi5jODI1NTI3MWY4NGViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmNcbkBAIC01OCw2ICYjNDM7NTgsMTkgQEAgc3RhdGljIGludCBucGFfYXFfZW5xdWV1ZV93YWl0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IHJ2dV9ibG9jayAqYmxvY2ssXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgbnBhX2F1cmFfdHJhbnNsYXRlX3Bvb2xfYWRkcihzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYsIHU2NCAqcG9vbF9hZGRyKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFwZnZmLVx1MDAzZXBvb2xfY3R4KVxuJiM0MztcdFx0cmV0dXJuIE5QQV9BRl9FUlJfQVFfRU5RVUVVRTtcbiYjNDM7XG4mIzQzO1x0aWYgKCpwb29sX2FkZHIgXHUwMDNlPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZXFzaXplKVxuJiM0MztcdFx0cmV0dXJuIE5QQV9BRl9FUlJfUEFSQU07XG4mIzQzO1xuJiM0MztcdCpwb29sX2FkZHIgPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWlvdmEgJiM0MztcbiYjNDM7XHRcdCAgICAgKCpwb29sX2FkZHIgKiBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWVudHJ5X3N6KTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBpbnQgcnZ1X25wYV9hcV9lbnFfaW5zdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGFfYXFfZW5xX3JlcSAqcmVxLFxuIFx0XHRcdHN0cnVjdCBucGFfYXFfZW5xX3JzcCAqcnNwKVxuIHtcbkBAIC0xMTYsNiAmIzQzOzEyOSwxMiBAQCBpbnQgcnZ1X25wYV9hcV9lbnFfaW5zdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGFfYXFfZW5xX3JlcSAqcmVxLFxuIFx0Y2FzZSBOUEFfQVFfSU5TVE9QX1dSSVRFOlxuIFx0XHQvKiBDb3B5IGNvbnRleHQgYW5kIHdyaXRlIG1hc2sgKi9cbiBcdFx0aWYgKHJlcS1cdTAwM2VjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkge1xuJiM0MztcdFx0XHRpZiAocmVxLVx1MDAzZWF1cmFfbWFzay5wb29sX2FkZHIpIHtcbiYjNDM7XHRcdFx0XHRyYyA9IG5wYV9hdXJhX3RyYW5zbGF0ZV9wb29sX2FkZHIocGZ2ZixcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdCAgXHUwMDI2cmVxLVx1MDAzZWF1cmEucG9vbF9hZGRyKTtcbiYjNDM7XHRcdFx0XHRpZiAocmMpXG4mIzQzO1x0XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuIFx0XHRcdG1lbWNweShtYXNrLCBcdTAwMjZyZXEtXHUwMDNlYXVyYV9tYXNrLFxuIFx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG5wYV9hdXJhX3MpKTtcbiBcdFx0XHRtZW1jcHkoY3R4LCBcdTAwMjZyZXEtXHUwMDNlYXVyYSwgc2l6ZW9mKHN0cnVjdCBucGFfYXVyYV9zKSk7XG5AQCAtMTI3LDEzICYjNDM7MTQ2LDEwIEBAIGludCBydnVfbnBhX2FxX2VucV9pbnN0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wYV9hcV9lbnFfcmVxICpyZXEsXG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOUEFfQVFfSU5TVE9QX0lOSVQ6XG4gXHRcdGlmIChyZXEtXHUwMDNlY3R5cGUgPT0gTlBBX0FRX0NUWVBFX0FVUkEpIHtcbi1cdFx0XHRpZiAocmVxLVx1MDAzZWF1cmEucG9vbF9hZGRyIFx1MDAzZT0gcGZ2Zi1cdTAwM2Vwb29sX2N0eC1cdTAwM2Vxc2l6ZSkge1xuLVx0XHRcdFx0cmMgPSBOUEFfQUZfRVJSX0FRX0ZVTEw7XG4mIzQzO1x0XHRcdHJjID0gbnBhX2F1cmFfdHJhbnNsYXRlX3Bvb2xfYWRkcihwZnZmLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgXHUwMDI2cmVxLVx1MDAzZWF1cmEucG9vbF9hZGRyKTtcbiYjNDM7XHRcdFx0aWYgKHJjKVxuIFx0XHRcdFx0YnJlYWs7XG4tXHRcdFx0fVxuLVx0XHRcdC8qIFNldCBwb29sJiMzOTtzIGNvbnRleHQgYWRkcmVzcyAqL1xuLVx0XHRcdHJlcS1cdTAwM2VhdXJhLnBvb2xfYWRkciA9IHBmdmYtXHUwMDNlcG9vbF9jdHgtXHUwMDNlaW92YSAmIzQzO1xuLVx0XHRcdChyZXEtXHUwMDNlYXVyYS5wb29sX2FkZHIgKiBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWVudHJ5X3N6KTtcbiBcdFx0XHRtZW1jcHkoY3R4LCBcdTAwMjZyZXEtXHUwMDNlYXVyYSwgc2l6ZW9mKHN0cnVjdCBucGFfYXVyYV9zKSk7XG4gXHRcdH0gZWxzZSB7IC8qIFBPT0wmIzM5O3MgY29udGV4dCAqL1xuIFx0XHRcdG1lbWNweShjdHgsIFx1MDAyNnJlcS1cdTAwM2Vwb29sLCBzaXplb2Yoc3RydWN0IG5wYV9wb29sX3MpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMDoxMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jKS4gVGhpcyBkcml2ZXIgaXMgZm9yIHZlbmRvci1zcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZS9Tb0MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMWRmZWU4NzZiMGMwZThlMGY1MmU4ZTYzZTFiZjU3NzBmMzM1MjEyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAwMDoxMTozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYwppbmRleCBlMmEzM2U0NmI0OGFkLi5jODI1NTI3MWY4NGViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jCkBAIC01OCw2ICYjNDM7NTgsMTkgQEAgc3RhdGljIGludCBucGFfYXFfZW5xdWV1ZV93YWl0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IHJ2dV9ibG9jayAqYmxvY2ssCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgaW50IG5wYV9hdXJhX3RyYW5zbGF0ZV9wb29sX2FkZHIoc3RydWN0IHJ2dV9wZnZmICpwZnZmLCB1NjQgKnBvb2xfYWRkcikKJiM0Mzt7CiYjNDM7CWlmICghcGZ2Zi0mZ3Q7cG9vbF9jdHgpCiYjNDM7CQlyZXR1cm4gTlBBX0FGX0VSUl9BUV9FTlFVRVVFOwomIzQzOwomIzQzOwlpZiAoKnBvb2xfYWRkciAmZ3Q7PSBwZnZmLSZndDtwb29sX2N0eC0mZ3Q7cXNpemUpCiYjNDM7CQlyZXR1cm4gTlBBX0FGX0VSUl9QQVJBTTsKJiM0MzsKJiM0MzsJKnBvb2xfYWRkciA9IHBmdmYtJmd0O3Bvb2xfY3R4LSZndDtpb3ZhICYjNDM7CiYjNDM7CQkgICAgICgqcG9vbF9hZGRyICogcGZ2Zi0mZ3Q7cG9vbF9jdHgtJmd0O2VudHJ5X3N6KTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSwKIAkJCXN0cnVjdCBucGFfYXFfZW5xX3JzcCAqcnNwKQogewpAQCAtMTE2LDYgJiM0MzsxMjksMTIgQEAgaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSwKIAljYXNlIE5QQV9BUV9JTlNUT1BfV1JJVEU6CiAJCS8qIENvcHkgY29udGV4dCBhbmQgd3JpdGUgbWFzayAqLwogCQlpZiAocmVxLSZndDtjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkgewomIzQzOwkJCWlmIChyZXEtJmd0O2F1cmFfbWFzay5wb29sX2FkZHIpIHsKJiM0MzsJCQkJcmMgPSBucGFfYXVyYV90cmFuc2xhdGVfcG9vbF9hZGRyKHBmdmYsCiYjNDM7CQkJCQkJCQkgICZhbXA7cmVxLSZndDthdXJhLnBvb2xfYWRkcik7CiYjNDM7CQkJCWlmIChyYykKJiM0MzsJCQkJCWJyZWFrOwomIzQzOwkJCX0KIAkJCW1lbWNweShtYXNrLCAmYW1wO3JlcS0mZ3Q7YXVyYV9tYXNrLAogCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgbnBhX2F1cmFfcykpOwogCQkJbWVtY3B5KGN0eCwgJmFtcDtyZXEtJmd0O2F1cmEsIHNpemVvZihzdHJ1Y3QgbnBhX2F1cmFfcykpOwpAQCAtMTI3LDEzICYjNDM7MTQ2LDEwIEBAIGludCBydnVfbnBhX2FxX2VucV9pbnN0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wYV9hcV9lbnFfcmVxICpyZXEsCiAJCWJyZWFrOwogCWNhc2UgTlBBX0FRX0lOU1RPUF9JTklUOgogCQlpZiAocmVxLSZndDtjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkgewotCQkJaWYgKHJlcS0mZ3Q7YXVyYS5wb29sX2FkZHIgJmd0Oz0gcGZ2Zi0mZ3Q7cG9vbF9jdHgtJmd0O3FzaXplKSB7Ci0JCQkJcmMgPSBOUEFfQUZfRVJSX0FRX0ZVTEw7CiYjNDM7CQkJcmMgPSBucGFfYXVyYV90cmFuc2xhdGVfcG9vbF9hZGRyKHBmdmYsCiYjNDM7CQkJCQkJCSAgJmFtcDtyZXEtJmd0O2F1cmEucG9vbF9hZGRyKTsKJiM0MzsJCQlpZiAocmMpCiAJCQkJYnJlYWs7Ci0JCQl9Ci0JCQkvKiBTZXQgcG9vbCYjMzk7cyBjb250ZXh0IGFkZHJlc3MgKi8KLQkJCXJlcS0mZ3Q7YXVyYS5wb29sX2FkZHIgPSBwZnZmLSZndDtwb29sX2N0eC0mZ3Q7aW92YSAmIzQzOwotCQkJKHJlcS0mZ3Q7YXVyYS5wb29sX2FkZHIgKiBwZnZmLSZndDtwb29sX2N0eC0mZ3Q7ZW50cnlfc3opOwogCQkJbWVtY3B5KGN0eCwgJmFtcDtyZXEtJmd0O2F1cmEsIHNpemVvZihzdHJ1Y3QgbnBhX2F1cmFfcykpOwogCQl9IGVsc2UgeyAvKiBQT09MJiMzOTtzIGNvbnRleHQgKi8KIAkJCW1lbWNweShjdHgsICZhbXA7cmVxLSZndDtwb29sLCBzaXplb2Yoc3RydWN0IG5wYV9wb29sX3MpKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDA6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGFuZCBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBoYXJkd2FyZS9kcml2ZXIgY29tYmluYXRpb24uIFRpbWUgdG8gaGl0IGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZC4gSXQmIzM5O3MgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSAoUmVzb3VyY2UgVmlydHVhbGl6YXRpb24gVW5pdCkgTlBBIChOZXR3b3JrIFBvb2wgQWxsb2NhdG9yKSBkcml2ZXIsIHJpZ2h0PyBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyB0aGlzIE1hcnZlbGwgT2N0ZW9uVFgyIGhhcmR3YXJlLXNwZWNpZmljLCBvciBkb2VzIGl0IGhhdmUgc29tZSBzb3J0IG9mIFFFTVUgZW11bGF0aW9uPwoKSSBuZWVkIHRvIGFwcGx5IHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhLiBNeSBtZW50YWwgY2hlY2tsaXN0IGdvZXMgc29tZXRoaW5nIGxpa2U6CiogICBJcyB0aGUgY29kZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZT8KKiAgIElzIHRoaXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGNvZGU/CgpJZiBpdCYjMzk7cyB0aGUgbGF0dGVyLCBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlbiBpdCYjMzk7cyBhICYjMzQ7bm8tZ28mIzM0Oy4gU28sIEkgc2hvdWxkIHN0YXJ0IGV4cGxvcmluZyB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2AgZGlyZWN0b3J5IGFuZCBgS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgSSBuZWVkIHRvIGZpbmQgdGhlIGFuc3dlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfT0NURU9OVFgyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9NQk9YKSAmIzQzOz0gYWYvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICYjNDM7PSBhZi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgJiM0Mzs9IG5pYy9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZT02PWNjZmxhZ3MteSAmIzQzOz0gLUkkKHNyYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9NQk9YKSAmIzQzOz0gcnZ1X21ib3gub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSAmIzQzOz0gcnZ1X2FmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlLTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSAmIzQzOz0gcnZ1X25pY3BmLm8gb3R4Ml9wdHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9WRikgJiM0Mzs9IHJ2dV9uaWN2Zi5vIG90eDJfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS04LW9iai0kKENPTkZJR19SVlVfRVNXSVRDSCkgJiM0Mzs9IHJ2dV9yZXAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBPY3Rlb25UWDIgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgT0NURU9OVFgyX0FGYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhbGwgYWJvdXQuIE15IGluc3RpbmN0IGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGBLY29uZmlnYCBmaWxlIGZvciB0aGUgTWFydmVsbCBPY3Rlb25UWDIgRXRoZXJuZXQgZHJpdmVyLiBUaGF0JiMzOTtzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnYC4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgcGxhY2Ugd2hlcmUgeW91IGRlZmluZSB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgZHJpdmVyLiBJJiMzOTttIGd1ZXNzaW5nIHRoYXQgYE9DVEVPTlRYMl9BRmAgaXMgYSBmZWF0dXJlIGZsYWcsIG9yIGEgZGVwZW5kZW5jeSwgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCBpdCBlbmFibGVzLCBkaXNhYmxlcywgb3Igd2hhdCBoYXJkd2FyZSBpdCBpcyBzcGVjaWZpYyB0by4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBjbHVlcyBsaWtlIGEgZGVmaW5lZCBzeW1ib2wsIGEgZGVmYXVsdCB2YWx1ZSwgYW5kIHBvc3NpYmxlIGhlbHAgdGV4dCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZ29pbmcgb24uIEtub3dpbmcgdGhlIGhhcmR3YXJlIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdpbGwgaGVscCBtZSBpbW1lbnNlbHkgaW4gdHJvdWJsZXNob290aW5nIG9yIG1vZGlmeWluZyB0aGUgZHJpdmVyLCBpZiBuZWVkZWQuIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gZmVhdHVyZXMgc3VjaCBhcyBhbiBvZmZsb2FkIGVuZ2luZSBvciBhZHZhbmNlZCBwYWNrZXQgcHJvY2Vzc2luZyBjYXBhYmlsaXRpZXMgdGhhdCBkZXBlbmQgb24gYSBzcGVjaWZpYyBkZXZpY2UgdmVyc2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMDoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNYXJ2ZWxsIFJWVSBOZXR3b3JrIGRyaXZlcnMgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgT0NURU9OVFgyX01CT1hcbiAgIDc6XHRcdHRyaXN0YXRlXG4gICA4Olx0XG4gICA5Olx0Y29uZmlnIE9DVEVPTlRYMl9BRlxuICAxMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuICAxMTpcdFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXG4gIDEyOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTM6XHRcdGRlcGVuZHMgb24gKDY0QklUIFx1MDAyNlx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XG4gIDE0Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAxNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsJiMzOTtzIE9jdGVvblRYMiBSZXNvdXJjZSBWaXJ0dWFsaXphdGlvblxuICAxODpcdFx0ICBVbml0JiMzOTtzIGFkbWluIGZ1bmN0aW9uIG1hbmFnZXIgd2hpY2ggbWFuYWdlcyBhbGwgUlZVIEhXIHJlc291cmNlc1xuICAxOTpcdFx0ICBhbmQgcHJvdmlkZXMgYSBtZWRpdW0gdG8gb3RoZXIgUEYvVkZzIHRvIGNvbmZpZ3VyZSBIVy4gU2hvdWxkIGJlXG4gIDIwOlx0XHQgIGVuYWJsZWQgZm9yIG90aGVyIFJWVSBkZXZpY2UgZHJpdmVycyB0byB3b3JrLlxuICAyMTpcdFxuICAyMjpcdGNvbmZpZyBORENfRElTX0RZTkFNSUNfQ0FDSElOR1xuICAyMzpcdFx0Ym9vbCBcJiMzNDtEaXNhYmxlIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIGluIE5EQ1wmIzM0O1xuICAyNDpcdFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfQUZcbiAgMjU6XHRcdGRlZmF1bHQgblxuICAyNjpcdFx0aGVscFxuICAyNzpcdFx0ICBUaGlzIGNvbmZpZyBvcHRpb24gZGlzYWJsZXMgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgc3VjaCBhcyBOSVggU1FFc1xuICAyODpcdFx0ICAsIE5QQSBzdGFjayBwYWdlcyBldGMgaW4gTkRDLiBBbHNvIGxvY2tzIGRvd24gTklYIFNRL0NRL1JRL1JTUyBhbmRcbiAgMjk6XHRcdCAgTlBBIEF1cmEvUG9vbCBjb250ZXh0cy5cbiAgMzA6XHRcbiAgMzE6XHRjb25maWcgT0NURU9OVFgyX1BGXG4gIDMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG4gIDMzOlx0XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbiAgMzQ6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAzNTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAzNjpcdFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xuICAzNzpcdFx0ZGVwZW5kcyBvbiAoNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcbiAgMzg6XHRcdHNlbGVjdCBESU1MSUJcbiAgMzk6XHRcdGRlcGVuZHMgb24gUENJXG4gIDQwOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDQxOlx0XHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCAhTUFDU0VDXG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIE5JQyBwaHlzaWNhbCBmdW5jdGlvbi5cbiAgNDQ6XHRcbiAgNDU6XHRjb25maWcgT0NURU9OVFgyX1ZGXG4gIDQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXG4gIDQ4Olx0XHRoZWxwXG4gIDQ5Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIE5JQyB2aXJ0dWFsIGZ1bmN0aW9uLlxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NTIKCQkJCQkJCW91dHB1dDogMTE0CgkJCQkJCQl0aG91Z2h0czogNDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBhIHNwZWNpYWxpemVkIHBpZWNlIG9mIGtpdDogYSBNYXJ2ZWxsIE9jdGVvblRYMi4gSXQmIzM5O3MgYW4gQVJNNjQgU29DLCBhIG5ldHdvcmsgcHJvY2Vzc29yLCBhbmQsIGltcG9ydGFudGx5LCBhIFBDSWUgZGV2aWNlIHdpdGggdGhpcyBSVlUgKFJlc291cmNlIFZpcnR1YWxpemF0aW9uIFVuaXQpIEFkbWluIEZ1bmN0aW9uIGFuZCBOSUMgZnVuY3Rpb25zLgoKVGhlIGtleSBxdWVzdGlvbiBpcywgYW5kIHRoaXMgaXMgd2hlcmUgSSBuZWVkIHRvIGJlIHN1cmUsIGlzIHRoaXMgKnZlbmRvci1zcGVjaWZpYyogaGFyZHdhcmU/IElzIHRoaXMgT2N0ZW9uVFgyIFJWVSBzdHVmZiBzb21ldGhpbmcgdGhhdCYjMzk7cyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQW5kIHRoZSBhbnN3ZXIsIHVuZm9ydHVuYXRlbHksIGlzICpubyouIFRoaXMgUlZVIGlzIHNwZWNpZmljIHRvIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIENOOVhYWCBhbmQgQ04xMFhYWCBzZXJpZXMuIFN0YW5kYXJkIFFFTVUganVzdCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgaGFyZHdhcmUuIEl0JiMzOTtzIG5vdCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBzZXQuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2UgZG91Ymx5IHN1cmUgYmFzZWQgb24gb3VyIHJ1bGVzLiBSZW1lbWJlciB0aGF0IHdlJiMzOTtyZSBsb29raW5nIGZvciBjb2RlIHRoYXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2hlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gQW5kIHdlIGFyZSBsb29raW5nIGF0IGNvZGUgc3BlY2lmaWNhbGx5IGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLiBUaGF0JiMzOTtzIHdoYXQgdGhpcyBhcHBlYXJzIHRvIGJlLgoKQWxyaWdodCwgc28gYmVjYXVzZSBvZiB0aGlzIE1hcnZlbGwgT2N0ZW9uVFgyJiMzOTtzIHZlbmRvci1zcGVjaWZpYyBuYXR1cmUsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnLCB3aXRob3V0IGEgZG91YnQsIHNob3VsZCBiZSBgZmFsc2VgLgoKSnVzdCBuZWVkIHRvIGNvbmZpcm0gdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGNoYW5nZXMgaW4gb3RoZXIgZmlsZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMuIEdvb2QsIGxvb2tzIGxpa2UgdGhlIG9ubHkgZmlsZSB0b3VjaGVkIGlzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmNgLgoKT2theSwgbm93IGxldCYjMzk7cyBzZXQgdXAgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBjYWxsLgoKLSAgIGBFbmFibGVDb25maWdzYCBhcmUgZW1wdHkuCi0gICBgRm9jdXNTeW1ib2xzYCBhcmUgZW1wdHkuCi0gICBNeSBSZWFzb25pbmcgaXMgc29saWQuIENoYW5nZXMgYXJlIGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyIChgT0NURU9OVFgyX0FGYCkuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBNYXJ2ZWxsIE9jdGVvblRYMiBTb0MvUENJZSBkZXZpY2VzLCBhbmQgYXMgd2UmIzM5O3ZlIGVzdGFibGlzaGVkLCB0aGlzIGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIG90aGVyIGZ1enppbmcgZW52aXJvbm1lbnRzLCBzbyBpdOKAmXMgdW5yZWFjaGFibGUuCi0gICBgV29ydGhGdXp6aW5nYCBpcyB1bmVxdWl2b2NhbGx5IGBmYWxzZWAuCgpMZXQmIzM5O3MgaW52b2tlIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jKS4gVGhpcyBkcml2ZXIgaXMgZm9yIHZlbmRvci1zcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZS9Tb0MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMpLiBUaGlzIGRyaXZlciBpcyBmb3IgdmVuZG9yLXNwZWNpZmljIE1hcnZlbGwgT2N0ZW9uVFgyIGhhcmR3YXJlIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llL1NvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMDoxMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDJUMDA6MTE6MzguNzA5ODYzNTYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwOTM0MDgzMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jKS4gVGhpcyBkcml2ZXIgaXMgZm9yIHZlbmRvci1zcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZS9Tb0MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAwOjExOjM4LjcwOTg2ODU3M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5NzM1MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDFkZmVlODc2YjBjMGU4ZTBmNTJlOGU2M2UxYmY1NzcwZjMzNTIxMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDAwOjExOjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuY1xcbmluZGV4IGUyYTMzZTQ2YjQ4YWQuLmM4MjU1MjcxZjg0ZWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jXFxuQEAgLTU4LDYgKzU4LDE5IEBAIHN0YXRpYyBpbnQgbnBhX2FxX2VucXVldWVfd2FpdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBydnVfYmxvY2sgKmJsb2NrLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBucGFfYXVyYV90cmFuc2xhdGVfcG9vbF9hZGRyKHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiwgdTY0ICpwb29sX2FkZHIpXFxuK3tcXG4rXFx0aWYgKCFwZnZmLVxcdTAwM2Vwb29sX2N0eClcXG4rXFx0XFx0cmV0dXJuIE5QQV9BRl9FUlJfQVFfRU5RVUVVRTtcXG4rXFxuK1xcdGlmICgqcG9vbF9hZGRyIFxcdTAwM2U9IHBmdmYtXFx1MDAzZXBvb2xfY3R4LVxcdTAwM2Vxc2l6ZSlcXG4rXFx0XFx0cmV0dXJuIE5QQV9BRl9FUlJfUEFSQU07XFxuK1xcbitcXHQqcG9vbF9hZGRyID0gcGZ2Zi1cXHUwMDNlcG9vbF9jdHgtXFx1MDAzZWlvdmEgK1xcbitcXHRcXHQgICAgICgqcG9vbF9hZGRyICogcGZ2Zi1cXHUwMDNlcG9vbF9jdHgtXFx1MDAzZWVudHJ5X3N6KTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIGludCBydnVfbnBhX2FxX2VucV9pbnN0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wYV9hcV9lbnFfcmVxICpyZXEsXFxuIFxcdFxcdFxcdHN0cnVjdCBucGFfYXFfZW5xX3JzcCAqcnNwKVxcbiB7XFxuQEAgLTExNiw2ICsxMjksMTIgQEAgaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSxcXG4gXFx0Y2FzZSBOUEFfQVFfSU5TVE9QX1dSSVRFOlxcbiBcXHRcXHQvKiBDb3B5IGNvbnRleHQgYW5kIHdyaXRlIG1hc2sgKi9cXG4gXFx0XFx0aWYgKHJlcS1cXHUwMDNlY3R5cGUgPT0gTlBBX0FRX0NUWVBFX0FVUkEpIHtcXG4rXFx0XFx0XFx0aWYgKHJlcS1cXHUwMDNlYXVyYV9tYXNrLnBvb2xfYWRkcikge1xcbitcXHRcXHRcXHRcXHRyYyA9IG5wYV9hdXJhX3RyYW5zbGF0ZV9wb29sX2FkZHIocGZ2ZixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2cmVxLVxcdTAwM2VhdXJhLnBvb2xfYWRkcik7XFxuK1xcdFxcdFxcdFxcdGlmIChyYylcXG4rXFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0XFx0bWVtY3B5KG1hc2ssIFxcdTAwMjZyZXEtXFx1MDAzZWF1cmFfbWFzayxcXG4gXFx0XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbnBhX2F1cmFfcykpO1xcbiBcXHRcXHRcXHRtZW1jcHkoY3R4LCBcXHUwMDI2cmVxLVxcdTAwM2VhdXJhLCBzaXplb2Yoc3RydWN0IG5wYV9hdXJhX3MpKTtcXG5AQCAtMTI3LDEzICsxNDYsMTAgQEAgaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSxcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTlBBX0FRX0lOU1RPUF9JTklUOlxcbiBcXHRcXHRpZiAocmVxLVxcdTAwM2VjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkge1xcbi1cXHRcXHRcXHRpZiAocmVxLVxcdTAwM2VhdXJhLnBvb2xfYWRkciBcXHUwMDNlPSBwZnZmLVxcdTAwM2Vwb29sX2N0eC1cXHUwMDNlcXNpemUpIHtcXG4tXFx0XFx0XFx0XFx0cmMgPSBOUEFfQUZfRVJSX0FRX0ZVTEw7XFxuK1xcdFxcdFxcdHJjID0gbnBhX2F1cmFfdHJhbnNsYXRlX3Bvb2xfYWRkcihwZnZmLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZyZXEtXFx1MDAzZWF1cmEucG9vbF9hZGRyKTtcXG4rXFx0XFx0XFx0aWYgKHJjKVxcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHQvKiBTZXQgcG9vbCdzIGNvbnRleHQgYWRkcmVzcyAqL1xcbi1cXHRcXHRcXHRyZXEtXFx1MDAzZWF1cmEucG9vbF9hZGRyID0gcGZ2Zi1cXHUwMDNlcG9vbF9jdHgtXFx1MDAzZWlvdmEgK1xcbi1cXHRcXHRcXHQocmVxLVxcdTAwM2VhdXJhLnBvb2xfYWRkciAqIHBmdmYtXFx1MDAzZXBvb2xfY3R4LVxcdTAwM2VlbnRyeV9zeik7XFxuIFxcdFxcdFxcdG1lbWNweShjdHgsIFxcdTAwMjZyZXEtXFx1MDAzZWF1cmEsIHNpemVvZihzdHJ1Y3QgbnBhX2F1cmFfcykpO1xcbiBcXHRcXHR9IGVsc2UgeyAvKiBQT09MJ3MgY29udGV4dCAqL1xcbiBcXHRcXHRcXHRtZW1jcHkoY3R4LCBcXHUwMDI2cmVxLVxcdTAwM2Vwb29sLCBzaXplb2Yoc3RydWN0IG5wYV9wb29sX3MpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDA6MTE6MzkuMTkxODg4NzEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMjYxMTM2NTMzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYykuIFRoaXMgZHJpdmVyIGlzIGZvciB2ZW5kb3Itc3BlY2lmaWMgTWFydmVsbCBPY3Rlb25UWDIgaGFyZHdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUvU29DIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkMWRmZWU4NzZiMGMwZThlMGY1MmU4ZTYzZTFiZjU3NzBmMzM1MjEyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAwMDoxMTozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuY1xuaW5kZXggZTJhMzNlNDZiNDhhZC4uYzgyNTUyNzFmODRlYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jXG5AQCAtNTgsNiArNTgsMTkgQEAgc3RhdGljIGludCBucGFfYXFfZW5xdWV1ZV93YWl0KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IHJ2dV9ibG9jayAqYmxvY2ssXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBucGFfYXVyYV90cmFuc2xhdGVfcG9vbF9hZGRyKHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiwgdTY0ICpwb29sX2FkZHIpXG4re1xuK1x0aWYgKCFwZnZmLVx1MDAzZXBvb2xfY3R4KVxuK1x0XHRyZXR1cm4gTlBBX0FGX0VSUl9BUV9FTlFVRVVFO1xuK1xuK1x0aWYgKCpwb29sX2FkZHIgXHUwMDNlPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZXFzaXplKVxuK1x0XHRyZXR1cm4gTlBBX0FGX0VSUl9QQVJBTTtcbitcbitcdCpwb29sX2FkZHIgPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWlvdmEgK1xuK1x0XHQgICAgICgqcG9vbF9hZGRyICogcGZ2Zi1cdTAwM2Vwb29sX2N0eC1cdTAwM2VlbnRyeV9zeik7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSxcbiBcdFx0XHRzdHJ1Y3QgbnBhX2FxX2VucV9yc3AgKnJzcClcbiB7XG5AQCAtMTE2LDYgKzEyOSwxMiBAQCBpbnQgcnZ1X25wYV9hcV9lbnFfaW5zdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGFfYXFfZW5xX3JlcSAqcmVxLFxuIFx0Y2FzZSBOUEFfQVFfSU5TVE9QX1dSSVRFOlxuIFx0XHQvKiBDb3B5IGNvbnRleHQgYW5kIHdyaXRlIG1hc2sgKi9cbiBcdFx0aWYgKHJlcS1cdTAwM2VjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkge1xuK1x0XHRcdGlmIChyZXEtXHUwMDNlYXVyYV9tYXNrLnBvb2xfYWRkcikge1xuK1x0XHRcdFx0cmMgPSBucGFfYXVyYV90cmFuc2xhdGVfcG9vbF9hZGRyKHBmdmYsXG4rXHRcdFx0XHRcdFx0XHRcdCAgXHUwMDI2cmVxLVx1MDAzZWF1cmEucG9vbF9hZGRyKTtcbitcdFx0XHRcdGlmIChyYylcbitcdFx0XHRcdFx0YnJlYWs7XG4rXHRcdFx0fVxuIFx0XHRcdG1lbWNweShtYXNrLCBcdTAwMjZyZXEtXHUwMDNlYXVyYV9tYXNrLFxuIFx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG5wYV9hdXJhX3MpKTtcbiBcdFx0XHRtZW1jcHkoY3R4LCBcdTAwMjZyZXEtXHUwMDNlYXVyYSwgc2l6ZW9mKHN0cnVjdCBucGFfYXVyYV9zKSk7XG5AQCAtMTI3LDEzICsxNDYsMTAgQEAgaW50IHJ2dV9ucGFfYXFfZW5xX2luc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBhX2FxX2VucV9yZXEgKnJlcSxcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5QQV9BUV9JTlNUT1BfSU5JVDpcbiBcdFx0aWYgKHJlcS1cdTAwM2VjdHlwZSA9PSBOUEFfQVFfQ1RZUEVfQVVSQSkge1xuLVx0XHRcdGlmIChyZXEtXHUwMDNlYXVyYS5wb29sX2FkZHIgXHUwMDNlPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZXFzaXplKSB7XG4tXHRcdFx0XHRyYyA9IE5QQV9BRl9FUlJfQVFfRlVMTDtcbitcdFx0XHRyYyA9IG5wYV9hdXJhX3RyYW5zbGF0ZV9wb29sX2FkZHIocGZ2ZixcbitcdFx0XHRcdFx0XHRcdCAgXHUwMDI2cmVxLVx1MDAzZWF1cmEucG9vbF9hZGRyKTtcbitcdFx0XHRpZiAocmMpXG4gXHRcdFx0XHRicmVhaztcbi1cdFx0XHR9XG4tXHRcdFx0LyogU2V0IHBvb2wncyBjb250ZXh0IGFkZHJlc3MgKi9cbi1cdFx0XHRyZXEtXHUwMDNlYXVyYS5wb29sX2FkZHIgPSBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWlvdmEgK1xuLVx0XHRcdChyZXEtXHUwMDNlYXVyYS5wb29sX2FkZHIgKiBwZnZmLVx1MDAzZXBvb2xfY3R4LVx1MDAzZWVudHJ5X3N6KTtcbiBcdFx0XHRtZW1jcHkoY3R4LCBcdTAwMjZyZXEtXHUwMDNlYXVyYSwgc2l6ZW9mKHN0cnVjdCBucGFfYXVyYV9zKSk7XG4gXHRcdH0gZWxzZSB7IC8qIFBPT0wncyBjb250ZXh0ICovXG4gXHRcdFx0bWVtY3B5KGN0eCwgXHUwMDI2cmVxLVx1MDAzZXBvb2wsIHNpemVvZihzdHJ1Y3QgbnBhX3Bvb2xfcykpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDA6MTE6MzkuMTkxODkwMTYzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ5NzYzODU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGFuZCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgaGFyZHdhcmUvZHJpdmVyIGNvbWJpbmF0aW9uLiBUaW1lIHRvIGhpdCBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQuIEl0J3MgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSAoUmVzb3VyY2UgVmlydHVhbGl6YXRpb24gVW5pdCkgTlBBIChOZXR3b3JrIFBvb2wgQWxsb2NhdG9yKSBkcml2ZXIsIHJpZ2h0PyBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyB0aGlzIE1hcnZlbGwgT2N0ZW9uVFgyIGhhcmR3YXJlLXNwZWNpZmljLCBvciBkb2VzIGl0IGhhdmUgc29tZSBzb3J0IG9mIFFFTVUgZW11bGF0aW9uP1xuXG5JIG5lZWQgdG8gYXBwbHkgdGhlIFwiV29ydGhGdXp6aW5nXCIgY3JpdGVyaWEuIE15IG1lbnRhbCBjaGVja2xpc3QgZ29lcyBzb21ldGhpbmcgbGlrZTpcbiogICBJcyB0aGUgY29kZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZT9cbiogICBJcyB0aGlzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBjb2RlP1xuXG5JZiBpdCdzIHRoZSBsYXR0ZXIsIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGVuIGl0J3MgYSBcIm5vLWdvXCIuIFNvLCBJIHNob3VsZCBzdGFydCBleHBsb3JpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9gIGRpcmVjdG9yeSBhbmQgYEtjb25maWdgLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBmaW5kIHRoZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMDoxMTo0NC42ODk1MzI1MzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MjEyNDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19PQ1RFT05UWDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgKz0gYWYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSArPSBhZi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfUEYpICs9IG5pYy9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlPTY9Y2NmbGFncy15ICs9IC1JJChzcmMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICs9IHJ2dV9tYm94Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICs9IHJ2dV9hZi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGUtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PQ1RFT05UWDJfUEYpICs9IHJ2dV9uaWNwZi5vIG90eDJfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX1ZGKSArPSBydnVfbmljdmYubyBvdHgyX3B0cC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTgtb2JqLSQoQ09ORklHX1JWVV9FU1dJVENIKSArPSBydnVfcmVwLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDA6MTE6NDQuNzk3NzU1MTA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE0NDI3NDgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBPY3Rlb25UWDIgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBPQ1RFT05UWDJfQUZgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGFsbCBhYm91dC4gTXkgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBFdGhlcm5ldCBkcml2ZXIuIFRoYXQncyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ2AuIEl0J3MgdGhlIGNlbnRyYWwgcGxhY2Ugd2hlcmUgeW91IGRlZmluZSB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgZHJpdmVyLiBJJ20gZ3Vlc3NpbmcgdGhhdCBgT0NURU9OVFgyX0FGYCBpcyBhIGZlYXR1cmUgZmxhZywgb3IgYSBkZXBlbmRlbmN5LCBhbmQgSSBuZWVkIHRvIHNlZSB3aGF0IGl0IGVuYWJsZXMsIGRpc2FibGVzLCBvciB3aGF0IGhhcmR3YXJlIGl0IGlzIHNwZWNpZmljIHRvLiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3IgY2x1ZXMgbGlrZSBhIGRlZmluZWQgc3ltYm9sLCBhIGRlZmF1bHQgdmFsdWUsIGFuZCBwb3NzaWJsZSBoZWxwIHRleHQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24uIEtub3dpbmcgdGhlIGhhcmR3YXJlIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdpbGwgaGVscCBtZSBpbW1lbnNlbHkgaW4gdHJvdWJsZXNob290aW5nIG9yIG1vZGlmeWluZyB0aGUgZHJpdmVyLCBpZiBuZWVkZWQuIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gZmVhdHVyZXMgc3VjaCBhcyBhbiBvZmZsb2FkIGVuZ2luZSBvciBhZHZhbmNlZCBwYWNrZXQgcHJvY2Vzc2luZyBjYXBhYmlsaXRpZXMgdGhhdCBkZXBlbmQgb24gYSBzcGVjaWZpYyBkZXZpY2UgdmVyc2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxMSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAwOjExOjQ2Ljk0MjAzMjQwOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFydmVsbCBSVlUgTmV0d29yayBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgT0NURU9OVFgyX0FGXFxuICAxMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDExOlxcdFxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbiAgMTI6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxMzpcXHRcXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsJ3MgT2N0ZW9uVFgyIFJlc291cmNlIFZpcnR1YWxpemF0aW9uXFxuICAxODpcXHRcXHQgIFVuaXQncyBhZG1pbiBmdW5jdGlvbiBtYW5hZ2VyIHdoaWNoIG1hbmFnZXMgYWxsIFJWVSBIVyByZXNvdXJjZXNcXG4gIDE5OlxcdFxcdCAgYW5kIHByb3ZpZGVzIGEgbWVkaXVtIHRvIG90aGVyIFBGL1ZGcyB0byBjb25maWd1cmUgSFcuIFNob3VsZCBiZVxcbiAgMjA6XFx0XFx0ICBlbmFibGVkIGZvciBvdGhlciBSVlUgZGV2aWNlIGRyaXZlcnMgdG8gd29yay5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXFxuICAyMzpcXHRcXHRib29sIFxcXCJEaXNhYmxlIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIGluIE5EQ1xcXCJcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gT0NURU9OVFgyX0FGXFxuICAyNTpcXHRcXHRkZWZhdWx0IG5cXG4gIDI2OlxcdFxcdGhlbHBcXG4gIDI3OlxcdFxcdCAgVGhpcyBjb25maWcgb3B0aW9uIGRpc2FibGVzIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIHN1Y2ggYXMgTklYIFNRRXNcXG4gIDI4OlxcdFxcdCAgLCBOUEEgc3RhY2sgcGFnZXMgZXRjIGluIE5EQy4gQWxzbyBsb2NrcyBkb3duIE5JWCBTUS9DUS9SUS9SU1MgYW5kXFxuICAyOTpcXHRcXHQgIE5QQSBBdXJhL1Bvb2wgY29udGV4dHMuXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBPQ1RFT05UWDJfUEZcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgMzM6XFx0XFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDM1OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDM2OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gKDY0QklUIFxcdTAwMjZcXHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcXG4gIDM4OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDM5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA0MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCAhTUFDU0VDXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwncyBPY3Rlb25UWDIgTklDIHBoeXNpY2FsIGZ1bmN0aW9uLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWcgT0NURU9OVFgyX1ZGXFxuICA0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG4gIDQ4OlxcdFxcdGhlbHBcXG4gIDQ5OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIE9jdGVvblRYMiBOSUMgdmlydHVhbCBmdW5jdGlvbi5cXG4gIDUwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMDoxMTo0Ni45NDIxMjY2NTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0ODYxMDk1NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBzcGVjaWFsaXplZCBwaWVjZSBvZiBraXQ6IGEgTWFydmVsbCBPY3Rlb25UWDIuIEl0J3MgYW4gQVJNNjQgU29DLCBhIG5ldHdvcmsgcHJvY2Vzc29yLCBhbmQsIGltcG9ydGFudGx5LCBhIFBDSWUgZGV2aWNlIHdpdGggdGhpcyBSVlUgKFJlc291cmNlIFZpcnR1YWxpemF0aW9uIFVuaXQpIEFkbWluIEZ1bmN0aW9uIGFuZCBOSUMgZnVuY3Rpb25zLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzLCBhbmQgdGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gYmUgc3VyZSwgaXMgdGhpcyAqdmVuZG9yLXNwZWNpZmljKiBoYXJkd2FyZT8gSXMgdGhpcyBPY3Rlb25UWDIgUlZVIHN0dWZmIHNvbWV0aGluZyB0aGF0J3MgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEFuZCB0aGUgYW5zd2VyLCB1bmZvcnR1bmF0ZWx5LCBpcyAqbm8qLiBUaGlzIFJWVSBpcyBzcGVjaWZpYyB0byBNYXJ2ZWxsJ3MgT2N0ZW9uVFgyIENOOVhYWCBhbmQgQ04xMFhYWCBzZXJpZXMuIFN0YW5kYXJkIFFFTVUganVzdCBkb2Vzbid0IGVtdWxhdGUgdGhhdCBoYXJkd2FyZS4gSXQncyBub3QgcGFydCBvZiB0aGUgc3RhbmRhcmQgc2V0LlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBkb3VibHkgc3VyZSBiYXNlZCBvbiBvdXIgcnVsZXMuIFJlbWVtYmVyIHRoYXQgd2UncmUgbG9va2luZyBmb3IgY29kZSB0aGF0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdoZW4gdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEFuZCB3ZSBhcmUgbG9va2luZyBhdCBjb2RlIHNwZWNpZmljYWxseSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gVGhhdCdzIHdoYXQgdGhpcyBhcHBlYXJzIHRvIGJlLlxuXG5BbHJpZ2h0LCBzbyBiZWNhdXNlIG9mIHRoaXMgTWFydmVsbCBPY3Rlb25UWDIncyB2ZW5kb3Itc3BlY2lmaWMgbmF0dXJlLCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZywgd2l0aG91dCBhIGRvdWJ0LCBzaG91bGQgYmUgYGZhbHNlYC5cblxuSnVzdCBuZWVkIHRvIGNvbmZpcm0gdGhlcmUgYXJlbid0IGFueSBzbmVha3kgY2hhbmdlcyBpbiBvdGhlciBmaWxlcyBpbiB0aGlzIHBhdGNoIHNlcmllcy4gR29vZCwgbG9va3MgbGlrZSB0aGUgb25seSBmaWxlIHRvdWNoZWQgaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuY2AuXG5cbk9rYXksIG5vdyBsZXQncyBzZXQgdXAgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBjYWxsLlxuXG4tICAgYEVuYWJsZUNvbmZpZ3NgIGFyZSBlbXB0eS5cbi0gICBgRm9jdXNTeW1ib2xzYCBhcmUgZW1wdHkuXG4tICAgTXkgUmVhc29uaW5nIGlzIHNvbGlkLiBDaGFuZ2VzIGFyZSBpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoYE9DVEVPTlRYMl9BRmApLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgTWFydmVsbCBPY3Rlb25UWDIgU29DL1BDSWUgZGV2aWNlcywgYW5kIGFzIHdlJ3ZlIGVzdGFibGlzaGVkLCB0aGlzIGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3Igb3RoZXIgZnV6emluZyBlbnZpcm9ubWVudHMsIHNvIGl04oCZcyB1bnJlYWNoYWJsZS5cbi0gICBgV29ydGhGdXp6aW5nYCBpcyB1bmVxdWl2b2NhbGx5IGBmYWxzZWAuXG5cbkxldCdzIGludm9rZSBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODUyLCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAwOjExOjUxLjgwMzIyNDE0NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYykuIFRoaXMgZHJpdmVyIGlzIGZvciB2ZW5kb3Itc3BlY2lmaWMgTWFydmVsbCBPY3Rlb25UWDIgaGFyZHdhcmUgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUvU29DIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jKS4gVGhpcyBkcml2ZXIgaXMgZm9yIHZlbmRvci1zcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZSBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZS9Tb0MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAwOjExOjUxLjgwMzI1NTk4NloiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowmbd8c[1] Phase: Running StartedAt: 2026-09-02 00:12:26 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmbd8c[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 00:12:26 +0000 UTC FinishedAt: 2026-09-02 00:12:59 +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,}