Name: series-workflowsrgbg Phase: Failed StartedAt: 2026-09-08 05:54:26 +0000 UTC FinishedAt: 2026-09-08 06:47:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrgbg[0] Phase: Succeeded StartedAt: 2026-09-08 05:54:26 +0000 UTC FinishedAt: 2026-09-08 06:47:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrgbg[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 05:54:26 +0000 UTC FinishedAt: 2026-09-08 06:47:18 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDA2OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgY29udGFpbnMgY29tbWVudCBzcGVsbGluZyBhbmQgdHlwbyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEJQRiBKSVQgZmlsZXMsIGFuZCBCUEYgc2VsZnRlc3RzL3Rvb2xzLiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDY6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MzY2MGRmYTNkZGViOTllNjQ0ZTc4OTgwNzczNjAzYTc0ZGQ3Yzk1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAwNjo0Njo1NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY1xuaW5kZXggOWVkZTgxYWZiYzUwZS4uYjFjMjFjMDE0YzljZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbkBAIC0xMzQ2LDcgJiM0MzsxMzQ2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfbGRzeF9yKGNvbnN0IHM4IGRzdFtdLCBjb25zdCBzOCBzcmMsXG4gXHRhcm1fYnBmX3B1dF9yZWc2NChkc3QsIHJkLCBjdHgpO1xuIH1cbiBcbi0vKiBBcml0aG1hdGljIE9wZXJhdGlvbiAqL1xuJiM0MzsvKiBBcml0aG1ldGljIE9wZXJhdGlvbiAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0X2FyX3IoY29uc3QgdTggcmQsIGNvbnN0IHU4IHJ0LCBjb25zdCB1OCBybSxcbiBcdFx0XHQgICAgIGNvbnN0IHU4IHJuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1OCBvcCxcbiBcdFx0XHQgICAgIGJvb2wgaXNfam1wNjQpIHtcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbmluZGV4IGJmZGM1MDc0MGRhOGUuLmNmOGMxYjQ5ZGEyNTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTIzLDcgJiM0MzsyMyw3IEBAXG4gICpcbiAgKlx0XHRbXHRwcmV2IHNwXHRcdF0gXHUwMDNjLS0tLS0tLS0tLS0tLVxuICAqXHRcdFsgICBudiBncHIgc2F2ZSBhcmVhXHRdIDE2ICogNFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuJiM0MzsgKiBmcCAocjMxKSAtLVx1MDAzZVx0WyAgIGVicGYgc3RhY2sgc3BhY2VcdF0gdXAgdG8gNTEyXHR8XG4gICpcdFx0WyAgICAgZnJhbWUgaGVhZGVyXHRdIDE2XHRcdHxcbiAgKiBzcCAocjEpIC0tLVx1MDAzZVx0WyAgICBzdGFjayBwb2ludGVyXHRdIC0tLS0tLS0tLS0tLS0tXG4gICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBmYzlkYjY5MWU4MjAzLi44YTFhMDAwMjZjNjlmIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0yMyw3ICYjNDM7MjMsNyBAQFxuICAqIFN0YWNrIGxheW91dCB3aXRoIGZyYW1lOlxuICAqIExheW91dCB3aGVuIHNldHRpbmcgdXAgb3VyIG93biBzdGFjayBmcmFtZS5cbiAgKiBOb3RlOiByMSBhdCBib3R0b20sIGNvbXBvbmVudCBvZmZzZXRzIHBvc2l0aXZlIHdydCByMS5cbi0gKiBFbnN1cmUgdGhlIHRvcCBoYWxmICh1cHRvIGxvY2FsX3RtcF92YXIpIHN0YXlzIGNvbnNpc3RlbnRcbiYjNDM7ICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXAgdG8gbG9jYWxfdG1wX3Zhcikgc3RheXMgY29uc2lzdGVudFxuICAqIHdpdGggb3VyIHJlZHpvbmUgdXNhZ2UuXG4gICpcbiAgKiB0YWlsX2NhbGxfaW5mbyAtIHN0b3JlcyB0YWlsY2FsbCBjb3VudCB2YWx1ZSBpbiBtYWluIHByb2dyYW0mIzM5O3NcbkBAIC0zNSw3ICYjNDM7MzUsNyBAQFxuICAqXHRcdFsgICBudiBncHIgc2F2ZSBhcmVhXHRdICg2ICogOClcdHxcbiAgKlx0XHRbIGFkZGwuIG52IGdwciBzYXZlIGFyZWFdICgxMiAqIDgpXHR8IFx1MDAzYy0tLSBleGNlcHRpb24gYm91bmRhcnkvY2FsbGJhY2sgcHJvZ3JhbVxuICAqXHRcdFsgICAgbG9jYWxfdG1wX3Zhclx0XSAyNFx0XHR8XG4tICogZnAgKHIzMSkgLS1cdTAwM2VcdFsgICBlYnBmIHN0YWNrIHNwYWNlXHRdIHVwdG8gNTEyXHR8XG4mIzQzOyAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cCB0byA1MTJcdHxcbiAgKlx0XHRbICAgICBmcmFtZSBoZWFkZXJcdF0gMzIvMTEyXHR8XG4gICogc3AgKHIxKSAtLS1cdTAwM2VcdFsgICAgc3RhY2sgcG9pbnRlclx0XSAtLS0tLS0tLS0tLS0tLVxuICAqXG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcbmluZGV4IGEyZTI4ZTA0NjRhMzMuLjgxNDMwZjA2NWFjOTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG5AQCAtMTk1LDcgJiM0MzsxOTUsNyBAQCBicGZfZXJyb3I6XG4gXHQvKiBNYWtlIHRoZSBKSVQgcHJvZ3JhbSByZXR1cm4gemVyby4gIFRoZSBKSVQgZXBpbG9ndWVcbiBcdCAqIHN0b3JlcyBhd2F5IHRoZSBvcmlnaW5hbCAlbzcgaW50byByX3NhdmVkX083LiAgVGhlXG4gXHQgKiBub3JtYWwgbGVhZiBmdW5jdGlvbiByZXR1cm4gaXMgdG8gdXNlIFwmIzM0O3JldGxcJiMzNDsgd2hpY2hcbi1cdCAqIHdvdWxkIGV2YWx1dGUgdG8gXCYjMzQ7am1wbCAlbzcgJiM0MzsgOCwgJWcwXCYjMzQ7IGJ1dCB3ZSB3YW50IHRvXG4mIzQzO1x0ICogd291bGQgZXZhbHVhdGUgdG8gXCYjMzQ7am1wbCAlbzcgJiM0MzsgOCwgJWcwXCYjMzQ7IGJ1dCB3ZSB3YW50IHRvXG4gXHQgKiB1c2UgdGhlIHNhdmVkIHZhbHVlIHRodXMgdGhlIHNlcXVlbmNlIHlvdSBzZWUgaGVyZS5cbiBcdCAqL1xuIFx0am1wbFx0cl9zYXZlZF9PNyAmIzQzOyA4LCAlZzBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuaW5kZXggMDBhZDhiNjNhYTQ3Ny4uNGVmZjZlNjAxYjA1MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbkBAIC0xNDcsNyAmIzQzOzE0Nyw3IEBAIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyO1xuICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pXHRcdFx0XHRcXFxuIFx0QlBGX0FMVTMyX0lNTV9PRkYoT1AsIERTVCwgSU1NLCAwKVxuIFxuLS8qIEVuZGlhbmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xuJiM0MzsvKiBFbmRpYW5uZXNzIGNvbnZlcnNpb24sIGNwdV90b197bCxifWUoKSwge2wsYn1lX3RvX2NwdSgpICovXG4gXG4gI2RlZmluZSBCUEZfRU5ESUFOKFRZUEUsIERTVCwgTEVOKVx0XHRcdFx0XFxcbiBcdCgoc3RydWN0IGJwZl9pbnNuKSB7XHRcdFx0XHRcdFxcXG5AQCAtMTAyOSw3ICYjNDM7MTAyOSw3IEBAIHN0YXRpYyBpbmxpbmUgdTggKmJwZl9za2JfY2IoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqXG4gXHQgKiBJbiBzb21lIHNvY2tldCBmaWx0ZXIgY2FzZXMsIHRoZSBjYiB1bmZvcnR1bmF0ZWx5IG5lZWRzIHRvIGJlXG4gXHQgKiBzYXZlZC9yZXN0b3JlZCBzbyB0aGF0IHByb3RvY29sIHNwZWNpZmljIHNrYi1cdTAwM2VjYltdIGRhdGEgd29uJiMzOTt0XG4tXHQgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWRnZWQgZUJQRiBwcm9ncmFtc1xuJiM0MztcdCAqIGJlIGxvc3QuIEluIGFueSBjYXNlLCBkdWUgdG8gdW5wcml2aWxlZ2VkIGVCUEYgcHJvZ3JhbXNcbiBcdCAqIGF0dGFjaGVkIHRvIHNvY2tldHMsIHdlIG5lZWQgdG8gY2xlYXIgdGhlIGJwZl9za2JfY2IoKSBhcmVhXG4gXHQgKiB0byBub3QgbGVhayBwcmV2aW91cyBjb250ZW50cyB0byB1c2VyIHNwYWNlLlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuYyBiL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmNcbmluZGV4IDQ5YjhlNWEwYzZiNGYuLjRkZTA4YWJmZDk0ZWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXG5AQCAtMjA3LDcgJiM0MzsyMDcsNyBAQCByZXVzZXBvcnRfYXJyYXlfdXBkYXRlX2NoZWNrKGNvbnN0IHN0cnVjdCByZXVzZXBvcnRfYXJyYXkgKmFycmF5LFxuIFx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuIFxuIFx0Lypcbi1cdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYmluZGVkXG4mIzQzO1x0ICogc2sgbXVzdCBiZSBoYXNoZWQgKGkuZS4gbGlzdGVuaW5nIGluIHRoZSBUQ1AgY2FzZSBvciBib3VuZFxuIFx0ICogaW4gdGhlIFVEUCBjYXNlKSBhbmRcbiBcdCAqIGl0IG11c3QgYWxzbyBiZSBhIFNPX1JFVVNFUE9SVCBzayAoaS5lLiByZXVzZSBjYW5ub3QgYmUgTlVMTCkuXG4gXHQgKlxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jXG5pbmRleCBjNzgzMzU5OTc3YjQ2Li5kMWM3MzExM2U1OGZiIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9idGYuY1xuQEAgLTM4NDcsNyAmIzQzOzM4NDcsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kZWR1cF9yZW1hcF90eXBlcyhzdHJ1Y3QgYnRmX2RlZHVwICpkKTtcbiAgKiB0eXBlcywgaW4gZ2VuZXJhbCwgY2FuIGZvcm0gZ3JhcGhzIGNvbnRhaW5pbmcgY3ljbGVzLCBub3QganVzdCBEQUdzLlxuICAqXG4gICogV2hpbGUgYWxnb3JpdGhtIGRvZXMgZGVkdXBsaWNhdGlvbiwgaXQgYWxzbyBtZXJnZXMgYW5kIHJlc29sdmVzIHR5cGVcbi0gKiBpbmZvcm1hdGlvbiAodW5sZXNzIGRpc2FibGVkIHRocm91Z2h0IGBzdHJ1Y3QgYnRmX29wdHNgKSwgd2hlbmV2ZXIgcG9zc2libGUuXG4mIzQzOyAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaCBgc3RydWN0IGJ0Zl9vcHRzYCksIHdoZW5ldmVyIHBvc3NpYmxlLlxuICAqIEUuZy4sIGluIHRoZSBleGFtcGxlIGFib3ZlIHdpdGggdHdvIGNvbXBpbGF0aW9uIHVuaXRzIGhhdmluZyBwYXJ0aWFsIHR5cGVcbiAgKiBpbmZvcm1hdGlvbiBmb3Igc3RydWN0cyBgQWAgYW5kIGBCYCwgdGhlIG91dHB1dCBvZiBhbGdvcml0aG0gd2lsbCBlbWl0XG4gICogYSBzaW5nbGUgY29weSBvZiBlYWNoIEJURiB0eXBlIHRoYXQgZGVzY3JpYmVzIHN0cnVjdHMgYEFgLCBgQmAsIGFuZCBgU2BcbkBAIC01NjQ4LDcgJiM0Mzs1NjQ4LDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVzb2x2ZV9md2RzKHN0cnVjdCBidGZfZGVkdXAgKmQpXG4gICpcbiAgKiBBZnRlciB3ZSBlc3RhYmxpc2hlZCBmb3IgZWFjaCB0eXBlIGl0cyBjb3JyZXNwb25kaW5nIGNhbm9uaWNhbCByZXByZXNlbnRhdGl2ZVxuICAqIHR5cGUsIHdlIG5vdyBjYW4gZWxpbWluYXRlIHR5cGVzIHRoYXQgYXJlIG5vdCBjYW5vbmljYWwgYW5kIGxlYXZlIG9ubHlcbi0gKiBjYW5vbmljYWwgb25lcyBsYXllZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlclxuJiM0MzsgKiBjYW5vbmljYWwgb25lcyBsYWlkIG91dCBzZXF1ZW50aWFsbHkgaW4gbWVtb3J5IGJ5IGNvcHlpbmcgdGhlbSBvdmVyXG4gICogZHVwbGljYXRlcy4gRHVyaW5nIGNvbXBhY3Rpb24gYnRmX2RlZHVwLVx1MDAzZWh5cG90X21hcCBhcnJheSBpcyByZXVzZWQgdG8gc3RvcmVcbiAgKiBhIG1hcCBmcm9tIG9yaWdpbmFsIHR5cGUgSUQgdG8gYSBuZXcgY29tcGFjdGVkIHR5cGUgSUQsIHdoaWNoIHdpbGwgYmUgdXNlZFxuICAqIGR1cmluZyBuZXh0IHBoYXNlIHRvIFwmIzM0O2ZpeCB1cFwmIzM0OyB0eXBlIElEcywgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdC91bmlvbiBhbmRcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL3VzZHQuYyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5pbmRleCBlZTlkMWI2MTQ4ODNjLi42N2M2MGY3MTZjMWE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi91c2R0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5AQCAtMTQ0LDcgJiM0MzsxNDQsNyBAQFxuICAqIGFib3V0LiBUaGlzIHN0YXRlIGhhcyB0byBiZSBtYWludGFpbmVkIHBlci1CUEYgb2JqZWN0IGFuZCBjb29yZGluYXRlXG4gICogYmV0d2VlbiBkaWZmZXJlbnQgVVNEVCBhdHRhY2htZW50cyB3aXRoaW4gdGhlIHNhbWUgQlBGIG9iamVjdC5cbiAgKlxuLSAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxheWVkIG91dFxuJiM0MzsgKiBTcGVjIElEIGlzIHRoZSBrZXkgaW4gc3BlYyBCUEYgbWFwLCB2YWx1ZSBpcyB0aGUgYWN0dWFsIFVTRFQgc3BlYyBsYWlkIG91dFxuICAqIGFzIHN0cnVjdCB1c2R0X3NwZWMuIEVhY2ggaW52b2NhdGlvbiBvZiBCUEYgcHJvZ3JhbSBhdCBydW50aW1lIG5lZWRzIHRvXG4gICoga25vdyBpdHMgYXNzb2NpYXRlZCBzcGVjIElELiBJdCBnZXRzIGl0IGVpdGhlciB0aHJvdWdoIEJQRiBjb29raWUsIHdoaWNoXG4gICogbGliYnBmIHNldHMgdG8gc3BlYyBJRCBkdXJpbmcgYXR0YWNoIHRpbWUsIG9yLCBpZiBrZXJuZWwgaXMgdG9vIG9sZCB0b1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xuaW5kZXggZGU2NTZiNjlkMTNhZi4uZmI1MGVlNGFkMDk3MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jXG5AQCAtMjA0LDcgJiM0MzsyMDQsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2hlY2tfYXNhbl9hcmdzKHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzaXplLFxuIFx0XHRnb3RvIGNvbmZpcm1lZF92YWxpZDtcbiBcbiBcdC8qXG4tXHQgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIHRoZSBlZGdlIG9mIHRoZVxuJiM0MztcdCAqIFdyYXBhcm91bmQgaXMgcG9zc2libGUgZm9yIHZhbHVlcyBjbG9zZSB0byB0aGUgZWRnZSBvZiB0aGVcbiBcdCAqIDRHaUIgYm91bmRhcnkgb2YgdGhlIGFyZW5hIChsYXN0IHZhbGlkIGFkZHJlc3MgaXMgMVVMIFx1MDAzY1x1MDAzYyAzMiAtIDEpLlxuIFx0ICpcbiBcdCAqXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jXG5pbmRleCAxYjI1ZDVjNWY4ZmI4Li44Yjk2ZmI4NjEzNjg4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbkBAIC0xMyw3ICYjNDM7MTMsNyBAQFxuICAqIElQdjYgaGVhZGVyIHdpdGggYSBTZWdtZW50IFJvdXRpbmcgSGVhZGVyLCB3aXRoIHNlZ21lbnRzIDpcbiAgKlx0ZmQwMDo6MSAtXHUwMDNlIGZkMDA6OjIgLVx1MDAzZSBmZDAwOjozIC1cdTAwM2UgZmQwMDo6NFxuICAqXG4tICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJpbmRlZCB0byBzZWc2bG9jYWwgRW5kLkJQRiBhY3Rpb25zIDpcbiYjNDM7ICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJvdW5kIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxuICAqIC0gZmQwMDo6MSA6IGFkZCBhIFRMViwgY2hhbmdlIHRoZSBmbGFncyBhbmQgYXBwbHkgYSBFbmQuWCBhY3Rpb24gdG8gZmM0Mjo6MVxuICAqIC0gZmQwMDo6MiA6IHJlbW92ZSB0aGUgVExWLCBjaGFuZ2UgdGhlIGZsYWdzLCBhZGQgYSB0YWdcbiAgKiAtIGZkMDA6OjMgOiBhcHBseSBhbiBFbmQuVCBhY3Rpb24gdG8gZmQwMDo6NCwgdGhyb3VnaCByb3V0aW5nIHRhYmxlIDExN1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbmluZGV4IDhhZTRmYjIwMjdmNzMuLjlmMjk3MWZjN2NkNTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbkBAIC0yNDMsNyAmIzQzOzI0Myw3IEBAIHN0YXRpYyB0bGRfa2V5X3QgX190bGRfY3JlYXRlX2tleShjb25zdCBjaGFyICpuYW1lLCBzaXplX3Qgc2l6ZSwgYm9vbCBkeW5fZGF0YSlcbiBcdFx0fVxuIFxuIFx0XHQvKlxuLVx0XHQgKiBUTERfREVGSU5FX0tFWSgpIGlzIGdpdmVuIG1lbW9yeSB1cHRvIGEgcGFnZSB3aGlsZSBhdCBtb3N0XG4mIzQzO1x0XHQgKiBUTERfREVGSU5FX0tFWSgpIGlzIGdpdmVuIG1lbW9yeSB1cCB0byBhIHBhZ2Ugd2hpbGUgYXQgbW9zdFxuIFx0XHQgKiBUTERfRFlOX0RBVEFfU0laRSBpcyBhbGxvY2F0ZWQgZm9yIHRsZF9jcmVhdGVfa2V5KClcbiBcdFx0ICovXG4gXHRcdGlmIChkeW5fZGF0YSkge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xuaW5kZXggNjI0MDc4YWJmM2RlYS4uZDdlMzBlZTU3NmM5MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jXG5AQCAtNyw3ICYjNDM7Nyw3IEBAXG4gXG4gU0VDKFwmIzM0O2ZyZXBsYWNlL2J0Zl91bnJlbGlhYmxlX2twcm9iZVwmIzM0OylcbiAvKiBjb250ZXh0IHR5cGUgaXMgd2hhdCBCUEYgdmVyaWZpZXIgZXhwZWN0cyBmb3Iga3Byb2JlIGNvbnRleHQsIGJ1dCB0YXJnZXRcbi0gKiBwcm9ncmFtIGhhcyBgc3R1Y3Qgd2hhdGV2ZXIgKmN0eGAgYXJndW1lbnQsIHNvIGZyZXBsYWNlIG9wZXJhdGlvbiB3aWxsIGJlXG4mIzQzOyAqIHByb2dyYW0gaGFzIGBzdHJ1Y3Qgd2hhdGV2ZXIgKmN0eGAgYXJndW1lbnQsIHNvIGZyZXBsYWNlIG9wZXJhdGlvbiB3aWxsIGJlXG4gICogcmVqZWN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6XG4gICpcbiAgKiBhcmcwIHJlcGxhY2VfYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCBwdF9yZWdzICopIGRvZXNuJiMzOTt0IG1hdGNoIGJ0Zl91bnJlbGlhYmxlX2twcm9iZShzdHJ1Y3Qgd2hhdGV2ZXIgKilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jXG5pbmRleCBjNjY5OTE1OWRhY2RkLi5lNDRhOTc5MjcwZWEwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jXG5AQCAtMTUxMSw3ICYjNDM7MTUxMSw3IEBAIF9fbmFrZWQgaW50IGNoZWNrcG9pbnRfc3RhdGVzX2RlbGV0aW9uKHZvaWQpXG4gXHQgKiB3b3VsZCBnZXQgZXF1YWwgdG8gb25lIG9mIHRoZSBleHBsb3JlZCBzdGF0ZXMgYW5kIHRodXMgbG9vcFxuIFx0ICogZXhwbG9yYXRpb24gd291bGQgYmUgZmluaXNoZWQgKGF0LWxlYXN0IGZvciBhIHNwZWNpZmljIHBhdGgpLlxuIFx0ICogVmVyaWZpZXIgZXZpY3RzIGV4cGxvcmVkIHN0YXRlcyB3aXRoIGhpZ2ggbWlzcyB0byBoaXQgcmF0aW9cbi1cdCAqIHRvIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWRcbiYjNDM7XHQgKiB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXG4gXHQgKiBzdGF0ZXMgcGVyIGluc3RydWN0aW9uLlxuIFx0ICogVGhpcyB0ZXN0IGlzIGRlc2lnbmVkIHRvIFwmIzM0O3N0cmVzcyB0ZXN0XCYjMzQ7IGV2aWN0aW9uIHBvbGljeSBkZWZpbmVkIHVzaW5nIGZvcm11bGE6XG4gXHQgKlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXG5pbmRleCBhNjNlMzM2NzUwOTE4Li4yMjdkZWEwZGEzYTA1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuQEAgLTIyNSw3ICYjNDM7MjI1LDcgQEAgX19uYWtlZCB2b2lkIHN0YWNrX3dyaXRlX3ByaXZfdnNfdW5wcml2KHZvaWQpXG4gfVxuIFxuIC8qIFNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHRlc3QsIGJ1dCB0aGlzIHRpbWUgYWxzbyBwZXJmb3JtIGEgcmVhZCBmcm9tIHRoZVxuLSAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2ZmZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcbiYjNDM7ICogYWRkcmVzcyB3cml0dGVuIHRvIHdpdGggYSB2YXJpYWJsZSBvZmZzZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcbiAgKiBhZnRlciBhIHZhcmlhYmxlLW9mZnNldCB3cml0ZSwgYSBwcml2aWxlZ2VkIHByb2dyYW0gY2FuIHJlYWQgdGhlIHNsb3RzIHRoYXRcbiAgKiB3ZXJlIGluIHRoZSByYW5nZSBvZiB0aGF0IHdyaXRlIChldmVuIGlmIHRoZSB2ZXJpZmllciBkb2VzbiYjMzk7dCBhY3R1YWxseSBrbm93IGlmXG4gICogdGhlIHNsb3QgYmVpbmcgcmVhZCB3YXMgcmVhbGx5IHdyaXR0ZW4gdG8gb3Igbm90LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA2OjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IGNvbnRhaW5zIGNvbW1lbnQgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBCUEYgSklUIGZpbGVzLCBhbmQgQlBGIHNlbGZ0ZXN0cy90b29scy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzM2NjBkZmEzZGRlYjk5ZTY0NGU3ODk4MDc3MzYwM2E3NGRkN2M5NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMDY6NDY6NTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYwppbmRleCA5ZWRlODFhZmJjNTBlLi5iMWMyMWMwMTRjOWNmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmMKQEAgLTEzNDYsNyAmIzQzOzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYywKIAlhcm1fYnBmX3B1dF9yZWc2NChkc3QsIHJkLCBjdHgpOwogfQogCi0vKiBBcml0aG1hdGljIE9wZXJhdGlvbiAqLwomIzQzOy8qIEFyaXRobWV0aWMgT3BlcmF0aW9uICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9hcl9yKGNvbnN0IHU4IHJkLCBjb25zdCB1OCBydCwgY29uc3QgdTggcm0sCiAJCQkgICAgIGNvbnN0IHU4IHJuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1OCBvcCwKIAkJCSAgICAgYm9vbCBpc19qbXA2NCkgewpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jCmluZGV4IGJmZGM1MDc0MGRhOGUuLmNmOGMxYjQ5ZGEyNTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmMKQEAgLTIzLDcgJiM0MzsyMyw3IEBACiAgKgogICoJCVsJcHJldiBzcAkJXSAmbHQ7LS0tLS0tLS0tLS0tLQogICoJCVsgICBudiBncHIgc2F2ZSBhcmVhCV0gMTYgKiA0CXwKLSAqIGZwIChyMzEpIC0tJmd0OwlbICAgZWJwZiBzdGFjayBzcGFjZQldIHVwdG8gNTEyCXwKJiM0MzsgKiBmcCAocjMxKSAtLSZndDsJWyAgIGVicGYgc3RhY2sgc3BhY2UJXSB1cCB0byA1MTIJfAogICoJCVsgICAgIGZyYW1lIGhlYWRlcgldIDE2CQl8CiAgKiBzcCAocjEpIC0tLSZndDsJWyAgICBzdGFjayBwb2ludGVyCV0gLS0tLS0tLS0tLS0tLS0KICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IGZjOWRiNjkxZTgyMDMuLjhhMWEwMDAyNmM2OWYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMKQEAgLTIzLDcgJiM0MzsyMyw3IEBACiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZToKICAqIExheW91dCB3aGVuIHNldHRpbmcgdXAgb3VyIG93biBzdGFjayBmcmFtZS4KICAqIE5vdGU6IHIxIGF0IGJvdHRvbSwgY29tcG9uZW50IG9mZnNldHMgcG9zaXRpdmUgd3J0IHIxLgotICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50CiYjNDM7ICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXAgdG8gbG9jYWxfdG1wX3Zhcikgc3RheXMgY29uc2lzdGVudAogICogd2l0aCBvdXIgcmVkem9uZSB1c2FnZS4KICAqCiAgKiB0YWlsX2NhbGxfaW5mbyAtIHN0b3JlcyB0YWlsY2FsbCBjb3VudCB2YWx1ZSBpbiBtYWluIHByb2dyYW0mIzM5O3MKQEAgLTM1LDcgJiM0MzszNSw3IEBACiAgKgkJWyAgIG52IGdwciBzYXZlIGFyZWEJXSAoNiAqIDgpCXwKICAqCQlbIGFkZGwuIG52IGdwciBzYXZlIGFyZWFdICgxMiAqIDgpCXwgJmx0Oy0tLSBleGNlcHRpb24gYm91bmRhcnkvY2FsbGJhY2sgcHJvZ3JhbQogICoJCVsgICAgbG9jYWxfdG1wX3ZhcgldIDI0CQl8Ci0gKiBmcCAocjMxKSAtLSZndDsJWyAgIGVicGYgc3RhY2sgc3BhY2UJXSB1cHRvIDUxMgl8CiYjNDM7ICogZnAgKHIzMSkgLS0mZ3Q7CVsgICBlYnBmIHN0YWNrIHNwYWNlCV0gdXAgdG8gNTEyCXwKICAqCQlbICAgICBmcmFtZSBoZWFkZXIJXSAzMi8xMTIJfAogICogc3AgKHIxKSAtLS0mZ3Q7CVsgICAgc3RhY2sgcG9pbnRlcgldIC0tLS0tLS0tLS0tLS0tCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlMKaW5kZXggYTJlMjhlMDQ2NGEzMy4uODE0MzBmMDY1YWM5NyAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TCkBAIC0xOTUsNyAmIzQzOzE5NSw3IEBAIGJwZl9lcnJvcjoKIAkvKiBNYWtlIHRoZSBKSVQgcHJvZ3JhbSByZXR1cm4gemVyby4gIFRoZSBKSVQgZXBpbG9ndWUKIAkgKiBzdG9yZXMgYXdheSB0aGUgb3JpZ2luYWwgJW83IGludG8gcl9zYXZlZF9PNy4gIFRoZQogCSAqIG5vcm1hbCBsZWFmIGZ1bmN0aW9uIHJldHVybiBpcyB0byB1c2UgJiMzNDtyZXRsJiMzNDsgd2hpY2gKLQkgKiB3b3VsZCBldmFsdXRlIHRvICYjMzQ7am1wbCAlbzcgJiM0MzsgOCwgJWcwJiMzNDsgYnV0IHdlIHdhbnQgdG8KJiM0MzsJICogd291bGQgZXZhbHVhdGUgdG8gJiMzNDtqbXBsICVvNyAmIzQzOyA4LCAlZzAmIzM0OyBidXQgd2Ugd2FudCB0bwogCSAqIHVzZSB0aGUgc2F2ZWQgdmFsdWUgdGh1cyB0aGUgc2VxdWVuY2UgeW91IHNlZSBoZXJlLgogCSAqLwogCWptcGwJcl9zYXZlZF9PNyAmIzQzOyA4LCAlZzAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmggYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oCmluZGV4IDAwYWQ4YjYzYWE0NzcuLjRlZmY2ZTYwMWIwNTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaApAQCAtMTQ3LDcgJiM0MzsxNDcsNyBAQCBzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlcjsKICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pCQkJCVwKIAlCUEZfQUxVMzJfSU1NX09GRihPUCwgRFNULCBJTU0sIDApCiAKLS8qIEVuZGlhbmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqLwomIzQzOy8qIEVuZGlhbm5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi8KIAogI2RlZmluZSBCUEZfRU5ESUFOKFRZUEUsIERTVCwgTEVOKQkJCQlcCiAJKChzdHJ1Y3QgYnBmX2luc24pIHsJCQkJCVwKQEAgLTEwMjksNyAmIzQzOzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIHU4ICpicGZfc2tiX2NiKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCiAJICoKIAkgKiBJbiBzb21lIHNvY2tldCBmaWx0ZXIgY2FzZXMsIHRoZSBjYiB1bmZvcnR1bmF0ZWx5IG5lZWRzIHRvIGJlCiAJICogc2F2ZWQvcmVzdG9yZWQgc28gdGhhdCBwcm90b2NvbCBzcGVjaWZpYyBza2ItJmd0O2NiW10gZGF0YSB3b24mIzM5O3QKLQkgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWRnZWQgZUJQRiBwcm9ncmFtcwomIzQzOwkgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWdlZCBlQlBGIHByb2dyYW1zCiAJICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWEKIAkgKiB0byBub3QgbGVhayBwcmV2aW91cyBjb250ZW50cyB0byB1c2VyIHNwYWNlLgogCSAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuYyBiL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmMKaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jCkBAIC0yMDcsNyAmIzQzOzIwNyw3IEBAIHJldXNlcG9ydF9hcnJheV91cGRhdGVfY2hlY2soY29uc3Qgc3RydWN0IHJldXNlcG9ydF9hcnJheSAqYXJyYXksCiAJCXJldHVybiAtRU5PVFNVUFA7CiAKIAkvKgotCSAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYmluZGVkCiYjNDM7CSAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYm91bmQKIAkgKiBpbiB0aGUgVURQIGNhc2UpIGFuZAogCSAqIGl0IG11c3QgYWxzbyBiZSBhIFNPX1JFVVNFUE9SVCBzayAoaS5lLiByZXVzZSBjYW5ub3QgYmUgTlVMTCkuCiAJICoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jCmluZGV4IGM3ODMzNTk5NzdiNDYuLmQxYzczMTEzZTU4ZmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYi9icGYvYnRmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9idGYuYwpAQCAtMzg0Nyw3ICYjNDM7Mzg0Nyw3IEBAIHN0YXRpYyBpbnQgYnRmX2RlZHVwX3JlbWFwX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQpOwogICogdHlwZXMsIGluIGdlbmVyYWwsIGNhbiBmb3JtIGdyYXBocyBjb250YWluaW5nIGN5Y2xlcywgbm90IGp1c3QgREFHcy4KICAqCiAgKiBXaGlsZSBhbGdvcml0aG0gZG9lcyBkZWR1cGxpY2F0aW9uLCBpdCBhbHNvIG1lcmdlcyBhbmQgcmVzb2x2ZXMgdHlwZQotICogaW5mb3JtYXRpb24gKHVubGVzcyBkaXNhYmxlZCB0aHJvdWdodCBgc3RydWN0IGJ0Zl9vcHRzYCksIHdoZW5ldmVyIHBvc3NpYmxlLgomIzQzOyAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaCBgc3RydWN0IGJ0Zl9vcHRzYCksIHdoZW5ldmVyIHBvc3NpYmxlLgogICogRS5nLiwgaW4gdGhlIGV4YW1wbGUgYWJvdmUgd2l0aCB0d28gY29tcGlsYXRpb24gdW5pdHMgaGF2aW5nIHBhcnRpYWwgdHlwZQogICogaW5mb3JtYXRpb24gZm9yIHN0cnVjdHMgYEFgIGFuZCBgQmAsIHRoZSBvdXRwdXQgb2YgYWxnb3JpdGhtIHdpbGwgZW1pdAogICogYSBzaW5nbGUgY29weSBvZiBlYWNoIEJURiB0eXBlIHRoYXQgZGVzY3JpYmVzIHN0cnVjdHMgYEFgLCBgQmAsIGFuZCBgU2AKQEAgLTU2NDgsNyAmIzQzOzU2NDgsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kZWR1cF9yZXNvbHZlX2Z3ZHMoc3RydWN0IGJ0Zl9kZWR1cCAqZCkKICAqCiAgKiBBZnRlciB3ZSBlc3RhYmxpc2hlZCBmb3IgZWFjaCB0eXBlIGl0cyBjb3JyZXNwb25kaW5nIGNhbm9uaWNhbCByZXByZXNlbnRhdGl2ZQogICogdHlwZSwgd2Ugbm93IGNhbiBlbGltaW5hdGUgdHlwZXMgdGhhdCBhcmUgbm90IGNhbm9uaWNhbCBhbmQgbGVhdmUgb25seQotICogY2Fub25pY2FsIG9uZXMgbGF5ZWQgb3V0IHNlcXVlbnRpYWxseSBpbiBtZW1vcnkgYnkgY29weWluZyB0aGVtIG92ZXIKJiM0MzsgKiBjYW5vbmljYWwgb25lcyBsYWlkIG91dCBzZXF1ZW50aWFsbHkgaW4gbWVtb3J5IGJ5IGNvcHlpbmcgdGhlbSBvdmVyCiAgKiBkdXBsaWNhdGVzLiBEdXJpbmcgY29tcGFjdGlvbiBidGZfZGVkdXAtJmd0O2h5cG90X21hcCBhcnJheSBpcyByZXVzZWQgdG8gc3RvcmUKICAqIGEgbWFwIGZyb20gb3JpZ2luYWwgdHlwZSBJRCB0byBhIG5ldyBjb21wYWN0ZWQgdHlwZSBJRCwgd2hpY2ggd2lsbCBiZSB1c2VkCiAgKiBkdXJpbmcgbmV4dCBwaGFzZSB0byAmIzM0O2ZpeCB1cCYjMzQ7IHR5cGUgSURzLCByZWZlcmVuY2VkIGZyb20gc3RydWN0L3VuaW9uIGFuZApkaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi91c2R0LmMgYi90b29scy9saWIvYnBmL3VzZHQuYwppbmRleCBlZTlkMWI2MTQ4ODNjLi42N2M2MGY3MTZjMWE5IDEwMDY0NAotLS0gYS90b29scy9saWIvYnBmL3VzZHQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9saWIvYnBmL3VzZHQuYwpAQCAtMTQ0LDcgJiM0MzsxNDQsNyBAQAogICogYWJvdXQuIFRoaXMgc3RhdGUgaGFzIHRvIGJlIG1haW50YWluZWQgcGVyLUJQRiBvYmplY3QgYW5kIGNvb3JkaW5hdGUKICAqIGJldHdlZW4gZGlmZmVyZW50IFVTRFQgYXR0YWNobWVudHMgd2l0aGluIHRoZSBzYW1lIEJQRiBvYmplY3QuCiAgKgotICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGF5ZWQgb3V0CiYjNDM7ICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGFpZCBvdXQKICAqIGFzIHN0cnVjdCB1c2R0X3NwZWMuIEVhY2ggaW52b2NhdGlvbiBvZiBCUEYgcHJvZ3JhbSBhdCBydW50aW1lIG5lZWRzIHRvCiAgKiBrbm93IGl0cyBhc3NvY2lhdGVkIHNwZWMgSUQuIEl0IGdldHMgaXQgZWl0aGVyIHRocm91Z2ggQlBGIGNvb2tpZSwgd2hpY2gKICAqIGxpYmJwZiBzZXRzIHRvIHNwZWMgSUQgZHVyaW5nIGF0dGFjaCB0aW1lLCBvciwgaWYga2VybmVsIGlzIHRvbyBvbGQgdG8KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYwppbmRleCBkZTY1NmI2OWQxM2FmLi5mYjUwZWU0YWQwOTcyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jCkBAIC0yMDQsNyAmIzQzOzIwNCw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBjaGVja19hc2FuX2FyZ3MoczggX19hcmVuYSAqYWRkciwgc2l6ZV90IHNpemUsCiAJCWdvdG8gY29uZmlybWVkX3ZhbGlkOwogCiAJLyoKLQkgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIHRoZSBlZGdlIG9mIHRoZQomIzQzOwkgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIGVkZ2Ugb2YgdGhlCiAJICogNEdpQiBib3VuZGFyeSBvZiB0aGUgYXJlbmEgKGxhc3QgdmFsaWQgYWRkcmVzcyBpcyAxVUwgJmx0OyZsdDsgMzIgLSAxKS4KIAkgKgogCSAqCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMKaW5kZXggMWIyNWQ1YzVmOGZiOC4uOGI5NmZiODYxMzY4OCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuYwpAQCAtMTMsNyAmIzQzOzEzLDcgQEAKICAqIElQdjYgaGVhZGVyIHdpdGggYSBTZWdtZW50IFJvdXRpbmcgSGVhZGVyLCB3aXRoIHNlZ21lbnRzIDoKICAqCWZkMDA6OjEgLSZndDsgZmQwMDo6MiAtJmd0OyBmZDAwOjozIC0mZ3Q7IGZkMDA6OjQKICAqCi0gKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYmluZGVkIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOgomIzQzOyAqIDMgZmQwMDo6LzE2IElQdjYgYWRkcmVzc2VzIGFyZSBib3VuZCB0byBzZWc2bG9jYWwgRW5kLkJQRiBhY3Rpb25zIDoKICAqIC0gZmQwMDo6MSA6IGFkZCBhIFRMViwgY2hhbmdlIHRoZSBmbGFncyBhbmQgYXBwbHkgYSBFbmQuWCBhY3Rpb24gdG8gZmM0Mjo6MQogICogLSBmZDAwOjoyIDogcmVtb3ZlIHRoZSBUTFYsIGNoYW5nZSB0aGUgZmxhZ3MsIGFkZCBhIHRhZwogICogLSBmZDAwOjozIDogYXBwbHkgYW4gRW5kLlQgYWN0aW9uIHRvIGZkMDA6OjQsIHRocm91Z2ggcm91dGluZyB0YWJsZSAxMTcKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmgKaW5kZXggOGFlNGZiMjAyN2Y3My4uOWYyOTcxZmM3Y2Q1NCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmgKQEAgLTI0Myw3ICYjNDM7MjQzLDcgQEAgc3RhdGljIHRsZF9rZXlfdCBfX3RsZF9jcmVhdGVfa2V5KGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLCBib29sIGR5bl9kYXRhKQogCQl9CiAKIAkJLyoKLQkJICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXB0byBhIHBhZ2Ugd2hpbGUgYXQgbW9zdAomIzQzOwkJICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXAgdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3QKIAkJICogVExEX0RZTl9EQVRBX1NJWkUgaXMgYWxsb2NhdGVkIGZvciB0bGRfY3JlYXRlX2tleSgpCiAJCSAqLwogCQlpZiAoZHluX2RhdGEpIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuYwppbmRleCA2MjQwNzhhYmYzZGVhLi5kN2UzMGVlNTc2YzkzIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jCkBAIC03LDcgJiM0Mzs3LDcgQEAKIAogU0VDKCYjMzQ7ZnJlcGxhY2UvYnRmX3VucmVsaWFibGVfa3Byb2JlJiMzNDspCiAvKiBjb250ZXh0IHR5cGUgaXMgd2hhdCBCUEYgdmVyaWZpZXIgZXhwZWN0cyBmb3Iga3Byb2JlIGNvbnRleHQsIGJ1dCB0YXJnZXQKLSAqIHByb2dyYW0gaGFzIGBzdHVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmUKJiM0MzsgKiBwcm9ncmFtIGhhcyBgc3RydWN0IHdoYXRldmVyICpjdHhgIGFyZ3VtZW50LCBzbyBmcmVwbGFjZSBvcGVyYXRpb24gd2lsbCBiZQogICogcmVqZWN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6CiAgKgogICogYXJnMCByZXBsYWNlX2J0Zl91bnJlbGlhYmxlX2twcm9iZShzdHJ1Y3QgcHRfcmVncyAqKSBkb2VzbiYjMzk7dCBtYXRjaCBidGZfdW5yZWxpYWJsZV9rcHJvYmUoc3RydWN0IHdoYXRldmVyICopCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jCmluZGV4IGM2Njk5MTU5ZGFjZGQuLmU0NGE5NzkyNzBlYTAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jCkBAIC0xNTExLDcgJiM0MzsxNTExLDcgQEAgX19uYWtlZCBpbnQgY2hlY2twb2ludF9zdGF0ZXNfZGVsZXRpb24odm9pZCkKIAkgKiB3b3VsZCBnZXQgZXF1YWwgdG8gb25lIG9mIHRoZSBleHBsb3JlZCBzdGF0ZXMgYW5kIHRodXMgbG9vcAogCSAqIGV4cGxvcmF0aW9uIHdvdWxkIGJlIGZpbmlzaGVkIChhdC1sZWFzdCBmb3IgYSBzcGVjaWZpYyBwYXRoKS4KIAkgKiBWZXJpZmllciBldmljdHMgZXhwbG9yZWQgc3RhdGVzIHdpdGggaGlnaCBtaXNzIHRvIGhpdCByYXRpbwotCSAqIHRvIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWQKJiM0MzsJICogdG8gYXZvaWQgY29tcGFyaW5nIGN1cnJlbnQgc3RhdGUgd2l0aCB0b28gbWFueSBleHBsb3JlZAogCSAqIHN0YXRlcyBwZXIgaW5zdHJ1Y3Rpb24uCiAJICogVGhpcyB0ZXN0IGlzIGRlc2lnbmVkIHRvICYjMzQ7c3RyZXNzIHRlc3QmIzM0OyBldmljdGlvbiBwb2xpY3kgZGVmaW5lZCB1c2luZyBmb3JtdWxhOgogCSAqCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYwppbmRleCBhNjNlMzM2NzUwOTE4Li4yMjdkZWEwZGEzYTA1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMKQEAgLTIyNSw3ICYjNDM7MjI1LDcgQEAgX19uYWtlZCB2b2lkIHN0YWNrX3dyaXRlX3ByaXZfdnNfdW5wcml2KHZvaWQpCiB9CiAKIC8qIFNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHRlc3QsIGJ1dCB0aGlzIHRpbWUgYWxzbyBwZXJmb3JtIGEgcmVhZCBmcm9tIHRoZQotICogYWRkcmVzcyB3cml0dGVuIHRvIHdpdGggYSB2YXJpYWJsZSBvZmZldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LAomIzQzOyAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2Zmc2V0LiBUaGUgcmVhZCBpcyBhbGxvd2VkLCBzaG93aW5nIHRoYXQsCiAgKiBhZnRlciBhIHZhcmlhYmxlLW9mZnNldCB3cml0ZSwgYSBwcml2aWxlZ2VkIHByb2dyYW0gY2FuIHJlYWQgdGhlIHNsb3RzIHRoYXQKICAqIHdlcmUgaW4gdGhlIHJhbmdlIG9mIHRoYXQgd3JpdGUgKGV2ZW4gaWYgdGhlIHZlcmlmaWVyIGRvZXNuJiMzOTt0IGFjdHVhbGx5IGtub3cgaWYKICAqIHRoZSBzbG90IGJlaW5nIHJlYWQgd2FzIHJlYWxseSB3cml0dGVuIHRvIG9yIG5vdC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDY6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgyNAoJCQkJCQkJb3V0cHV0OiA3NQoJCQkJCQkJdGhvdWdodHM6IDkyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogQSBEZWVwIERpdmUgaW50byBUeXBvcyBhbmQgVGVzdCBTdWl0ZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBzY2FuIG9mIHRoZSBkaWZmIHJldmVhbHMgYSBjb2xsZWN0aW9uIG9mIGNoYW5nZXMsIGFuZCBpdCYjMzk7cyBsb29raW5nIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGNvbW1lbnQgdHlwbyBmaXhlcyDigJMgYWxsIG9mIHRoZW0hIEkgbWVhbiwgaXQmIzM5O3MgY292ZXJpbmcgYSBicm9hZCByYW5nZSBvZiBmaWxlczogYGFyY2gvYXJtL25ldC9icGZfaml0XzMyLmNgLCBgYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jYCwgYGFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuY2AsIGBhcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TYCwgYGluY2x1ZGUvbGludXgvZmlsdGVyLmhgLCBga2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY2AsIGB0b29scy9saWIvYnBmL2J0Zi5jYCwgYHRvb2xzL2xpYi9icGYvdXNkdC5jYCwgYW5kIGEgc2xldyBvZiBzZWxmdGVzdCBmaWxlcyB1bmRlciBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gZG8gbXkgZHVlIGRpbGlnZW5jZSBhbmQgY29uZmlybSB0aGF0IHRoZSBjaGFuZ2UgaXMgbGltaXRlZCB0byBjb21tZW50cy4gSSYjMzk7bGwgbWV0aWN1bG91c2x5IGdvIHRocm91Z2ggZWFjaCBmaWxlLCBzcGVjaWZpY2FsbHkgZXhhbWluaW5nIHRoZSBsaW5lcyB3aGVyZSB0aGUgZml4ZXMgYXJlIG1hZGUuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBgaW5jbHVkZS9saW51eC9maWx0ZXIuaGAsIGBrZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jYCwgYW5kIGFsbCB0aGUgYGFyY2gvLi4uYCBhbmQgYHRvb2xzLy4uLmAgZGlyZWN0b3JpZXMsIGFuZCBjb25maXJtIHRoYXQgdGhlcmUmIzM5O3Mgbm8gYWx0ZXJhdGlvbiB0byBhbnkgY3JpdGljYWwgY29kZS4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIG5vIHN0cmluZyBsaXRlcmFscywgbWFjcm9zLCBvciBhbnl0aGluZyBvZiB0aGF0IHNvcnQgYXJlIGltcGFjdGVkLgoKQWxyaWdodCwgSSYjMzk7dmUgY29uZmlybWVkIGl0LiBBcyBwZXIgU2VjdGlvbiAyLCB0aGlzIHBhdGNoIGlzIHN0cmljdGx5IGluIHRoZSByZWFsbSBvZiAmIzM0O05vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMmIzM0Ozogc3BlY2lmaWNhbGx5IGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBhbmQgc3BlbGxpbmcgZml4ZXMuIFBsdXMsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb25maW5lZCB0byB1c2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmdGVzdHMsIGFuZCBzY3JpcHRzLCB3aGljaCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcy4gVGhpcyBtZWFucyBpdCYjMzk7cyBhIGNsZWFyIGNhc2UuCgpUaGVyZWZvcmUsIGZvciB0aGlzIHBhdGNoLCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBUaGVyZSBhcmUgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uLCBhbmQgY2VydGFpbmx5IG5vIHNwZWNpZmljIHN5bWJvbHMgdGhhdCBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGguIFRoZSByZWFzb25pbmcgaXMgc2ltcGxlOiB0aGUgcGF0Y2gmIzM5O3Mgc2NvcGUgaXMgbGltaXRlZCB0byBjb21tZW50IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIGFjcm9zcyBrZXJuZWwgc291cmNlcywgYXJjaGl0ZWN0dXJlIEpJVHMsIGFuZCBzZWxmdGVzdCBmaWxlcy4gTm8gZXhlY3V0YWJsZSBjb2RlIG9yIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgYXJlIG1vZGlmaWVkLgoKVGltZSB0byBpbnZva2UgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IGNvbnRhaW5zIGNvbW1lbnQgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBCUEYgSklUIGZpbGVzLCBhbmQgQlBGIHNlbGZ0ZXN0cy90b29scy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBjb250YWlucyBjb21tZW50IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIGFjcm9zcyBrZXJuZWwgc291cmNlIGZpbGVzLCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgQlBGIEpJVCBmaWxlcywgYW5kIEJQRiBzZWxmdGVzdHMvdG9vbHMuIE5vIGV4ZWN1dGFibGUgY29kZSwgbWFjcm9zLCBvciBkYXRhIHN0cnVjdHVyZXMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNjo0NzwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDhUMDY6NDY6NTguOTA1MzI3OTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTk3NDU3OTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgY29udGFpbnMgY29tbWVudCBzcGVsbGluZyBhbmQgdHlwbyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEJQRiBKSVQgZmlsZXMsIGFuZCBCUEYgc2VsZnRlc3RzL3Rvb2xzLiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA2OjQ2OjU4LjkwNTMzMjY3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ1NTcxMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzM2NjBkZmEzZGRlYjk5ZTY0NGU3ODk4MDc3MzYwM2E3NGRkN2M5NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCA4IDA2OjQ2OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmMgYi9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXFxuaW5kZXggOWVkZTgxYWZiYzUwZS4uYjFjMjFjMDE0YzljZiAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXFxuKysrIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY1xcbkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYyxcXG4gXFx0YXJtX2JwZl9wdXRfcmVnNjQoZHN0LCByZCwgY3R4KTtcXG4gfVxcbiBcXG4tLyogQXJpdGhtYXRpYyBPcGVyYXRpb24gKi9cXG4rLyogQXJpdGhtZXRpYyBPcGVyYXRpb24gKi9cXG4gc3RhdGljIGlubGluZSB2b2lkIGVtaXRfYXJfcihjb25zdCB1OCByZCwgY29uc3QgdTggcnQsIGNvbnN0IHU4IHJtLFxcbiBcXHRcXHRcXHQgICAgIGNvbnN0IHU4IHJuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1OCBvcCxcXG4gXFx0XFx0XFx0ICAgICBib29sIGlzX2ptcDY0KSB7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbmluZGV4IGJmZGM1MDc0MGRhOGUuLmNmOGMxYjQ5ZGEyNTcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXFxuKysrIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTIzLDcgKzIzLDcgQEBcXG4gICpcXG4gICpcXHRcXHRbXFx0cHJldiBzcFxcdFxcdF0gXFx1MDAzYy0tLS0tLS0tLS0tLS1cXG4gICpcXHRcXHRbICAgbnYgZ3ByIHNhdmUgYXJlYVxcdF0gMTYgKiA0XFx0fFxcbi0gKiBmcCAocjMxKSAtLVxcdTAwM2VcXHRbICAgZWJwZiBzdGFjayBzcGFjZVxcdF0gdXB0byA1MTJcXHR8XFxuKyAqIGZwIChyMzEpIC0tXFx1MDAzZVxcdFsgICBlYnBmIHN0YWNrIHNwYWNlXFx0XSB1cCB0byA1MTJcXHR8XFxuICAqXFx0XFx0WyAgICAgZnJhbWUgaGVhZGVyXFx0XSAxNlxcdFxcdHxcXG4gICogc3AgKHIxKSAtLS1cXHUwMDNlXFx0WyAgICBzdGFjayBwb2ludGVyXFx0XSAtLS0tLS0tLS0tLS0tLVxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggZmM5ZGI2OTFlODIwMy4uOGExYTAwMDI2YzY5ZiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5AQCAtMjMsNyArMjMsNyBAQFxcbiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZTpcXG4gICogTGF5b3V0IHdoZW4gc2V0dGluZyB1cCBvdXIgb3duIHN0YWNrIGZyYW1lLlxcbiAgKiBOb3RlOiByMSBhdCBib3R0b20sIGNvbXBvbmVudCBvZmZzZXRzIHBvc2l0aXZlIHdydCByMS5cXG4tICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50XFxuKyAqIEVuc3VyZSB0aGUgdG9wIGhhbGYgKHVwIHRvIGxvY2FsX3RtcF92YXIpIHN0YXlzIGNvbnNpc3RlbnRcXG4gICogd2l0aCBvdXIgcmVkem9uZSB1c2FnZS5cXG4gICpcXG4gICogdGFpbF9jYWxsX2luZm8gLSBzdG9yZXMgdGFpbGNhbGwgY291bnQgdmFsdWUgaW4gbWFpbiBwcm9ncmFtJ3NcXG5AQCAtMzUsNyArMzUsNyBAQFxcbiAgKlxcdFxcdFsgICBudiBncHIgc2F2ZSBhcmVhXFx0XSAoNiAqIDgpXFx0fFxcbiAgKlxcdFxcdFsgYWRkbC4gbnYgZ3ByIHNhdmUgYXJlYV0gKDEyICogOClcXHR8IFxcdTAwM2MtLS0gZXhjZXB0aW9uIGJvdW5kYXJ5L2NhbGxiYWNrIHByb2dyYW1cXG4gICpcXHRcXHRbICAgIGxvY2FsX3RtcF92YXJcXHRdIDI0XFx0XFx0fFxcbi0gKiBmcCAocjMxKSAtLVxcdTAwM2VcXHRbICAgZWJwZiBzdGFjayBzcGFjZVxcdF0gdXB0byA1MTJcXHR8XFxuKyAqIGZwIChyMzEpIC0tXFx1MDAzZVxcdFsgICBlYnBmIHN0YWNrIHNwYWNlXFx0XSB1cCB0byA1MTJcXHR8XFxuICAqXFx0XFx0WyAgICAgZnJhbWUgaGVhZGVyXFx0XSAzMi8xMTJcXHR8XFxuICAqIHNwIChyMSkgLS0tXFx1MDAzZVxcdFsgICAgc3RhY2sgcG9pbnRlclxcdF0gLS0tLS0tLS0tLS0tLS1cXG4gICpcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcXG5pbmRleCBhMmUyOGUwNDY0YTMzLi44MTQzMGYwNjVhYzk3IDEwMDY0NFxcbi0tLSBhL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcXG4rKysgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXFxuQEAgLTE5NSw3ICsxOTUsNyBAQCBicGZfZXJyb3I6XFxuIFxcdC8qIE1ha2UgdGhlIEpJVCBwcm9ncmFtIHJldHVybiB6ZXJvLiAgVGhlIEpJVCBlcGlsb2d1ZVxcbiBcXHQgKiBzdG9yZXMgYXdheSB0aGUgb3JpZ2luYWwgJW83IGludG8gcl9zYXZlZF9PNy4gIFRoZVxcbiBcXHQgKiBub3JtYWwgbGVhZiBmdW5jdGlvbiByZXR1cm4gaXMgdG8gdXNlIFxcXCJyZXRsXFxcIiB3aGljaFxcbi1cXHQgKiB3b3VsZCBldmFsdXRlIHRvIFxcXCJqbXBsICVvNyArIDgsICVnMFxcXCIgYnV0IHdlIHdhbnQgdG9cXG4rXFx0ICogd291bGQgZXZhbHVhdGUgdG8gXFxcImptcGwgJW83ICsgOCwgJWcwXFxcIiBidXQgd2Ugd2FudCB0b1xcbiBcXHQgKiB1c2UgdGhlIHNhdmVkIHZhbHVlIHRodXMgdGhlIHNlcXVlbmNlIHlvdSBzZWUgaGVyZS5cXG4gXFx0ICovXFxuIFxcdGptcGxcXHRyX3NhdmVkX083ICsgOCwgJWcwXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmggYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuaW5kZXggMDBhZDhiNjNhYTQ3Ny4uNGVmZjZlNjAxYjA1MyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IGN0bF90YWJsZV9oZWFkZXI7XFxuICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRCUEZfQUxVMzJfSU1NX09GRihPUCwgRFNULCBJTU0sIDApXFxuIFxcbi0vKiBFbmRpYW5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi9cXG4rLyogRW5kaWFubmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xcbiBcXG4gI2RlZmluZSBCUEZfRU5ESUFOKFRZUEUsIERTVCwgTEVOKVxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0KChzdHJ1Y3QgYnBmX2luc24pIHtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTEwMjksNyArMTAyOSw3IEBAIHN0YXRpYyBpbmxpbmUgdTggKmJwZl9za2JfY2IoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0ICpcXG4gXFx0ICogSW4gc29tZSBzb2NrZXQgZmlsdGVyIGNhc2VzLCB0aGUgY2IgdW5mb3J0dW5hdGVseSBuZWVkcyB0byBiZVxcbiBcXHQgKiBzYXZlZC9yZXN0b3JlZCBzbyB0aGF0IHByb3RvY29sIHNwZWNpZmljIHNrYi1cXHUwMDNlY2JbXSBkYXRhIHdvbid0XFxuLVxcdCAqIGJlIGxvc3QuIEluIGFueSBjYXNlLCBkdWUgdG8gdW5wcml2aWxlZGdlZCBlQlBGIHByb2dyYW1zXFxuK1xcdCAqIGJlIGxvc3QuIEluIGFueSBjYXNlLCBkdWUgdG8gdW5wcml2aWxlZ2VkIGVCUEYgcHJvZ3JhbXNcXG4gXFx0ICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWFcXG4gXFx0ICogdG8gbm90IGxlYWsgcHJldmlvdXMgY29udGVudHMgdG8gdXNlciBzcGFjZS5cXG4gXFx0ICovXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmMgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXFxuaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXFxuKysrIGIva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xcbkBAIC0yMDcsNyArMjA3LDcgQEAgcmV1c2Vwb3J0X2FycmF5X3VwZGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgcmV1c2Vwb3J0X2FycmF5ICphcnJheSxcXG4gXFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYmluZGVkXFxuK1xcdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYm91bmRcXG4gXFx0ICogaW4gdGhlIFVEUCBjYXNlKSBhbmRcXG4gXFx0ICogaXQgbXVzdCBhbHNvIGJlIGEgU09fUkVVU0VQT1JUIHNrIChpLmUuIHJldXNlIGNhbm5vdCBiZSBOVUxMKS5cXG4gXFx0ICpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9idGYuYyBiL3Rvb2xzL2xpYi9icGYvYnRmLmNcXG5pbmRleCBjNzgzMzU5OTc3YjQ2Li5kMWM3MzExM2U1OGZiIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2xpYi9icGYvYnRmLmNcXG4rKysgYi90b29scy9saWIvYnBmL2J0Zi5jXFxuQEAgLTM4NDcsNyArMzg0Nyw3IEBAIHN0YXRpYyBpbnQgYnRmX2RlZHVwX3JlbWFwX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQpO1xcbiAgKiB0eXBlcywgaW4gZ2VuZXJhbCwgY2FuIGZvcm0gZ3JhcGhzIGNvbnRhaW5pbmcgY3ljbGVzLCBub3QganVzdCBEQUdzLlxcbiAgKlxcbiAgKiBXaGlsZSBhbGdvcml0aG0gZG9lcyBkZWR1cGxpY2F0aW9uLCBpdCBhbHNvIG1lcmdlcyBhbmQgcmVzb2x2ZXMgdHlwZVxcbi0gKiBpbmZvcm1hdGlvbiAodW5sZXNzIGRpc2FibGVkIHRocm91Z2h0IGBzdHJ1Y3QgYnRmX29wdHNgKSwgd2hlbmV2ZXIgcG9zc2libGUuXFxuKyAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaCBgc3RydWN0IGJ0Zl9vcHRzYCksIHdoZW5ldmVyIHBvc3NpYmxlLlxcbiAgKiBFLmcuLCBpbiB0aGUgZXhhbXBsZSBhYm92ZSB3aXRoIHR3byBjb21waWxhdGlvbiB1bml0cyBoYXZpbmcgcGFydGlhbCB0eXBlXFxuICAqIGluZm9ybWF0aW9uIGZvciBzdHJ1Y3RzIGBBYCBhbmQgYEJgLCB0aGUgb3V0cHV0IG9mIGFsZ29yaXRobSB3aWxsIGVtaXRcXG4gICogYSBzaW5nbGUgY29weSBvZiBlYWNoIEJURiB0eXBlIHRoYXQgZGVzY3JpYmVzIHN0cnVjdHMgYEFgLCBgQmAsIGFuZCBgU2BcXG5AQCAtNTY0OCw3ICs1NjQ4LDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVzb2x2ZV9md2RzKHN0cnVjdCBidGZfZGVkdXAgKmQpXFxuICAqXFxuICAqIEFmdGVyIHdlIGVzdGFibGlzaGVkIGZvciBlYWNoIHR5cGUgaXRzIGNvcnJlc3BvbmRpbmcgY2Fub25pY2FsIHJlcHJlc2VudGF0aXZlXFxuICAqIHR5cGUsIHdlIG5vdyBjYW4gZWxpbWluYXRlIHR5cGVzIHRoYXQgYXJlIG5vdCBjYW5vbmljYWwgYW5kIGxlYXZlIG9ubHlcXG4tICogY2Fub25pY2FsIG9uZXMgbGF5ZWQgb3V0IHNlcXVlbnRpYWxseSBpbiBtZW1vcnkgYnkgY29weWluZyB0aGVtIG92ZXJcXG4rICogY2Fub25pY2FsIG9uZXMgbGFpZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlclxcbiAgKiBkdXBsaWNhdGVzLiBEdXJpbmcgY29tcGFjdGlvbiBidGZfZGVkdXAtXFx1MDAzZWh5cG90X21hcCBhcnJheSBpcyByZXVzZWQgdG8gc3RvcmVcXG4gICogYSBtYXAgZnJvbSBvcmlnaW5hbCB0eXBlIElEIHRvIGEgbmV3IGNvbXBhY3RlZCB0eXBlIElELCB3aGljaCB3aWxsIGJlIHVzZWRcXG4gICogZHVyaW5nIG5leHQgcGhhc2UgdG8gXFxcImZpeCB1cFxcXCIgdHlwZSBJRHMsIHJlZmVyZW5jZWQgZnJvbSBzdHJ1Y3QvdW5pb24gYW5kXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvdXNkdC5jIGIvdG9vbHMvbGliL2JwZi91c2R0LmNcXG5pbmRleCBlZTlkMWI2MTQ4ODNjLi42N2M2MGY3MTZjMWE5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2xpYi9icGYvdXNkdC5jXFxuKysrIGIvdG9vbHMvbGliL2JwZi91c2R0LmNcXG5AQCAtMTQ0LDcgKzE0NCw3IEBAXFxuICAqIGFib3V0LiBUaGlzIHN0YXRlIGhhcyB0byBiZSBtYWludGFpbmVkIHBlci1CUEYgb2JqZWN0IGFuZCBjb29yZGluYXRlXFxuICAqIGJldHdlZW4gZGlmZmVyZW50IFVTRFQgYXR0YWNobWVudHMgd2l0aGluIHRoZSBzYW1lIEJQRiBvYmplY3QuXFxuICAqXFxuLSAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxheWVkIG91dFxcbisgKiBTcGVjIElEIGlzIHRoZSBrZXkgaW4gc3BlYyBCUEYgbWFwLCB2YWx1ZSBpcyB0aGUgYWN0dWFsIFVTRFQgc3BlYyBsYWlkIG91dFxcbiAgKiBhcyBzdHJ1Y3QgdXNkdF9zcGVjLiBFYWNoIGludm9jYXRpb24gb2YgQlBGIHByb2dyYW0gYXQgcnVudGltZSBuZWVkcyB0b1xcbiAgKiBrbm93IGl0cyBhc3NvY2lhdGVkIHNwZWMgSUQuIEl0IGdldHMgaXQgZWl0aGVyIHRocm91Z2ggQlBGIGNvb2tpZSwgd2hpY2hcXG4gICogbGliYnBmIHNldHMgdG8gc3BlYyBJRCBkdXJpbmcgYXR0YWNoIHRpbWUsIG9yLCBpZiBrZXJuZWwgaXMgdG9vIG9sZCB0b1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcXG5pbmRleCBkZTY1NmI2OWQxM2FmLi5mYjUwZWU0YWQwOTcyIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xcbkBAIC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGNoZWNrX2FzYW5fYXJncyhzOCBfX2FyZW5hICphZGRyLCBzaXplX3Qgc2l6ZSxcXG4gXFx0XFx0Z290byBjb25maXJtZWRfdmFsaWQ7XFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIHRoZSBlZGdlIG9mIHRoZVxcbitcXHQgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIGVkZ2Ugb2YgdGhlXFxuIFxcdCAqIDRHaUIgYm91bmRhcnkgb2YgdGhlIGFyZW5hIChsYXN0IHZhbGlkIGFkZHJlc3MgaXMgMVVMIFxcdTAwM2NcXHUwMDNjIDMyIC0gMSkuXFxuIFxcdCAqXFxuIFxcdCAqXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuY1xcbmluZGV4IDFiMjVkNWM1ZjhmYjguLjhiOTZmYjg2MTM2ODggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jXFxuQEAgLTEzLDcgKzEzLDcgQEBcXG4gICogSVB2NiBoZWFkZXIgd2l0aCBhIFNlZ21lbnQgUm91dGluZyBIZWFkZXIsIHdpdGggc2VnbWVudHMgOlxcbiAgKlxcdGZkMDA6OjEgLVxcdTAwM2UgZmQwMDo6MiAtXFx1MDAzZSBmZDAwOjozIC1cXHUwMDNlIGZkMDA6OjRcXG4gICpcXG4tICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJpbmRlZCB0byBzZWc2bG9jYWwgRW5kLkJQRiBhY3Rpb25zIDpcXG4rICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJvdW5kIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxcbiAgKiAtIGZkMDA6OjEgOiBhZGQgYSBUTFYsIGNoYW5nZSB0aGUgZmxhZ3MgYW5kIGFwcGx5IGEgRW5kLlggYWN0aW9uIHRvIGZjNDI6OjFcXG4gICogLSBmZDAwOjoyIDogcmVtb3ZlIHRoZSBUTFYsIGNoYW5nZSB0aGUgZmxhZ3MsIGFkZCBhIHRhZ1xcbiAgKiAtIGZkMDA6OjMgOiBhcHBseSBhbiBFbmQuVCBhY3Rpb24gdG8gZmQwMDo6NCwgdGhyb3VnaCByb3V0aW5nIHRhYmxlIDExN1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oXFxuaW5kZXggOGFlNGZiMjAyN2Y3My4uOWYyOTcxZmM3Y2Q1NCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oXFxuQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMgdGxkX2tleV90IF9fdGxkX2NyZWF0ZV9rZXkoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IHNpemUsIGJvb2wgZHluX2RhdGEpXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdC8qXFxuLVxcdFxcdCAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcXG4rXFx0XFx0ICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXAgdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcXG4gXFx0XFx0ICogVExEX0RZTl9EQVRBX1NJWkUgaXMgYWxsb2NhdGVkIGZvciB0bGRfY3JlYXRlX2tleSgpXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoZHluX2RhdGEpIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jXFxuaW5kZXggNjI0MDc4YWJmM2RlYS4uZDdlMzBlZTU3NmM5MyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcXG5AQCAtNyw3ICs3LDcgQEBcXG4gXFxuIFNFQyhcXFwiZnJlcGxhY2UvYnRmX3VucmVsaWFibGVfa3Byb2JlXFxcIilcXG4gLyogY29udGV4dCB0eXBlIGlzIHdoYXQgQlBGIHZlcmlmaWVyIGV4cGVjdHMgZm9yIGtwcm9iZSBjb250ZXh0LCBidXQgdGFyZ2V0XFxuLSAqIHByb2dyYW0gaGFzIGBzdHVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmVcXG4rICogcHJvZ3JhbSBoYXMgYHN0cnVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmVcXG4gICogcmVqZWN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6XFxuICAqXFxuICAqIGFyZzAgcmVwbGFjZV9idGZfdW5yZWxpYWJsZV9rcHJvYmUoc3RydWN0IHB0X3JlZ3MgKikgZG9lc24ndCBtYXRjaCBidGZfdW5yZWxpYWJsZV9rcHJvYmUoc3RydWN0IHdoYXRldmVyICopXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcXG5pbmRleCBjNjY5OTE1OWRhY2RkLi5lNDRhOTc5MjcwZWEwIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcXG5AQCAtMTUxMSw3ICsxNTExLDcgQEAgX19uYWtlZCBpbnQgY2hlY2twb2ludF9zdGF0ZXNfZGVsZXRpb24odm9pZClcXG4gXFx0ICogd291bGQgZ2V0IGVxdWFsIHRvIG9uZSBvZiB0aGUgZXhwbG9yZWQgc3RhdGVzIGFuZCB0aHVzIGxvb3BcXG4gXFx0ICogZXhwbG9yYXRpb24gd291bGQgYmUgZmluaXNoZWQgKGF0LWxlYXN0IGZvciBhIHNwZWNpZmljIHBhdGgpLlxcbiBcXHQgKiBWZXJpZmllciBldmljdHMgZXhwbG9yZWQgc3RhdGVzIHdpdGggaGlnaCBtaXNzIHRvIGhpdCByYXRpb1xcbi1cXHQgKiB0byB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXFxuK1xcdCAqIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWRcXG4gXFx0ICogc3RhdGVzIHBlciBpbnN0cnVjdGlvbi5cXG4gXFx0ICogVGhpcyB0ZXN0IGlzIGRlc2lnbmVkIHRvIFxcXCJzdHJlc3MgdGVzdFxcXCIgZXZpY3Rpb24gcG9saWN5IGRlZmluZWQgdXNpbmcgZm9ybXVsYTpcXG4gXFx0ICpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcXG5pbmRleCBhNjNlMzM2NzUwOTE4Li4yMjdkZWEwZGEzYTA1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXFxuQEAgLTIyNSw3ICsyMjUsNyBAQCBfX25ha2VkIHZvaWQgc3RhY2tfd3JpdGVfcHJpdl92c191bnByaXYodm9pZClcXG4gfVxcbiBcXG4gLyogU2ltaWxhciB0byB0aGUgcHJldmlvdXMgdGVzdCwgYnV0IHRoaXMgdGltZSBhbHNvIHBlcmZvcm0gYSByZWFkIGZyb20gdGhlXFxuLSAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2ZmZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcXG4rICogYWRkcmVzcyB3cml0dGVuIHRvIHdpdGggYSB2YXJpYWJsZSBvZmZzZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcXG4gICogYWZ0ZXIgYSB2YXJpYWJsZS1vZmZzZXQgd3JpdGUsIGEgcHJpdmlsZWdlZCBwcm9ncmFtIGNhbiByZWFkIHRoZSBzbG90cyB0aGF0XFxuICAqIHdlcmUgaW4gdGhlIHJhbmdlIG9mIHRoYXQgd3JpdGUgKGV2ZW4gaWYgdGhlIHZlcmlmaWVyIGRvZXNuJ3QgYWN0dWFsbHkga25vdyBpZlxcbiAgKiB0aGUgc2xvdCBiZWluZyByZWFkIHdhcyByZWFsbHkgd3JpdHRlbiB0byBvciBub3QuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA2OjQ3OjAwLjU1MTUxODQwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzU1MTI1NzIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgY29udGFpbnMgY29tbWVudCBzcGVsbGluZyBhbmQgdHlwbyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEJQRiBKSVQgZmlsZXMsIGFuZCBCUEYgc2VsZnRlc3RzL3Rvb2xzLiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzM2NjBkZmEzZGRlYjk5ZTY0NGU3ODk4MDc3MzYwM2E3NGRkN2M5NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMDY6NDY6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY1xuaW5kZXggOWVkZTgxYWZiYzUwZS4uYjFjMjFjMDE0YzljZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbisrKyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYyxcbiBcdGFybV9icGZfcHV0X3JlZzY0KGRzdCwgcmQsIGN0eCk7XG4gfVxuIFxuLS8qIEFyaXRobWF0aWMgT3BlcmF0aW9uICovXG4rLyogQXJpdGhtZXRpYyBPcGVyYXRpb24gKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9hcl9yKGNvbnN0IHU4IHJkLCBjb25zdCB1OCBydCwgY29uc3QgdTggcm0sXG4gXHRcdFx0ICAgICBjb25zdCB1OCBybiwgc3RydWN0IGppdF9jdHggKmN0eCwgdTggb3AsXG4gXHRcdFx0ICAgICBib29sIGlzX2ptcDY0KSB7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCBiZmRjNTA3NDBkYThlLi5jZjhjMWI0OWRhMjU3IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC0yMyw3ICsyMyw3IEBAXG4gICpcbiAgKlx0XHRbXHRwcmV2IHNwXHRcdF0gXHUwMDNjLS0tLS0tLS0tLS0tLVxuICAqXHRcdFsgICBudiBncHIgc2F2ZSBhcmVhXHRdIDE2ICogNFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuKyAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cCB0byA1MTJcdHxcbiAgKlx0XHRbICAgICBmcmFtZSBoZWFkZXJcdF0gMTZcdFx0fFxuICAqIHNwIChyMSkgLS0tXHUwMDNlXHRbICAgIHN0YWNrIHBvaW50ZXJcdF0gLS0tLS0tLS0tLS0tLS1cbiAgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGZjOWRiNjkxZTgyMDMuLjhhMWEwMDAyNmM2OWYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTIzLDcgKzIzLDcgQEBcbiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZTpcbiAgKiBMYXlvdXQgd2hlbiBzZXR0aW5nIHVwIG91ciBvd24gc3RhY2sgZnJhbWUuXG4gICogTm90ZTogcjEgYXQgYm90dG9tLCBjb21wb25lbnQgb2Zmc2V0cyBwb3NpdGl2ZSB3cnQgcjEuXG4tICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50XG4rICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXAgdG8gbG9jYWxfdG1wX3Zhcikgc3RheXMgY29uc2lzdGVudFxuICAqIHdpdGggb3VyIHJlZHpvbmUgdXNhZ2UuXG4gICpcbiAgKiB0YWlsX2NhbGxfaW5mbyAtIHN0b3JlcyB0YWlsY2FsbCBjb3VudCB2YWx1ZSBpbiBtYWluIHByb2dyYW0nc1xuQEAgLTM1LDcgKzM1LDcgQEBcbiAgKlx0XHRbICAgbnYgZ3ByIHNhdmUgYXJlYVx0XSAoNiAqIDgpXHR8XG4gICpcdFx0WyBhZGRsLiBudiBncHIgc2F2ZSBhcmVhXSAoMTIgKiA4KVx0fCBcdTAwM2MtLS0gZXhjZXB0aW9uIGJvdW5kYXJ5L2NhbGxiYWNrIHByb2dyYW1cbiAgKlx0XHRbICAgIGxvY2FsX3RtcF92YXJcdF0gMjRcdFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuKyAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cCB0byA1MTJcdHxcbiAgKlx0XHRbICAgICBmcmFtZSBoZWFkZXJcdF0gMzIvMTEyXHR8XG4gICogc3AgKHIxKSAtLS1cdTAwM2VcdFsgICAgc3RhY2sgcG9pbnRlclx0XSAtLS0tLS0tLS0tLS0tLVxuICAqXG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcbmluZGV4IGEyZTI4ZTA0NjRhMzMuLjgxNDMwZjA2NWFjOTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG4rKysgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG5AQCAtMTk1LDcgKzE5NSw3IEBAIGJwZl9lcnJvcjpcbiBcdC8qIE1ha2UgdGhlIEpJVCBwcm9ncmFtIHJldHVybiB6ZXJvLiAgVGhlIEpJVCBlcGlsb2d1ZVxuIFx0ICogc3RvcmVzIGF3YXkgdGhlIG9yaWdpbmFsICVvNyBpbnRvIHJfc2F2ZWRfTzcuICBUaGVcbiBcdCAqIG5vcm1hbCBsZWFmIGZ1bmN0aW9uIHJldHVybiBpcyB0byB1c2UgXCJyZXRsXCIgd2hpY2hcbi1cdCAqIHdvdWxkIGV2YWx1dGUgdG8gXCJqbXBsICVvNyArIDgsICVnMFwiIGJ1dCB3ZSB3YW50IHRvXG4rXHQgKiB3b3VsZCBldmFsdWF0ZSB0byBcImptcGwgJW83ICsgOCwgJWcwXCIgYnV0IHdlIHdhbnQgdG9cbiBcdCAqIHVzZSB0aGUgc2F2ZWQgdmFsdWUgdGh1cyB0aGUgc2VxdWVuY2UgeW91IHNlZSBoZXJlLlxuIFx0ICovXG4gXHRqbXBsXHRyX3NhdmVkX083ICsgOCwgJWcwXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbmluZGV4IDAwYWQ4YjYzYWE0NzcuLjRlZmY2ZTYwMWIwNTMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG5AQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyO1xuICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pXHRcdFx0XHRcXFxuIFx0QlBGX0FMVTMyX0lNTV9PRkYoT1AsIERTVCwgSU1NLCAwKVxuIFxuLS8qIEVuZGlhbmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xuKy8qIEVuZGlhbm5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi9cbiBcbiAjZGVmaW5lIEJQRl9FTkRJQU4oVFlQRSwgRFNULCBMRU4pXHRcdFx0XHRcXFxuIFx0KChzdHJ1Y3QgYnBmX2luc24pIHtcdFx0XHRcdFx0XFxcbkBAIC0xMDI5LDcgKzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIHU4ICpicGZfc2tiX2NiKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4gXHQgKlxuIFx0ICogSW4gc29tZSBzb2NrZXQgZmlsdGVyIGNhc2VzLCB0aGUgY2IgdW5mb3J0dW5hdGVseSBuZWVkcyB0byBiZVxuIFx0ICogc2F2ZWQvcmVzdG9yZWQgc28gdGhhdCBwcm90b2NvbCBzcGVjaWZpYyBza2ItXHUwMDNlY2JbXSBkYXRhIHdvbid0XG4tXHQgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWRnZWQgZUJQRiBwcm9ncmFtc1xuK1x0ICogYmUgbG9zdC4gSW4gYW55IGNhc2UsIGR1ZSB0byB1bnByaXZpbGVnZWQgZUJQRiBwcm9ncmFtc1xuIFx0ICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWFcbiBcdCAqIHRvIG5vdCBsZWFrIHByZXZpb3VzIGNvbnRlbnRzIHRvIHVzZXIgc3BhY2UuXG4gXHQgKi9cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jIGIva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xuaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmNcbisrKyBiL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmNcbkBAIC0yMDcsNyArMjA3LDcgQEAgcmV1c2Vwb3J0X2FycmF5X3VwZGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgcmV1c2Vwb3J0X2FycmF5ICphcnJheSxcbiBcdFx0cmV0dXJuIC1FTk9UU1VQUDtcbiBcbiBcdC8qXG4tXHQgKiBzayBtdXN0IGJlIGhhc2hlZCAoaS5lLiBsaXN0ZW5pbmcgaW4gdGhlIFRDUCBjYXNlIG9yIGJpbmRlZFxuK1x0ICogc2sgbXVzdCBiZSBoYXNoZWQgKGkuZS4gbGlzdGVuaW5nIGluIHRoZSBUQ1AgY2FzZSBvciBib3VuZFxuIFx0ICogaW4gdGhlIFVEUCBjYXNlKSBhbmRcbiBcdCAqIGl0IG11c3QgYWxzbyBiZSBhIFNPX1JFVVNFUE9SVCBzayAoaS5lLiByZXVzZSBjYW5ub3QgYmUgTlVMTCkuXG4gXHQgKlxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jXG5pbmRleCBjNzgzMzU5OTc3YjQ2Li5kMWM3MzExM2U1OGZiIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xuKysrIGIvdG9vbHMvbGliL2JwZi9idGYuY1xuQEAgLTM4NDcsNyArMzg0Nyw3IEBAIHN0YXRpYyBpbnQgYnRmX2RlZHVwX3JlbWFwX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQpO1xuICAqIHR5cGVzLCBpbiBnZW5lcmFsLCBjYW4gZm9ybSBncmFwaHMgY29udGFpbmluZyBjeWNsZXMsIG5vdCBqdXN0IERBR3MuXG4gICpcbiAgKiBXaGlsZSBhbGdvcml0aG0gZG9lcyBkZWR1cGxpY2F0aW9uLCBpdCBhbHNvIG1lcmdlcyBhbmQgcmVzb2x2ZXMgdHlwZVxuLSAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaHQgYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cbisgKiBpbmZvcm1hdGlvbiAodW5sZXNzIGRpc2FibGVkIHRocm91Z2ggYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cbiAgKiBFLmcuLCBpbiB0aGUgZXhhbXBsZSBhYm92ZSB3aXRoIHR3byBjb21waWxhdGlvbiB1bml0cyBoYXZpbmcgcGFydGlhbCB0eXBlXG4gICogaW5mb3JtYXRpb24gZm9yIHN0cnVjdHMgYEFgIGFuZCBgQmAsIHRoZSBvdXRwdXQgb2YgYWxnb3JpdGhtIHdpbGwgZW1pdFxuICAqIGEgc2luZ2xlIGNvcHkgb2YgZWFjaCBCVEYgdHlwZSB0aGF0IGRlc2NyaWJlcyBzdHJ1Y3RzIGBBYCwgYEJgLCBhbmQgYFNgXG5AQCAtNTY0OCw3ICs1NjQ4LDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVzb2x2ZV9md2RzKHN0cnVjdCBidGZfZGVkdXAgKmQpXG4gICpcbiAgKiBBZnRlciB3ZSBlc3RhYmxpc2hlZCBmb3IgZWFjaCB0eXBlIGl0cyBjb3JyZXNwb25kaW5nIGNhbm9uaWNhbCByZXByZXNlbnRhdGl2ZVxuICAqIHR5cGUsIHdlIG5vdyBjYW4gZWxpbWluYXRlIHR5cGVzIHRoYXQgYXJlIG5vdCBjYW5vbmljYWwgYW5kIGxlYXZlIG9ubHlcbi0gKiBjYW5vbmljYWwgb25lcyBsYXllZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlclxuKyAqIGNhbm9uaWNhbCBvbmVzIGxhaWQgb3V0IHNlcXVlbnRpYWxseSBpbiBtZW1vcnkgYnkgY29weWluZyB0aGVtIG92ZXJcbiAgKiBkdXBsaWNhdGVzLiBEdXJpbmcgY29tcGFjdGlvbiBidGZfZGVkdXAtXHUwMDNlaHlwb3RfbWFwIGFycmF5IGlzIHJldXNlZCB0byBzdG9yZVxuICAqIGEgbWFwIGZyb20gb3JpZ2luYWwgdHlwZSBJRCB0byBhIG5ldyBjb21wYWN0ZWQgdHlwZSBJRCwgd2hpY2ggd2lsbCBiZSB1c2VkXG4gICogZHVyaW5nIG5leHQgcGhhc2UgdG8gXCJmaXggdXBcIiB0eXBlIElEcywgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdC91bmlvbiBhbmRcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL3VzZHQuYyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5pbmRleCBlZTlkMWI2MTQ4ODNjLi42N2M2MGY3MTZjMWE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi91c2R0LmNcbisrKyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5AQCAtMTQ0LDcgKzE0NCw3IEBAXG4gICogYWJvdXQuIFRoaXMgc3RhdGUgaGFzIHRvIGJlIG1haW50YWluZWQgcGVyLUJQRiBvYmplY3QgYW5kIGNvb3JkaW5hdGVcbiAgKiBiZXR3ZWVuIGRpZmZlcmVudCBVU0RUIGF0dGFjaG1lbnRzIHdpdGhpbiB0aGUgc2FtZSBCUEYgb2JqZWN0LlxuICAqXG4tICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGF5ZWQgb3V0XG4rICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGFpZCBvdXRcbiAgKiBhcyBzdHJ1Y3QgdXNkdF9zcGVjLiBFYWNoIGludm9jYXRpb24gb2YgQlBGIHByb2dyYW0gYXQgcnVudGltZSBuZWVkcyB0b1xuICAqIGtub3cgaXRzIGFzc29jaWF0ZWQgc3BlYyBJRC4gSXQgZ2V0cyBpdCBlaXRoZXIgdGhyb3VnaCBCUEYgY29va2llLCB3aGljaFxuICAqIGxpYmJwZiBzZXRzIHRvIHNwZWMgSUQgZHVyaW5nIGF0dGFjaCB0aW1lLCBvciwgaWYga2VybmVsIGlzIHRvbyBvbGQgdG9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcbmluZGV4IGRlNjU2YjY5ZDEzYWYuLmZiNTBlZTRhZDA5NzIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xuQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2hlY2tfYXNhbl9hcmdzKHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzaXplLFxuIFx0XHRnb3RvIGNvbmZpcm1lZF92YWxpZDtcbiBcbiBcdC8qXG4tXHQgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIHRoZSBlZGdlIG9mIHRoZVxuK1x0ICogV3JhcGFyb3VuZCBpcyBwb3NzaWJsZSBmb3IgdmFsdWVzIGNsb3NlIHRvIHRoZSBlZGdlIG9mIHRoZVxuIFx0ICogNEdpQiBib3VuZGFyeSBvZiB0aGUgYXJlbmEgKGxhc3QgdmFsaWQgYWRkcmVzcyBpcyAxVUwgXHUwMDNjXHUwMDNjIDMyIC0gMSkuXG4gXHQgKlxuIFx0ICpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbmluZGV4IDFiMjVkNWM1ZjhmYjguLjhiOTZmYjg2MTM2ODggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuY1xuQEAgLTEzLDcgKzEzLDcgQEBcbiAgKiBJUHY2IGhlYWRlciB3aXRoIGEgU2VnbWVudCBSb3V0aW5nIEhlYWRlciwgd2l0aCBzZWdtZW50cyA6XG4gICpcdGZkMDA6OjEgLVx1MDAzZSBmZDAwOjoyIC1cdTAwM2UgZmQwMDo6MyAtXHUwMDNlIGZkMDA6OjRcbiAgKlxuLSAqIDMgZmQwMDo6LzE2IElQdjYgYWRkcmVzc2VzIGFyZSBiaW5kZWQgdG8gc2VnNmxvY2FsIEVuZC5CUEYgYWN0aW9ucyA6XG4rICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJvdW5kIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxuICAqIC0gZmQwMDo6MSA6IGFkZCBhIFRMViwgY2hhbmdlIHRoZSBmbGFncyBhbmQgYXBwbHkgYSBFbmQuWCBhY3Rpb24gdG8gZmM0Mjo6MVxuICAqIC0gZmQwMDo6MiA6IHJlbW92ZSB0aGUgVExWLCBjaGFuZ2UgdGhlIGZsYWdzLCBhZGQgYSB0YWdcbiAgKiAtIGZkMDA6OjMgOiBhcHBseSBhbiBFbmQuVCBhY3Rpb24gdG8gZmQwMDo6NCwgdGhyb3VnaCByb3V0aW5nIHRhYmxlIDExN1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbmluZGV4IDhhZTRmYjIwMjdmNzMuLjlmMjk3MWZjN2NkNTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHRsZF9rZXlfdCBfX3RsZF9jcmVhdGVfa2V5KGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLCBib29sIGR5bl9kYXRhKVxuIFx0XHR9XG4gXG4gXHRcdC8qXG4tXHRcdCAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcbitcdFx0ICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXAgdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcbiBcdFx0ICogVExEX0RZTl9EQVRBX1NJWkUgaXMgYWxsb2NhdGVkIGZvciB0bGRfY3JlYXRlX2tleSgpXG4gXHRcdCAqL1xuIFx0XHRpZiAoZHluX2RhdGEpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcbmluZGV4IDYyNDA3OGFiZjNkZWEuLmQ3ZTMwZWU1NzZjOTMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xuQEAgLTcsNyArNyw3IEBAXG4gXG4gU0VDKFwiZnJlcGxhY2UvYnRmX3VucmVsaWFibGVfa3Byb2JlXCIpXG4gLyogY29udGV4dCB0eXBlIGlzIHdoYXQgQlBGIHZlcmlmaWVyIGV4cGVjdHMgZm9yIGtwcm9iZSBjb250ZXh0LCBidXQgdGFyZ2V0XG4tICogcHJvZ3JhbSBoYXMgYHN0dWN0IHdoYXRldmVyICpjdHhgIGFyZ3VtZW50LCBzbyBmcmVwbGFjZSBvcGVyYXRpb24gd2lsbCBiZVxuKyAqIHByb2dyYW0gaGFzIGBzdHJ1Y3Qgd2hhdGV2ZXIgKmN0eGAgYXJndW1lbnQsIHNvIGZyZXBsYWNlIG9wZXJhdGlvbiB3aWxsIGJlXG4gICogcmVqZWN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6XG4gICpcbiAgKiBhcmcwIHJlcGxhY2VfYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCBwdF9yZWdzICopIGRvZXNuJ3QgbWF0Y2ggYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCB3aGF0ZXZlciAqKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbmluZGV4IGM2Njk5MTU5ZGFjZGQuLmU0NGE5NzkyNzBlYTAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbkBAIC0xNTExLDcgKzE1MTEsNyBAQCBfX25ha2VkIGludCBjaGVja3BvaW50X3N0YXRlc19kZWxldGlvbih2b2lkKVxuIFx0ICogd291bGQgZ2V0IGVxdWFsIHRvIG9uZSBvZiB0aGUgZXhwbG9yZWQgc3RhdGVzIGFuZCB0aHVzIGxvb3BcbiBcdCAqIGV4cGxvcmF0aW9uIHdvdWxkIGJlIGZpbmlzaGVkIChhdC1sZWFzdCBmb3IgYSBzcGVjaWZpYyBwYXRoKS5cbiBcdCAqIFZlcmlmaWVyIGV2aWN0cyBleHBsb3JlZCBzdGF0ZXMgd2l0aCBoaWdoIG1pc3MgdG8gaGl0IHJhdGlvXG4tXHQgKiB0byB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXG4rXHQgKiB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXG4gXHQgKiBzdGF0ZXMgcGVyIGluc3RydWN0aW9uLlxuIFx0ICogVGhpcyB0ZXN0IGlzIGRlc2lnbmVkIHRvIFwic3RyZXNzIHRlc3RcIiBldmljdGlvbiBwb2xpY3kgZGVmaW5lZCB1c2luZyBmb3JtdWxhOlxuIFx0ICpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuaW5kZXggYTYzZTMzNjc1MDkxOC4uMjI3ZGVhMGRhM2EwNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcbkBAIC0yMjUsNyArMjI1LDcgQEAgX19uYWtlZCB2b2lkIHN0YWNrX3dyaXRlX3ByaXZfdnNfdW5wcml2KHZvaWQpXG4gfVxuIFxuIC8qIFNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHRlc3QsIGJ1dCB0aGlzIHRpbWUgYWxzbyBwZXJmb3JtIGEgcmVhZCBmcm9tIHRoZVxuLSAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2ZmZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcbisgKiBhZGRyZXNzIHdyaXR0ZW4gdG8gd2l0aCBhIHZhcmlhYmxlIG9mZnNldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxuICAqIGFmdGVyIGEgdmFyaWFibGUtb2Zmc2V0IHdyaXRlLCBhIHByaXZpbGVnZWQgcHJvZ3JhbSBjYW4gcmVhZCB0aGUgc2xvdHMgdGhhdFxuICAqIHdlcmUgaW4gdGhlIHJhbmdlIG9mIHRoYXQgd3JpdGUgKGV2ZW4gaWYgdGhlIHZlcmlmaWVyIGRvZXNuJ3QgYWN0dWFsbHkga25vdyBpZlxuICAqIHRoZSBzbG90IGJlaW5nIHJlYWQgd2FzIHJlYWxseSB3cml0dGVuIHRvIG9yIG5vdC5cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA2OjQ3OjAwLjU1MTUxOTg4NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc1NTEyMzYzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXM6IEEgRGVlcCBEaXZlIGludG8gVHlwb3MgYW5kIFRlc3QgU3VpdGVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHNjYW4gb2YgdGhlIGRpZmYgcmV2ZWFscyBhIGNvbGxlY3Rpb24gb2YgY2hhbmdlcywgYW5kIGl0J3MgbG9va2luZyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBXZSdyZSB0YWxraW5nIGFib3V0IGNvbW1lbnQgdHlwbyBmaXhlcyDigJMgYWxsIG9mIHRoZW0hIEkgbWVhbiwgaXQncyBjb3ZlcmluZyBhIGJyb2FkIHJhbmdlIG9mIGZpbGVzOiBgYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY2AsIGBhcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLCBgYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jYCwgYGFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNgLCBgaW5jbHVkZS9saW51eC9maWx0ZXIuaGAsIGBrZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jYCwgYHRvb2xzL2xpYi9icGYvYnRmLmNgLCBgdG9vbHMvbGliL2JwZi91c2R0LmNgLCBhbmQgYSBzbGV3IG9mIHNlbGZ0ZXN0IGZpbGVzIHVuZGVyIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC5cblxuTm93LCBJJ20gZ29pbmcgdG8gZG8gbXkgZHVlIGRpbGlnZW5jZSBhbmQgY29uZmlybSB0aGF0IHRoZSBjaGFuZ2UgaXMgbGltaXRlZCB0byBjb21tZW50cy4gSSdsbCBtZXRpY3Vsb3VzbHkgZ28gdGhyb3VnaCBlYWNoIGZpbGUsIHNwZWNpZmljYWxseSBleGFtaW5pbmcgdGhlIGxpbmVzIHdoZXJlIHRoZSBmaXhlcyBhcmUgbWFkZS4gSSdsbCBkb3VibGUtY2hlY2sgYGluY2x1ZGUvbGludXgvZmlsdGVyLmhgLCBga2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY2AsIGFuZCBhbGwgdGhlIGBhcmNoLy4uLmAgYW5kIGB0b29scy8uLi5gIGRpcmVjdG9yaWVzLCBhbmQgY29uZmlybSB0aGF0IHRoZXJlJ3Mgbm8gYWx0ZXJhdGlvbiB0byBhbnkgY3JpdGljYWwgY29kZS4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIG5vIHN0cmluZyBsaXRlcmFscywgbWFjcm9zLCBvciBhbnl0aGluZyBvZiB0aGF0IHNvcnQgYXJlIGltcGFjdGVkLlxuXG5BbHJpZ2h0LCBJJ3ZlIGNvbmZpcm1lZCBpdC4gQXMgcGVyIFNlY3Rpb24gMiwgdGhpcyBwYXRjaCBpcyBzdHJpY3RseSBpbiB0aGUgcmVhbG0gb2YgXCJOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzXCI6IHNwZWNpZmljYWxseSBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgYW5kIHNwZWxsaW5nIGZpeGVzLiBQbHVzLCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgY29uZmluZWQgdG8gdXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZnRlc3RzLCBhbmQgc2NyaXB0cywgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuIFRoaXMgbWVhbnMgaXQncyBhIGNsZWFyIGNhc2UuXG5cblRoZXJlZm9yZSwgZm9yIHRoaXMgcGF0Y2gsIGBXb3J0aEZ1enppbmcgPSBmYWxzZWAuIFRoZXJlIGFyZSBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24sIGFuZCBjZXJ0YWlubHkgbm8gc3BlY2lmaWMgc3ltYm9scyB0aGF0IEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aC4gVGhlIHJlYXNvbmluZyBpcyBzaW1wbGU6IHRoZSBwYXRjaCdzIHNjb3BlIGlzIGxpbWl0ZWQgdG8gY29tbWVudCBzcGVsbGluZyBhbmQgdHlwbyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZXMsIGFyY2hpdGVjdHVyZSBKSVRzLCBhbmQgc2VsZnRlc3QgZmlsZXMuIE5vIGV4ZWN1dGFibGUgY29kZSBvciBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cblxuVGltZSB0byBpbnZva2UgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgyNCwiT3V0cHV0VG9rZW5zIjo3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA2OjQ3OjA4LjEwMjc1ODE0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgY29udGFpbnMgY29tbWVudCBzcGVsbGluZyBhbmQgdHlwbyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEJQRiBKSVQgZmlsZXMsIGFuZCBCUEYgc2VsZnRlc3RzL3Rvb2xzLiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IGNvbnRhaW5zIGNvbW1lbnQgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBCUEYgSklUIGZpbGVzLCBhbmQgQlBGIHNlbGZ0ZXN0cy90b29scy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNjo0NzowOC4xMDI3Nzc0ODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrgbg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 05:54:26 +0000 UTC FinishedAt: 2026-09-08 06:47:08 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDA2OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgY29udGFpbnMgY29tbWVudCBzcGVsbGluZyBhbmQgdHlwbyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEJQRiBKSVQgZmlsZXMsIGFuZCBCUEYgc2VsZnRlc3RzL3Rvb2xzLiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDY6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MzY2MGRmYTNkZGViOTllNjQ0ZTc4OTgwNzczNjAzYTc0ZGQ3Yzk1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAwNjo0Njo1NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY1xuaW5kZXggOWVkZTgxYWZiYzUwZS4uYjFjMjFjMDE0YzljZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbkBAIC0xMzQ2LDcgJiM0MzsxMzQ2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfbGRzeF9yKGNvbnN0IHM4IGRzdFtdLCBjb25zdCBzOCBzcmMsXG4gXHRhcm1fYnBmX3B1dF9yZWc2NChkc3QsIHJkLCBjdHgpO1xuIH1cbiBcbi0vKiBBcml0aG1hdGljIE9wZXJhdGlvbiAqL1xuJiM0MzsvKiBBcml0aG1ldGljIE9wZXJhdGlvbiAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0X2FyX3IoY29uc3QgdTggcmQsIGNvbnN0IHU4IHJ0LCBjb25zdCB1OCBybSxcbiBcdFx0XHQgICAgIGNvbnN0IHU4IHJuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1OCBvcCxcbiBcdFx0XHQgICAgIGJvb2wgaXNfam1wNjQpIHtcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbmluZGV4IGJmZGM1MDc0MGRhOGUuLmNmOGMxYjQ5ZGEyNTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTIzLDcgJiM0MzsyMyw3IEBAXG4gICpcbiAgKlx0XHRbXHRwcmV2IHNwXHRcdF0gXHUwMDNjLS0tLS0tLS0tLS0tLVxuICAqXHRcdFsgICBudiBncHIgc2F2ZSBhcmVhXHRdIDE2ICogNFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuJiM0MzsgKiBmcCAocjMxKSAtLVx1MDAzZVx0WyAgIGVicGYgc3RhY2sgc3BhY2VcdF0gdXAgdG8gNTEyXHR8XG4gICpcdFx0WyAgICAgZnJhbWUgaGVhZGVyXHRdIDE2XHRcdHxcbiAgKiBzcCAocjEpIC0tLVx1MDAzZVx0WyAgICBzdGFjayBwb2ludGVyXHRdIC0tLS0tLS0tLS0tLS0tXG4gICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBmYzlkYjY5MWU4MjAzLi44YTFhMDAwMjZjNjlmIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0yMyw3ICYjNDM7MjMsNyBAQFxuICAqIFN0YWNrIGxheW91dCB3aXRoIGZyYW1lOlxuICAqIExheW91dCB3aGVuIHNldHRpbmcgdXAgb3VyIG93biBzdGFjayBmcmFtZS5cbiAgKiBOb3RlOiByMSBhdCBib3R0b20sIGNvbXBvbmVudCBvZmZzZXRzIHBvc2l0aXZlIHdydCByMS5cbi0gKiBFbnN1cmUgdGhlIHRvcCBoYWxmICh1cHRvIGxvY2FsX3RtcF92YXIpIHN0YXlzIGNvbnNpc3RlbnRcbiYjNDM7ICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXAgdG8gbG9jYWxfdG1wX3Zhcikgc3RheXMgY29uc2lzdGVudFxuICAqIHdpdGggb3VyIHJlZHpvbmUgdXNhZ2UuXG4gICpcbiAgKiB0YWlsX2NhbGxfaW5mbyAtIHN0b3JlcyB0YWlsY2FsbCBjb3VudCB2YWx1ZSBpbiBtYWluIHByb2dyYW0mIzM5O3NcbkBAIC0zNSw3ICYjNDM7MzUsNyBAQFxuICAqXHRcdFsgICBudiBncHIgc2F2ZSBhcmVhXHRdICg2ICogOClcdHxcbiAgKlx0XHRbIGFkZGwuIG52IGdwciBzYXZlIGFyZWFdICgxMiAqIDgpXHR8IFx1MDAzYy0tLSBleGNlcHRpb24gYm91bmRhcnkvY2FsbGJhY2sgcHJvZ3JhbVxuICAqXHRcdFsgICAgbG9jYWxfdG1wX3Zhclx0XSAyNFx0XHR8XG4tICogZnAgKHIzMSkgLS1cdTAwM2VcdFsgICBlYnBmIHN0YWNrIHNwYWNlXHRdIHVwdG8gNTEyXHR8XG4mIzQzOyAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cCB0byA1MTJcdHxcbiAgKlx0XHRbICAgICBmcmFtZSBoZWFkZXJcdF0gMzIvMTEyXHR8XG4gICogc3AgKHIxKSAtLS1cdTAwM2VcdFsgICAgc3RhY2sgcG9pbnRlclx0XSAtLS0tLS0tLS0tLS0tLVxuICAqXG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcbmluZGV4IGEyZTI4ZTA0NjRhMzMuLjgxNDMwZjA2NWFjOTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG5AQCAtMTk1LDcgJiM0MzsxOTUsNyBAQCBicGZfZXJyb3I6XG4gXHQvKiBNYWtlIHRoZSBKSVQgcHJvZ3JhbSByZXR1cm4gemVyby4gIFRoZSBKSVQgZXBpbG9ndWVcbiBcdCAqIHN0b3JlcyBhd2F5IHRoZSBvcmlnaW5hbCAlbzcgaW50byByX3NhdmVkX083LiAgVGhlXG4gXHQgKiBub3JtYWwgbGVhZiBmdW5jdGlvbiByZXR1cm4gaXMgdG8gdXNlIFwmIzM0O3JldGxcJiMzNDsgd2hpY2hcbi1cdCAqIHdvdWxkIGV2YWx1dGUgdG8gXCYjMzQ7am1wbCAlbzcgJiM0MzsgOCwgJWcwXCYjMzQ7IGJ1dCB3ZSB3YW50IHRvXG4mIzQzO1x0ICogd291bGQgZXZhbHVhdGUgdG8gXCYjMzQ7am1wbCAlbzcgJiM0MzsgOCwgJWcwXCYjMzQ7IGJ1dCB3ZSB3YW50IHRvXG4gXHQgKiB1c2UgdGhlIHNhdmVkIHZhbHVlIHRodXMgdGhlIHNlcXVlbmNlIHlvdSBzZWUgaGVyZS5cbiBcdCAqL1xuIFx0am1wbFx0cl9zYXZlZF9PNyAmIzQzOyA4LCAlZzBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuaW5kZXggMDBhZDhiNjNhYTQ3Ny4uNGVmZjZlNjAxYjA1MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbkBAIC0xNDcsNyAmIzQzOzE0Nyw3IEBAIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyO1xuICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pXHRcdFx0XHRcXFxuIFx0QlBGX0FMVTMyX0lNTV9PRkYoT1AsIERTVCwgSU1NLCAwKVxuIFxuLS8qIEVuZGlhbmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xuJiM0MzsvKiBFbmRpYW5uZXNzIGNvbnZlcnNpb24sIGNwdV90b197bCxifWUoKSwge2wsYn1lX3RvX2NwdSgpICovXG4gXG4gI2RlZmluZSBCUEZfRU5ESUFOKFRZUEUsIERTVCwgTEVOKVx0XHRcdFx0XFxcbiBcdCgoc3RydWN0IGJwZl9pbnNuKSB7XHRcdFx0XHRcdFxcXG5AQCAtMTAyOSw3ICYjNDM7MTAyOSw3IEBAIHN0YXRpYyBpbmxpbmUgdTggKmJwZl9za2JfY2IoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqXG4gXHQgKiBJbiBzb21lIHNvY2tldCBmaWx0ZXIgY2FzZXMsIHRoZSBjYiB1bmZvcnR1bmF0ZWx5IG5lZWRzIHRvIGJlXG4gXHQgKiBzYXZlZC9yZXN0b3JlZCBzbyB0aGF0IHByb3RvY29sIHNwZWNpZmljIHNrYi1cdTAwM2VjYltdIGRhdGEgd29uJiMzOTt0XG4tXHQgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWRnZWQgZUJQRiBwcm9ncmFtc1xuJiM0MztcdCAqIGJlIGxvc3QuIEluIGFueSBjYXNlLCBkdWUgdG8gdW5wcml2aWxlZ2VkIGVCUEYgcHJvZ3JhbXNcbiBcdCAqIGF0dGFjaGVkIHRvIHNvY2tldHMsIHdlIG5lZWQgdG8gY2xlYXIgdGhlIGJwZl9za2JfY2IoKSBhcmVhXG4gXHQgKiB0byBub3QgbGVhayBwcmV2aW91cyBjb250ZW50cyB0byB1c2VyIHNwYWNlLlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuYyBiL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmNcbmluZGV4IDQ5YjhlNWEwYzZiNGYuLjRkZTA4YWJmZDk0ZWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXG5AQCAtMjA3LDcgJiM0MzsyMDcsNyBAQCByZXVzZXBvcnRfYXJyYXlfdXBkYXRlX2NoZWNrKGNvbnN0IHN0cnVjdCByZXVzZXBvcnRfYXJyYXkgKmFycmF5LFxuIFx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuIFxuIFx0Lypcbi1cdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYmluZGVkXG4mIzQzO1x0ICogc2sgbXVzdCBiZSBoYXNoZWQgKGkuZS4gbGlzdGVuaW5nIGluIHRoZSBUQ1AgY2FzZSBvciBib3VuZFxuIFx0ICogaW4gdGhlIFVEUCBjYXNlKSBhbmRcbiBcdCAqIGl0IG11c3QgYWxzbyBiZSBhIFNPX1JFVVNFUE9SVCBzayAoaS5lLiByZXVzZSBjYW5ub3QgYmUgTlVMTCkuXG4gXHQgKlxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jXG5pbmRleCBjNzgzMzU5OTc3YjQ2Li5kMWM3MzExM2U1OGZiIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9idGYuY1xuQEAgLTM4NDcsNyAmIzQzOzM4NDcsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kZWR1cF9yZW1hcF90eXBlcyhzdHJ1Y3QgYnRmX2RlZHVwICpkKTtcbiAgKiB0eXBlcywgaW4gZ2VuZXJhbCwgY2FuIGZvcm0gZ3JhcGhzIGNvbnRhaW5pbmcgY3ljbGVzLCBub3QganVzdCBEQUdzLlxuICAqXG4gICogV2hpbGUgYWxnb3JpdGhtIGRvZXMgZGVkdXBsaWNhdGlvbiwgaXQgYWxzbyBtZXJnZXMgYW5kIHJlc29sdmVzIHR5cGVcbi0gKiBpbmZvcm1hdGlvbiAodW5sZXNzIGRpc2FibGVkIHRocm91Z2h0IGBzdHJ1Y3QgYnRmX29wdHNgKSwgd2hlbmV2ZXIgcG9zc2libGUuXG4mIzQzOyAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaCBgc3RydWN0IGJ0Zl9vcHRzYCksIHdoZW5ldmVyIHBvc3NpYmxlLlxuICAqIEUuZy4sIGluIHRoZSBleGFtcGxlIGFib3ZlIHdpdGggdHdvIGNvbXBpbGF0aW9uIHVuaXRzIGhhdmluZyBwYXJ0aWFsIHR5cGVcbiAgKiBpbmZvcm1hdGlvbiBmb3Igc3RydWN0cyBgQWAgYW5kIGBCYCwgdGhlIG91dHB1dCBvZiBhbGdvcml0aG0gd2lsbCBlbWl0XG4gICogYSBzaW5nbGUgY29weSBvZiBlYWNoIEJURiB0eXBlIHRoYXQgZGVzY3JpYmVzIHN0cnVjdHMgYEFgLCBgQmAsIGFuZCBgU2BcbkBAIC01NjQ4LDcgJiM0Mzs1NjQ4LDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVzb2x2ZV9md2RzKHN0cnVjdCBidGZfZGVkdXAgKmQpXG4gICpcbiAgKiBBZnRlciB3ZSBlc3RhYmxpc2hlZCBmb3IgZWFjaCB0eXBlIGl0cyBjb3JyZXNwb25kaW5nIGNhbm9uaWNhbCByZXByZXNlbnRhdGl2ZVxuICAqIHR5cGUsIHdlIG5vdyBjYW4gZWxpbWluYXRlIHR5cGVzIHRoYXQgYXJlIG5vdCBjYW5vbmljYWwgYW5kIGxlYXZlIG9ubHlcbi0gKiBjYW5vbmljYWwgb25lcyBsYXllZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlclxuJiM0MzsgKiBjYW5vbmljYWwgb25lcyBsYWlkIG91dCBzZXF1ZW50aWFsbHkgaW4gbWVtb3J5IGJ5IGNvcHlpbmcgdGhlbSBvdmVyXG4gICogZHVwbGljYXRlcy4gRHVyaW5nIGNvbXBhY3Rpb24gYnRmX2RlZHVwLVx1MDAzZWh5cG90X21hcCBhcnJheSBpcyByZXVzZWQgdG8gc3RvcmVcbiAgKiBhIG1hcCBmcm9tIG9yaWdpbmFsIHR5cGUgSUQgdG8gYSBuZXcgY29tcGFjdGVkIHR5cGUgSUQsIHdoaWNoIHdpbGwgYmUgdXNlZFxuICAqIGR1cmluZyBuZXh0IHBoYXNlIHRvIFwmIzM0O2ZpeCB1cFwmIzM0OyB0eXBlIElEcywgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdC91bmlvbiBhbmRcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL3VzZHQuYyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5pbmRleCBlZTlkMWI2MTQ4ODNjLi42N2M2MGY3MTZjMWE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi91c2R0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5AQCAtMTQ0LDcgJiM0MzsxNDQsNyBAQFxuICAqIGFib3V0LiBUaGlzIHN0YXRlIGhhcyB0byBiZSBtYWludGFpbmVkIHBlci1CUEYgb2JqZWN0IGFuZCBjb29yZGluYXRlXG4gICogYmV0d2VlbiBkaWZmZXJlbnQgVVNEVCBhdHRhY2htZW50cyB3aXRoaW4gdGhlIHNhbWUgQlBGIG9iamVjdC5cbiAgKlxuLSAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxheWVkIG91dFxuJiM0MzsgKiBTcGVjIElEIGlzIHRoZSBrZXkgaW4gc3BlYyBCUEYgbWFwLCB2YWx1ZSBpcyB0aGUgYWN0dWFsIFVTRFQgc3BlYyBsYWlkIG91dFxuICAqIGFzIHN0cnVjdCB1c2R0X3NwZWMuIEVhY2ggaW52b2NhdGlvbiBvZiBCUEYgcHJvZ3JhbSBhdCBydW50aW1lIG5lZWRzIHRvXG4gICoga25vdyBpdHMgYXNzb2NpYXRlZCBzcGVjIElELiBJdCBnZXRzIGl0IGVpdGhlciB0aHJvdWdoIEJQRiBjb29raWUsIHdoaWNoXG4gICogbGliYnBmIHNldHMgdG8gc3BlYyBJRCBkdXJpbmcgYXR0YWNoIHRpbWUsIG9yLCBpZiBrZXJuZWwgaXMgdG9vIG9sZCB0b1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xuaW5kZXggZGU2NTZiNjlkMTNhZi4uZmI1MGVlNGFkMDk3MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jXG5AQCAtMjA0LDcgJiM0MzsyMDQsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2hlY2tfYXNhbl9hcmdzKHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzaXplLFxuIFx0XHRnb3RvIGNvbmZpcm1lZF92YWxpZDtcbiBcbiBcdC8qXG4tXHQgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIHRoZSBlZGdlIG9mIHRoZVxuJiM0MztcdCAqIFdyYXBhcm91bmQgaXMgcG9zc2libGUgZm9yIHZhbHVlcyBjbG9zZSB0byB0aGUgZWRnZSBvZiB0aGVcbiBcdCAqIDRHaUIgYm91bmRhcnkgb2YgdGhlIGFyZW5hIChsYXN0IHZhbGlkIGFkZHJlc3MgaXMgMVVMIFx1MDAzY1x1MDAzYyAzMiAtIDEpLlxuIFx0ICpcbiBcdCAqXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jXG5pbmRleCAxYjI1ZDVjNWY4ZmI4Li44Yjk2ZmI4NjEzNjg4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbkBAIC0xMyw3ICYjNDM7MTMsNyBAQFxuICAqIElQdjYgaGVhZGVyIHdpdGggYSBTZWdtZW50IFJvdXRpbmcgSGVhZGVyLCB3aXRoIHNlZ21lbnRzIDpcbiAgKlx0ZmQwMDo6MSAtXHUwMDNlIGZkMDA6OjIgLVx1MDAzZSBmZDAwOjozIC1cdTAwM2UgZmQwMDo6NFxuICAqXG4tICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJpbmRlZCB0byBzZWc2bG9jYWwgRW5kLkJQRiBhY3Rpb25zIDpcbiYjNDM7ICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJvdW5kIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxuICAqIC0gZmQwMDo6MSA6IGFkZCBhIFRMViwgY2hhbmdlIHRoZSBmbGFncyBhbmQgYXBwbHkgYSBFbmQuWCBhY3Rpb24gdG8gZmM0Mjo6MVxuICAqIC0gZmQwMDo6MiA6IHJlbW92ZSB0aGUgVExWLCBjaGFuZ2UgdGhlIGZsYWdzLCBhZGQgYSB0YWdcbiAgKiAtIGZkMDA6OjMgOiBhcHBseSBhbiBFbmQuVCBhY3Rpb24gdG8gZmQwMDo6NCwgdGhyb3VnaCByb3V0aW5nIHRhYmxlIDExN1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbmluZGV4IDhhZTRmYjIwMjdmNzMuLjlmMjk3MWZjN2NkNTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbkBAIC0yNDMsNyAmIzQzOzI0Myw3IEBAIHN0YXRpYyB0bGRfa2V5X3QgX190bGRfY3JlYXRlX2tleShjb25zdCBjaGFyICpuYW1lLCBzaXplX3Qgc2l6ZSwgYm9vbCBkeW5fZGF0YSlcbiBcdFx0fVxuIFxuIFx0XHQvKlxuLVx0XHQgKiBUTERfREVGSU5FX0tFWSgpIGlzIGdpdmVuIG1lbW9yeSB1cHRvIGEgcGFnZSB3aGlsZSBhdCBtb3N0XG4mIzQzO1x0XHQgKiBUTERfREVGSU5FX0tFWSgpIGlzIGdpdmVuIG1lbW9yeSB1cCB0byBhIHBhZ2Ugd2hpbGUgYXQgbW9zdFxuIFx0XHQgKiBUTERfRFlOX0RBVEFfU0laRSBpcyBhbGxvY2F0ZWQgZm9yIHRsZF9jcmVhdGVfa2V5KClcbiBcdFx0ICovXG4gXHRcdGlmIChkeW5fZGF0YSkge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xuaW5kZXggNjI0MDc4YWJmM2RlYS4uZDdlMzBlZTU3NmM5MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jXG5AQCAtNyw3ICYjNDM7Nyw3IEBAXG4gXG4gU0VDKFwmIzM0O2ZyZXBsYWNlL2J0Zl91bnJlbGlhYmxlX2twcm9iZVwmIzM0OylcbiAvKiBjb250ZXh0IHR5cGUgaXMgd2hhdCBCUEYgdmVyaWZpZXIgZXhwZWN0cyBmb3Iga3Byb2JlIGNvbnRleHQsIGJ1dCB0YXJnZXRcbi0gKiBwcm9ncmFtIGhhcyBgc3R1Y3Qgd2hhdGV2ZXIgKmN0eGAgYXJndW1lbnQsIHNvIGZyZXBsYWNlIG9wZXJhdGlvbiB3aWxsIGJlXG4mIzQzOyAqIHByb2dyYW0gaGFzIGBzdHJ1Y3Qgd2hhdGV2ZXIgKmN0eGAgYXJndW1lbnQsIHNvIGZyZXBsYWNlIG9wZXJhdGlvbiB3aWxsIGJlXG4gICogcmVqZWN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6XG4gICpcbiAgKiBhcmcwIHJlcGxhY2VfYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCBwdF9yZWdzICopIGRvZXNuJiMzOTt0IG1hdGNoIGJ0Zl91bnJlbGlhYmxlX2twcm9iZShzdHJ1Y3Qgd2hhdGV2ZXIgKilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jXG5pbmRleCBjNjY5OTE1OWRhY2RkLi5lNDRhOTc5MjcwZWEwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jXG5AQCAtMTUxMSw3ICYjNDM7MTUxMSw3IEBAIF9fbmFrZWQgaW50IGNoZWNrcG9pbnRfc3RhdGVzX2RlbGV0aW9uKHZvaWQpXG4gXHQgKiB3b3VsZCBnZXQgZXF1YWwgdG8gb25lIG9mIHRoZSBleHBsb3JlZCBzdGF0ZXMgYW5kIHRodXMgbG9vcFxuIFx0ICogZXhwbG9yYXRpb24gd291bGQgYmUgZmluaXNoZWQgKGF0LWxlYXN0IGZvciBhIHNwZWNpZmljIHBhdGgpLlxuIFx0ICogVmVyaWZpZXIgZXZpY3RzIGV4cGxvcmVkIHN0YXRlcyB3aXRoIGhpZ2ggbWlzcyB0byBoaXQgcmF0aW9cbi1cdCAqIHRvIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWRcbiYjNDM7XHQgKiB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXG4gXHQgKiBzdGF0ZXMgcGVyIGluc3RydWN0aW9uLlxuIFx0ICogVGhpcyB0ZXN0IGlzIGRlc2lnbmVkIHRvIFwmIzM0O3N0cmVzcyB0ZXN0XCYjMzQ7IGV2aWN0aW9uIHBvbGljeSBkZWZpbmVkIHVzaW5nIGZvcm11bGE6XG4gXHQgKlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXG5pbmRleCBhNjNlMzM2NzUwOTE4Li4yMjdkZWEwZGEzYTA1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuQEAgLTIyNSw3ICYjNDM7MjI1LDcgQEAgX19uYWtlZCB2b2lkIHN0YWNrX3dyaXRlX3ByaXZfdnNfdW5wcml2KHZvaWQpXG4gfVxuIFxuIC8qIFNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHRlc3QsIGJ1dCB0aGlzIHRpbWUgYWxzbyBwZXJmb3JtIGEgcmVhZCBmcm9tIHRoZVxuLSAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2ZmZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcbiYjNDM7ICogYWRkcmVzcyB3cml0dGVuIHRvIHdpdGggYSB2YXJpYWJsZSBvZmZzZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcbiAgKiBhZnRlciBhIHZhcmlhYmxlLW9mZnNldCB3cml0ZSwgYSBwcml2aWxlZ2VkIHByb2dyYW0gY2FuIHJlYWQgdGhlIHNsb3RzIHRoYXRcbiAgKiB3ZXJlIGluIHRoZSByYW5nZSBvZiB0aGF0IHdyaXRlIChldmVuIGlmIHRoZSB2ZXJpZmllciBkb2VzbiYjMzk7dCBhY3R1YWxseSBrbm93IGlmXG4gICogdGhlIHNsb3QgYmVpbmcgcmVhZCB3YXMgcmVhbGx5IHdyaXR0ZW4gdG8gb3Igbm90LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA2OjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IGNvbnRhaW5zIGNvbW1lbnQgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBCUEYgSklUIGZpbGVzLCBhbmQgQlBGIHNlbGZ0ZXN0cy90b29scy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzM2NjBkZmEzZGRlYjk5ZTY0NGU3ODk4MDc3MzYwM2E3NGRkN2M5NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMDY6NDY6NTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYwppbmRleCA5ZWRlODFhZmJjNTBlLi5iMWMyMWMwMTRjOWNmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmMKQEAgLTEzNDYsNyAmIzQzOzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYywKIAlhcm1fYnBmX3B1dF9yZWc2NChkc3QsIHJkLCBjdHgpOwogfQogCi0vKiBBcml0aG1hdGljIE9wZXJhdGlvbiAqLwomIzQzOy8qIEFyaXRobWV0aWMgT3BlcmF0aW9uICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9hcl9yKGNvbnN0IHU4IHJkLCBjb25zdCB1OCBydCwgY29uc3QgdTggcm0sCiAJCQkgICAgIGNvbnN0IHU4IHJuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1OCBvcCwKIAkJCSAgICAgYm9vbCBpc19qbXA2NCkgewpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jCmluZGV4IGJmZGM1MDc0MGRhOGUuLmNmOGMxYjQ5ZGEyNTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmMKQEAgLTIzLDcgJiM0MzsyMyw3IEBACiAgKgogICoJCVsJcHJldiBzcAkJXSAmbHQ7LS0tLS0tLS0tLS0tLQogICoJCVsgICBudiBncHIgc2F2ZSBhcmVhCV0gMTYgKiA0CXwKLSAqIGZwIChyMzEpIC0tJmd0OwlbICAgZWJwZiBzdGFjayBzcGFjZQldIHVwdG8gNTEyCXwKJiM0MzsgKiBmcCAocjMxKSAtLSZndDsJWyAgIGVicGYgc3RhY2sgc3BhY2UJXSB1cCB0byA1MTIJfAogICoJCVsgICAgIGZyYW1lIGhlYWRlcgldIDE2CQl8CiAgKiBzcCAocjEpIC0tLSZndDsJWyAgICBzdGFjayBwb2ludGVyCV0gLS0tLS0tLS0tLS0tLS0KICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IGZjOWRiNjkxZTgyMDMuLjhhMWEwMDAyNmM2OWYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMKQEAgLTIzLDcgJiM0MzsyMyw3IEBACiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZToKICAqIExheW91dCB3aGVuIHNldHRpbmcgdXAgb3VyIG93biBzdGFjayBmcmFtZS4KICAqIE5vdGU6IHIxIGF0IGJvdHRvbSwgY29tcG9uZW50IG9mZnNldHMgcG9zaXRpdmUgd3J0IHIxLgotICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50CiYjNDM7ICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXAgdG8gbG9jYWxfdG1wX3Zhcikgc3RheXMgY29uc2lzdGVudAogICogd2l0aCBvdXIgcmVkem9uZSB1c2FnZS4KICAqCiAgKiB0YWlsX2NhbGxfaW5mbyAtIHN0b3JlcyB0YWlsY2FsbCBjb3VudCB2YWx1ZSBpbiBtYWluIHByb2dyYW0mIzM5O3MKQEAgLTM1LDcgJiM0MzszNSw3IEBACiAgKgkJWyAgIG52IGdwciBzYXZlIGFyZWEJXSAoNiAqIDgpCXwKICAqCQlbIGFkZGwuIG52IGdwciBzYXZlIGFyZWFdICgxMiAqIDgpCXwgJmx0Oy0tLSBleGNlcHRpb24gYm91bmRhcnkvY2FsbGJhY2sgcHJvZ3JhbQogICoJCVsgICAgbG9jYWxfdG1wX3ZhcgldIDI0CQl8Ci0gKiBmcCAocjMxKSAtLSZndDsJWyAgIGVicGYgc3RhY2sgc3BhY2UJXSB1cHRvIDUxMgl8CiYjNDM7ICogZnAgKHIzMSkgLS0mZ3Q7CVsgICBlYnBmIHN0YWNrIHNwYWNlCV0gdXAgdG8gNTEyCXwKICAqCQlbICAgICBmcmFtZSBoZWFkZXIJXSAzMi8xMTIJfAogICogc3AgKHIxKSAtLS0mZ3Q7CVsgICAgc3RhY2sgcG9pbnRlcgldIC0tLS0tLS0tLS0tLS0tCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlMKaW5kZXggYTJlMjhlMDQ2NGEzMy4uODE0MzBmMDY1YWM5NyAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TCkBAIC0xOTUsNyAmIzQzOzE5NSw3IEBAIGJwZl9lcnJvcjoKIAkvKiBNYWtlIHRoZSBKSVQgcHJvZ3JhbSByZXR1cm4gemVyby4gIFRoZSBKSVQgZXBpbG9ndWUKIAkgKiBzdG9yZXMgYXdheSB0aGUgb3JpZ2luYWwgJW83IGludG8gcl9zYXZlZF9PNy4gIFRoZQogCSAqIG5vcm1hbCBsZWFmIGZ1bmN0aW9uIHJldHVybiBpcyB0byB1c2UgJiMzNDtyZXRsJiMzNDsgd2hpY2gKLQkgKiB3b3VsZCBldmFsdXRlIHRvICYjMzQ7am1wbCAlbzcgJiM0MzsgOCwgJWcwJiMzNDsgYnV0IHdlIHdhbnQgdG8KJiM0MzsJICogd291bGQgZXZhbHVhdGUgdG8gJiMzNDtqbXBsICVvNyAmIzQzOyA4LCAlZzAmIzM0OyBidXQgd2Ugd2FudCB0bwogCSAqIHVzZSB0aGUgc2F2ZWQgdmFsdWUgdGh1cyB0aGUgc2VxdWVuY2UgeW91IHNlZSBoZXJlLgogCSAqLwogCWptcGwJcl9zYXZlZF9PNyAmIzQzOyA4LCAlZzAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmggYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oCmluZGV4IDAwYWQ4YjYzYWE0NzcuLjRlZmY2ZTYwMWIwNTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaApAQCAtMTQ3LDcgJiM0MzsxNDcsNyBAQCBzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlcjsKICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pCQkJCVwKIAlCUEZfQUxVMzJfSU1NX09GRihPUCwgRFNULCBJTU0sIDApCiAKLS8qIEVuZGlhbmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqLwomIzQzOy8qIEVuZGlhbm5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi8KIAogI2RlZmluZSBCUEZfRU5ESUFOKFRZUEUsIERTVCwgTEVOKQkJCQlcCiAJKChzdHJ1Y3QgYnBmX2luc24pIHsJCQkJCVwKQEAgLTEwMjksNyAmIzQzOzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIHU4ICpicGZfc2tiX2NiKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCiAJICoKIAkgKiBJbiBzb21lIHNvY2tldCBmaWx0ZXIgY2FzZXMsIHRoZSBjYiB1bmZvcnR1bmF0ZWx5IG5lZWRzIHRvIGJlCiAJICogc2F2ZWQvcmVzdG9yZWQgc28gdGhhdCBwcm90b2NvbCBzcGVjaWZpYyBza2ItJmd0O2NiW10gZGF0YSB3b24mIzM5O3QKLQkgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWRnZWQgZUJQRiBwcm9ncmFtcwomIzQzOwkgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWdlZCBlQlBGIHByb2dyYW1zCiAJICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWEKIAkgKiB0byBub3QgbGVhayBwcmV2aW91cyBjb250ZW50cyB0byB1c2VyIHNwYWNlLgogCSAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuYyBiL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmMKaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jCkBAIC0yMDcsNyAmIzQzOzIwNyw3IEBAIHJldXNlcG9ydF9hcnJheV91cGRhdGVfY2hlY2soY29uc3Qgc3RydWN0IHJldXNlcG9ydF9hcnJheSAqYXJyYXksCiAJCXJldHVybiAtRU5PVFNVUFA7CiAKIAkvKgotCSAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYmluZGVkCiYjNDM7CSAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYm91bmQKIAkgKiBpbiB0aGUgVURQIGNhc2UpIGFuZAogCSAqIGl0IG11c3QgYWxzbyBiZSBhIFNPX1JFVVNFUE9SVCBzayAoaS5lLiByZXVzZSBjYW5ub3QgYmUgTlVMTCkuCiAJICoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jCmluZGV4IGM3ODMzNTk5NzdiNDYuLmQxYzczMTEzZTU4ZmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYi9icGYvYnRmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9idGYuYwpAQCAtMzg0Nyw3ICYjNDM7Mzg0Nyw3IEBAIHN0YXRpYyBpbnQgYnRmX2RlZHVwX3JlbWFwX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQpOwogICogdHlwZXMsIGluIGdlbmVyYWwsIGNhbiBmb3JtIGdyYXBocyBjb250YWluaW5nIGN5Y2xlcywgbm90IGp1c3QgREFHcy4KICAqCiAgKiBXaGlsZSBhbGdvcml0aG0gZG9lcyBkZWR1cGxpY2F0aW9uLCBpdCBhbHNvIG1lcmdlcyBhbmQgcmVzb2x2ZXMgdHlwZQotICogaW5mb3JtYXRpb24gKHVubGVzcyBkaXNhYmxlZCB0aHJvdWdodCBgc3RydWN0IGJ0Zl9vcHRzYCksIHdoZW5ldmVyIHBvc3NpYmxlLgomIzQzOyAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaCBgc3RydWN0IGJ0Zl9vcHRzYCksIHdoZW5ldmVyIHBvc3NpYmxlLgogICogRS5nLiwgaW4gdGhlIGV4YW1wbGUgYWJvdmUgd2l0aCB0d28gY29tcGlsYXRpb24gdW5pdHMgaGF2aW5nIHBhcnRpYWwgdHlwZQogICogaW5mb3JtYXRpb24gZm9yIHN0cnVjdHMgYEFgIGFuZCBgQmAsIHRoZSBvdXRwdXQgb2YgYWxnb3JpdGhtIHdpbGwgZW1pdAogICogYSBzaW5nbGUgY29weSBvZiBlYWNoIEJURiB0eXBlIHRoYXQgZGVzY3JpYmVzIHN0cnVjdHMgYEFgLCBgQmAsIGFuZCBgU2AKQEAgLTU2NDgsNyAmIzQzOzU2NDgsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kZWR1cF9yZXNvbHZlX2Z3ZHMoc3RydWN0IGJ0Zl9kZWR1cCAqZCkKICAqCiAgKiBBZnRlciB3ZSBlc3RhYmxpc2hlZCBmb3IgZWFjaCB0eXBlIGl0cyBjb3JyZXNwb25kaW5nIGNhbm9uaWNhbCByZXByZXNlbnRhdGl2ZQogICogdHlwZSwgd2Ugbm93IGNhbiBlbGltaW5hdGUgdHlwZXMgdGhhdCBhcmUgbm90IGNhbm9uaWNhbCBhbmQgbGVhdmUgb25seQotICogY2Fub25pY2FsIG9uZXMgbGF5ZWQgb3V0IHNlcXVlbnRpYWxseSBpbiBtZW1vcnkgYnkgY29weWluZyB0aGVtIG92ZXIKJiM0MzsgKiBjYW5vbmljYWwgb25lcyBsYWlkIG91dCBzZXF1ZW50aWFsbHkgaW4gbWVtb3J5IGJ5IGNvcHlpbmcgdGhlbSBvdmVyCiAgKiBkdXBsaWNhdGVzLiBEdXJpbmcgY29tcGFjdGlvbiBidGZfZGVkdXAtJmd0O2h5cG90X21hcCBhcnJheSBpcyByZXVzZWQgdG8gc3RvcmUKICAqIGEgbWFwIGZyb20gb3JpZ2luYWwgdHlwZSBJRCB0byBhIG5ldyBjb21wYWN0ZWQgdHlwZSBJRCwgd2hpY2ggd2lsbCBiZSB1c2VkCiAgKiBkdXJpbmcgbmV4dCBwaGFzZSB0byAmIzM0O2ZpeCB1cCYjMzQ7IHR5cGUgSURzLCByZWZlcmVuY2VkIGZyb20gc3RydWN0L3VuaW9uIGFuZApkaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi91c2R0LmMgYi90b29scy9saWIvYnBmL3VzZHQuYwppbmRleCBlZTlkMWI2MTQ4ODNjLi42N2M2MGY3MTZjMWE5IDEwMDY0NAotLS0gYS90b29scy9saWIvYnBmL3VzZHQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9saWIvYnBmL3VzZHQuYwpAQCAtMTQ0LDcgJiM0MzsxNDQsNyBAQAogICogYWJvdXQuIFRoaXMgc3RhdGUgaGFzIHRvIGJlIG1haW50YWluZWQgcGVyLUJQRiBvYmplY3QgYW5kIGNvb3JkaW5hdGUKICAqIGJldHdlZW4gZGlmZmVyZW50IFVTRFQgYXR0YWNobWVudHMgd2l0aGluIHRoZSBzYW1lIEJQRiBvYmplY3QuCiAgKgotICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGF5ZWQgb3V0CiYjNDM7ICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGFpZCBvdXQKICAqIGFzIHN0cnVjdCB1c2R0X3NwZWMuIEVhY2ggaW52b2NhdGlvbiBvZiBCUEYgcHJvZ3JhbSBhdCBydW50aW1lIG5lZWRzIHRvCiAgKiBrbm93IGl0cyBhc3NvY2lhdGVkIHNwZWMgSUQuIEl0IGdldHMgaXQgZWl0aGVyIHRocm91Z2ggQlBGIGNvb2tpZSwgd2hpY2gKICAqIGxpYmJwZiBzZXRzIHRvIHNwZWMgSUQgZHVyaW5nIGF0dGFjaCB0aW1lLCBvciwgaWYga2VybmVsIGlzIHRvbyBvbGQgdG8KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYwppbmRleCBkZTY1NmI2OWQxM2FmLi5mYjUwZWU0YWQwOTcyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jCkBAIC0yMDQsNyAmIzQzOzIwNCw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBjaGVja19hc2FuX2FyZ3MoczggX19hcmVuYSAqYWRkciwgc2l6ZV90IHNpemUsCiAJCWdvdG8gY29uZmlybWVkX3ZhbGlkOwogCiAJLyoKLQkgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIHRoZSBlZGdlIG9mIHRoZQomIzQzOwkgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIGVkZ2Ugb2YgdGhlCiAJICogNEdpQiBib3VuZGFyeSBvZiB0aGUgYXJlbmEgKGxhc3QgdmFsaWQgYWRkcmVzcyBpcyAxVUwgJmx0OyZsdDsgMzIgLSAxKS4KIAkgKgogCSAqCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMKaW5kZXggMWIyNWQ1YzVmOGZiOC4uOGI5NmZiODYxMzY4OCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuYwpAQCAtMTMsNyAmIzQzOzEzLDcgQEAKICAqIElQdjYgaGVhZGVyIHdpdGggYSBTZWdtZW50IFJvdXRpbmcgSGVhZGVyLCB3aXRoIHNlZ21lbnRzIDoKICAqCWZkMDA6OjEgLSZndDsgZmQwMDo6MiAtJmd0OyBmZDAwOjozIC0mZ3Q7IGZkMDA6OjQKICAqCi0gKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYmluZGVkIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOgomIzQzOyAqIDMgZmQwMDo6LzE2IElQdjYgYWRkcmVzc2VzIGFyZSBib3VuZCB0byBzZWc2bG9jYWwgRW5kLkJQRiBhY3Rpb25zIDoKICAqIC0gZmQwMDo6MSA6IGFkZCBhIFRMViwgY2hhbmdlIHRoZSBmbGFncyBhbmQgYXBwbHkgYSBFbmQuWCBhY3Rpb24gdG8gZmM0Mjo6MQogICogLSBmZDAwOjoyIDogcmVtb3ZlIHRoZSBUTFYsIGNoYW5nZSB0aGUgZmxhZ3MsIGFkZCBhIHRhZwogICogLSBmZDAwOjozIDogYXBwbHkgYW4gRW5kLlQgYWN0aW9uIHRvIGZkMDA6OjQsIHRocm91Z2ggcm91dGluZyB0YWJsZSAxMTcKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmgKaW5kZXggOGFlNGZiMjAyN2Y3My4uOWYyOTcxZmM3Y2Q1NCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmgKQEAgLTI0Myw3ICYjNDM7MjQzLDcgQEAgc3RhdGljIHRsZF9rZXlfdCBfX3RsZF9jcmVhdGVfa2V5KGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLCBib29sIGR5bl9kYXRhKQogCQl9CiAKIAkJLyoKLQkJICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXB0byBhIHBhZ2Ugd2hpbGUgYXQgbW9zdAomIzQzOwkJICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXAgdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3QKIAkJICogVExEX0RZTl9EQVRBX1NJWkUgaXMgYWxsb2NhdGVkIGZvciB0bGRfY3JlYXRlX2tleSgpCiAJCSAqLwogCQlpZiAoZHluX2RhdGEpIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuYwppbmRleCA2MjQwNzhhYmYzZGVhLi5kN2UzMGVlNTc2YzkzIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jCkBAIC03LDcgJiM0Mzs3LDcgQEAKIAogU0VDKCYjMzQ7ZnJlcGxhY2UvYnRmX3VucmVsaWFibGVfa3Byb2JlJiMzNDspCiAvKiBjb250ZXh0IHR5cGUgaXMgd2hhdCBCUEYgdmVyaWZpZXIgZXhwZWN0cyBmb3Iga3Byb2JlIGNvbnRleHQsIGJ1dCB0YXJnZXQKLSAqIHByb2dyYW0gaGFzIGBzdHVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmUKJiM0MzsgKiBwcm9ncmFtIGhhcyBgc3RydWN0IHdoYXRldmVyICpjdHhgIGFyZ3VtZW50LCBzbyBmcmVwbGFjZSBvcGVyYXRpb24gd2lsbCBiZQogICogcmVqZWN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6CiAgKgogICogYXJnMCByZXBsYWNlX2J0Zl91bnJlbGlhYmxlX2twcm9iZShzdHJ1Y3QgcHRfcmVncyAqKSBkb2VzbiYjMzk7dCBtYXRjaCBidGZfdW5yZWxpYWJsZV9rcHJvYmUoc3RydWN0IHdoYXRldmVyICopCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jCmluZGV4IGM2Njk5MTU5ZGFjZGQuLmU0NGE5NzkyNzBlYTAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jCkBAIC0xNTExLDcgJiM0MzsxNTExLDcgQEAgX19uYWtlZCBpbnQgY2hlY2twb2ludF9zdGF0ZXNfZGVsZXRpb24odm9pZCkKIAkgKiB3b3VsZCBnZXQgZXF1YWwgdG8gb25lIG9mIHRoZSBleHBsb3JlZCBzdGF0ZXMgYW5kIHRodXMgbG9vcAogCSAqIGV4cGxvcmF0aW9uIHdvdWxkIGJlIGZpbmlzaGVkIChhdC1sZWFzdCBmb3IgYSBzcGVjaWZpYyBwYXRoKS4KIAkgKiBWZXJpZmllciBldmljdHMgZXhwbG9yZWQgc3RhdGVzIHdpdGggaGlnaCBtaXNzIHRvIGhpdCByYXRpbwotCSAqIHRvIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWQKJiM0MzsJICogdG8gYXZvaWQgY29tcGFyaW5nIGN1cnJlbnQgc3RhdGUgd2l0aCB0b28gbWFueSBleHBsb3JlZAogCSAqIHN0YXRlcyBwZXIgaW5zdHJ1Y3Rpb24uCiAJICogVGhpcyB0ZXN0IGlzIGRlc2lnbmVkIHRvICYjMzQ7c3RyZXNzIHRlc3QmIzM0OyBldmljdGlvbiBwb2xpY3kgZGVmaW5lZCB1c2luZyBmb3JtdWxhOgogCSAqCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYwppbmRleCBhNjNlMzM2NzUwOTE4Li4yMjdkZWEwZGEzYTA1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMKQEAgLTIyNSw3ICYjNDM7MjI1LDcgQEAgX19uYWtlZCB2b2lkIHN0YWNrX3dyaXRlX3ByaXZfdnNfdW5wcml2KHZvaWQpCiB9CiAKIC8qIFNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHRlc3QsIGJ1dCB0aGlzIHRpbWUgYWxzbyBwZXJmb3JtIGEgcmVhZCBmcm9tIHRoZQotICogYWRkcmVzcyB3cml0dGVuIHRvIHdpdGggYSB2YXJpYWJsZSBvZmZldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LAomIzQzOyAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2Zmc2V0LiBUaGUgcmVhZCBpcyBhbGxvd2VkLCBzaG93aW5nIHRoYXQsCiAgKiBhZnRlciBhIHZhcmlhYmxlLW9mZnNldCB3cml0ZSwgYSBwcml2aWxlZ2VkIHByb2dyYW0gY2FuIHJlYWQgdGhlIHNsb3RzIHRoYXQKICAqIHdlcmUgaW4gdGhlIHJhbmdlIG9mIHRoYXQgd3JpdGUgKGV2ZW4gaWYgdGhlIHZlcmlmaWVyIGRvZXNuJiMzOTt0IGFjdHVhbGx5IGtub3cgaWYKICAqIHRoZSBzbG90IGJlaW5nIHJlYWQgd2FzIHJlYWxseSB3cml0dGVuIHRvIG9yIG5vdC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDY6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgyNAoJCQkJCQkJb3V0cHV0OiA3NQoJCQkJCQkJdGhvdWdodHM6IDkyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogQSBEZWVwIERpdmUgaW50byBUeXBvcyBhbmQgVGVzdCBTdWl0ZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBzY2FuIG9mIHRoZSBkaWZmIHJldmVhbHMgYSBjb2xsZWN0aW9uIG9mIGNoYW5nZXMsIGFuZCBpdCYjMzk7cyBsb29raW5nIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGNvbW1lbnQgdHlwbyBmaXhlcyDigJMgYWxsIG9mIHRoZW0hIEkgbWVhbiwgaXQmIzM5O3MgY292ZXJpbmcgYSBicm9hZCByYW5nZSBvZiBmaWxlczogYGFyY2gvYXJtL25ldC9icGZfaml0XzMyLmNgLCBgYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jYCwgYGFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuY2AsIGBhcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TYCwgYGluY2x1ZGUvbGludXgvZmlsdGVyLmhgLCBga2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY2AsIGB0b29scy9saWIvYnBmL2J0Zi5jYCwgYHRvb2xzL2xpYi9icGYvdXNkdC5jYCwgYW5kIGEgc2xldyBvZiBzZWxmdGVzdCBmaWxlcyB1bmRlciBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gZG8gbXkgZHVlIGRpbGlnZW5jZSBhbmQgY29uZmlybSB0aGF0IHRoZSBjaGFuZ2UgaXMgbGltaXRlZCB0byBjb21tZW50cy4gSSYjMzk7bGwgbWV0aWN1bG91c2x5IGdvIHRocm91Z2ggZWFjaCBmaWxlLCBzcGVjaWZpY2FsbHkgZXhhbWluaW5nIHRoZSBsaW5lcyB3aGVyZSB0aGUgZml4ZXMgYXJlIG1hZGUuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBgaW5jbHVkZS9saW51eC9maWx0ZXIuaGAsIGBrZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jYCwgYW5kIGFsbCB0aGUgYGFyY2gvLi4uYCBhbmQgYHRvb2xzLy4uLmAgZGlyZWN0b3JpZXMsIGFuZCBjb25maXJtIHRoYXQgdGhlcmUmIzM5O3Mgbm8gYWx0ZXJhdGlvbiB0byBhbnkgY3JpdGljYWwgY29kZS4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIG5vIHN0cmluZyBsaXRlcmFscywgbWFjcm9zLCBvciBhbnl0aGluZyBvZiB0aGF0IHNvcnQgYXJlIGltcGFjdGVkLgoKQWxyaWdodCwgSSYjMzk7dmUgY29uZmlybWVkIGl0LiBBcyBwZXIgU2VjdGlvbiAyLCB0aGlzIHBhdGNoIGlzIHN0cmljdGx5IGluIHRoZSByZWFsbSBvZiAmIzM0O05vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMmIzM0Ozogc3BlY2lmaWNhbGx5IGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBhbmQgc3BlbGxpbmcgZml4ZXMuIFBsdXMsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb25maW5lZCB0byB1c2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmdGVzdHMsIGFuZCBzY3JpcHRzLCB3aGljaCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcy4gVGhpcyBtZWFucyBpdCYjMzk7cyBhIGNsZWFyIGNhc2UuCgpUaGVyZWZvcmUsIGZvciB0aGlzIHBhdGNoLCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBUaGVyZSBhcmUgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uLCBhbmQgY2VydGFpbmx5IG5vIHNwZWNpZmljIHN5bWJvbHMgdGhhdCBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGguIFRoZSByZWFzb25pbmcgaXMgc2ltcGxlOiB0aGUgcGF0Y2gmIzM5O3Mgc2NvcGUgaXMgbGltaXRlZCB0byBjb21tZW50IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIGFjcm9zcyBrZXJuZWwgc291cmNlcywgYXJjaGl0ZWN0dXJlIEpJVHMsIGFuZCBzZWxmdGVzdCBmaWxlcy4gTm8gZXhlY3V0YWJsZSBjb2RlIG9yIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgYXJlIG1vZGlmaWVkLgoKVGltZSB0byBpbnZva2UgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IGNvbnRhaW5zIGNvbW1lbnQgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBCUEYgSklUIGZpbGVzLCBhbmQgQlBGIHNlbGZ0ZXN0cy90b29scy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBleGNsdXNpdmVseSBjb250YWlucyBjb21tZW50IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIGFjcm9zcyBrZXJuZWwgc291cmNlIGZpbGVzLCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgQlBGIEpJVCBmaWxlcywgYW5kIEJQRiBzZWxmdGVzdHMvdG9vbHMuIE5vIGV4ZWN1dGFibGUgY29kZSwgbWFjcm9zLCBvciBkYXRhIHN0cnVjdHVyZXMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwNjo0NzwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDhUMDY6NDY6NTguOTA1MzI3OTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTk3NDU3OTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgY29udGFpbnMgY29tbWVudCBzcGVsbGluZyBhbmQgdHlwbyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEJQRiBKSVQgZmlsZXMsIGFuZCBCUEYgc2VsZnRlc3RzL3Rvb2xzLiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA2OjQ2OjU4LjkwNTMzMjY3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ1NTcxMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzM2NjBkZmEzZGRlYjk5ZTY0NGU3ODk4MDc3MzYwM2E3NGRkN2M5NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCA4IDA2OjQ2OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmMgYi9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXFxuaW5kZXggOWVkZTgxYWZiYzUwZS4uYjFjMjFjMDE0YzljZiAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXFxuKysrIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY1xcbkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYyxcXG4gXFx0YXJtX2JwZl9wdXRfcmVnNjQoZHN0LCByZCwgY3R4KTtcXG4gfVxcbiBcXG4tLyogQXJpdGhtYXRpYyBPcGVyYXRpb24gKi9cXG4rLyogQXJpdGhtZXRpYyBPcGVyYXRpb24gKi9cXG4gc3RhdGljIGlubGluZSB2b2lkIGVtaXRfYXJfcihjb25zdCB1OCByZCwgY29uc3QgdTggcnQsIGNvbnN0IHU4IHJtLFxcbiBcXHRcXHRcXHQgICAgIGNvbnN0IHU4IHJuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1OCBvcCxcXG4gXFx0XFx0XFx0ICAgICBib29sIGlzX2ptcDY0KSB7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbmluZGV4IGJmZGM1MDc0MGRhOGUuLmNmOGMxYjQ5ZGEyNTcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXFxuKysrIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTIzLDcgKzIzLDcgQEBcXG4gICpcXG4gICpcXHRcXHRbXFx0cHJldiBzcFxcdFxcdF0gXFx1MDAzYy0tLS0tLS0tLS0tLS1cXG4gICpcXHRcXHRbICAgbnYgZ3ByIHNhdmUgYXJlYVxcdF0gMTYgKiA0XFx0fFxcbi0gKiBmcCAocjMxKSAtLVxcdTAwM2VcXHRbICAgZWJwZiBzdGFjayBzcGFjZVxcdF0gdXB0byA1MTJcXHR8XFxuKyAqIGZwIChyMzEpIC0tXFx1MDAzZVxcdFsgICBlYnBmIHN0YWNrIHNwYWNlXFx0XSB1cCB0byA1MTJcXHR8XFxuICAqXFx0XFx0WyAgICAgZnJhbWUgaGVhZGVyXFx0XSAxNlxcdFxcdHxcXG4gICogc3AgKHIxKSAtLS1cXHUwMDNlXFx0WyAgICBzdGFjayBwb2ludGVyXFx0XSAtLS0tLS0tLS0tLS0tLVxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggZmM5ZGI2OTFlODIwMy4uOGExYTAwMDI2YzY5ZiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5AQCAtMjMsNyArMjMsNyBAQFxcbiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZTpcXG4gICogTGF5b3V0IHdoZW4gc2V0dGluZyB1cCBvdXIgb3duIHN0YWNrIGZyYW1lLlxcbiAgKiBOb3RlOiByMSBhdCBib3R0b20sIGNvbXBvbmVudCBvZmZzZXRzIHBvc2l0aXZlIHdydCByMS5cXG4tICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50XFxuKyAqIEVuc3VyZSB0aGUgdG9wIGhhbGYgKHVwIHRvIGxvY2FsX3RtcF92YXIpIHN0YXlzIGNvbnNpc3RlbnRcXG4gICogd2l0aCBvdXIgcmVkem9uZSB1c2FnZS5cXG4gICpcXG4gICogdGFpbF9jYWxsX2luZm8gLSBzdG9yZXMgdGFpbGNhbGwgY291bnQgdmFsdWUgaW4gbWFpbiBwcm9ncmFtJ3NcXG5AQCAtMzUsNyArMzUsNyBAQFxcbiAgKlxcdFxcdFsgICBudiBncHIgc2F2ZSBhcmVhXFx0XSAoNiAqIDgpXFx0fFxcbiAgKlxcdFxcdFsgYWRkbC4gbnYgZ3ByIHNhdmUgYXJlYV0gKDEyICogOClcXHR8IFxcdTAwM2MtLS0gZXhjZXB0aW9uIGJvdW5kYXJ5L2NhbGxiYWNrIHByb2dyYW1cXG4gICpcXHRcXHRbICAgIGxvY2FsX3RtcF92YXJcXHRdIDI0XFx0XFx0fFxcbi0gKiBmcCAocjMxKSAtLVxcdTAwM2VcXHRbICAgZWJwZiBzdGFjayBzcGFjZVxcdF0gdXB0byA1MTJcXHR8XFxuKyAqIGZwIChyMzEpIC0tXFx1MDAzZVxcdFsgICBlYnBmIHN0YWNrIHNwYWNlXFx0XSB1cCB0byA1MTJcXHR8XFxuICAqXFx0XFx0WyAgICAgZnJhbWUgaGVhZGVyXFx0XSAzMi8xMTJcXHR8XFxuICAqIHNwIChyMSkgLS0tXFx1MDAzZVxcdFsgICAgc3RhY2sgcG9pbnRlclxcdF0gLS0tLS0tLS0tLS0tLS1cXG4gICpcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcXG5pbmRleCBhMmUyOGUwNDY0YTMzLi44MTQzMGYwNjVhYzk3IDEwMDY0NFxcbi0tLSBhL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcXG4rKysgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXFxuQEAgLTE5NSw3ICsxOTUsNyBAQCBicGZfZXJyb3I6XFxuIFxcdC8qIE1ha2UgdGhlIEpJVCBwcm9ncmFtIHJldHVybiB6ZXJvLiAgVGhlIEpJVCBlcGlsb2d1ZVxcbiBcXHQgKiBzdG9yZXMgYXdheSB0aGUgb3JpZ2luYWwgJW83IGludG8gcl9zYXZlZF9PNy4gIFRoZVxcbiBcXHQgKiBub3JtYWwgbGVhZiBmdW5jdGlvbiByZXR1cm4gaXMgdG8gdXNlIFxcXCJyZXRsXFxcIiB3aGljaFxcbi1cXHQgKiB3b3VsZCBldmFsdXRlIHRvIFxcXCJqbXBsICVvNyArIDgsICVnMFxcXCIgYnV0IHdlIHdhbnQgdG9cXG4rXFx0ICogd291bGQgZXZhbHVhdGUgdG8gXFxcImptcGwgJW83ICsgOCwgJWcwXFxcIiBidXQgd2Ugd2FudCB0b1xcbiBcXHQgKiB1c2UgdGhlIHNhdmVkIHZhbHVlIHRodXMgdGhlIHNlcXVlbmNlIHlvdSBzZWUgaGVyZS5cXG4gXFx0ICovXFxuIFxcdGptcGxcXHRyX3NhdmVkX083ICsgOCwgJWcwXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmggYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuaW5kZXggMDBhZDhiNjNhYTQ3Ny4uNGVmZjZlNjAxYjA1MyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IGN0bF90YWJsZV9oZWFkZXI7XFxuICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRCUEZfQUxVMzJfSU1NX09GRihPUCwgRFNULCBJTU0sIDApXFxuIFxcbi0vKiBFbmRpYW5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi9cXG4rLyogRW5kaWFubmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xcbiBcXG4gI2RlZmluZSBCUEZfRU5ESUFOKFRZUEUsIERTVCwgTEVOKVxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0KChzdHJ1Y3QgYnBmX2luc24pIHtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTEwMjksNyArMTAyOSw3IEBAIHN0YXRpYyBpbmxpbmUgdTggKmJwZl9za2JfY2IoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0ICpcXG4gXFx0ICogSW4gc29tZSBzb2NrZXQgZmlsdGVyIGNhc2VzLCB0aGUgY2IgdW5mb3J0dW5hdGVseSBuZWVkcyB0byBiZVxcbiBcXHQgKiBzYXZlZC9yZXN0b3JlZCBzbyB0aGF0IHByb3RvY29sIHNwZWNpZmljIHNrYi1cXHUwMDNlY2JbXSBkYXRhIHdvbid0XFxuLVxcdCAqIGJlIGxvc3QuIEluIGFueSBjYXNlLCBkdWUgdG8gdW5wcml2aWxlZGdlZCBlQlBGIHByb2dyYW1zXFxuK1xcdCAqIGJlIGxvc3QuIEluIGFueSBjYXNlLCBkdWUgdG8gdW5wcml2aWxlZ2VkIGVCUEYgcHJvZ3JhbXNcXG4gXFx0ICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWFcXG4gXFx0ICogdG8gbm90IGxlYWsgcHJldmlvdXMgY29udGVudHMgdG8gdXNlciBzcGFjZS5cXG4gXFx0ICovXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmMgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXFxuaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXFxuKysrIGIva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xcbkBAIC0yMDcsNyArMjA3LDcgQEAgcmV1c2Vwb3J0X2FycmF5X3VwZGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgcmV1c2Vwb3J0X2FycmF5ICphcnJheSxcXG4gXFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYmluZGVkXFxuK1xcdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYm91bmRcXG4gXFx0ICogaW4gdGhlIFVEUCBjYXNlKSBhbmRcXG4gXFx0ICogaXQgbXVzdCBhbHNvIGJlIGEgU09fUkVVU0VQT1JUIHNrIChpLmUuIHJldXNlIGNhbm5vdCBiZSBOVUxMKS5cXG4gXFx0ICpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9idGYuYyBiL3Rvb2xzL2xpYi9icGYvYnRmLmNcXG5pbmRleCBjNzgzMzU5OTc3YjQ2Li5kMWM3MzExM2U1OGZiIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2xpYi9icGYvYnRmLmNcXG4rKysgYi90b29scy9saWIvYnBmL2J0Zi5jXFxuQEAgLTM4NDcsNyArMzg0Nyw3IEBAIHN0YXRpYyBpbnQgYnRmX2RlZHVwX3JlbWFwX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQpO1xcbiAgKiB0eXBlcywgaW4gZ2VuZXJhbCwgY2FuIGZvcm0gZ3JhcGhzIGNvbnRhaW5pbmcgY3ljbGVzLCBub3QganVzdCBEQUdzLlxcbiAgKlxcbiAgKiBXaGlsZSBhbGdvcml0aG0gZG9lcyBkZWR1cGxpY2F0aW9uLCBpdCBhbHNvIG1lcmdlcyBhbmQgcmVzb2x2ZXMgdHlwZVxcbi0gKiBpbmZvcm1hdGlvbiAodW5sZXNzIGRpc2FibGVkIHRocm91Z2h0IGBzdHJ1Y3QgYnRmX29wdHNgKSwgd2hlbmV2ZXIgcG9zc2libGUuXFxuKyAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaCBgc3RydWN0IGJ0Zl9vcHRzYCksIHdoZW5ldmVyIHBvc3NpYmxlLlxcbiAgKiBFLmcuLCBpbiB0aGUgZXhhbXBsZSBhYm92ZSB3aXRoIHR3byBjb21waWxhdGlvbiB1bml0cyBoYXZpbmcgcGFydGlhbCB0eXBlXFxuICAqIGluZm9ybWF0aW9uIGZvciBzdHJ1Y3RzIGBBYCBhbmQgYEJgLCB0aGUgb3V0cHV0IG9mIGFsZ29yaXRobSB3aWxsIGVtaXRcXG4gICogYSBzaW5nbGUgY29weSBvZiBlYWNoIEJURiB0eXBlIHRoYXQgZGVzY3JpYmVzIHN0cnVjdHMgYEFgLCBgQmAsIGFuZCBgU2BcXG5AQCAtNTY0OCw3ICs1NjQ4LDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVzb2x2ZV9md2RzKHN0cnVjdCBidGZfZGVkdXAgKmQpXFxuICAqXFxuICAqIEFmdGVyIHdlIGVzdGFibGlzaGVkIGZvciBlYWNoIHR5cGUgaXRzIGNvcnJlc3BvbmRpbmcgY2Fub25pY2FsIHJlcHJlc2VudGF0aXZlXFxuICAqIHR5cGUsIHdlIG5vdyBjYW4gZWxpbWluYXRlIHR5cGVzIHRoYXQgYXJlIG5vdCBjYW5vbmljYWwgYW5kIGxlYXZlIG9ubHlcXG4tICogY2Fub25pY2FsIG9uZXMgbGF5ZWQgb3V0IHNlcXVlbnRpYWxseSBpbiBtZW1vcnkgYnkgY29weWluZyB0aGVtIG92ZXJcXG4rICogY2Fub25pY2FsIG9uZXMgbGFpZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlclxcbiAgKiBkdXBsaWNhdGVzLiBEdXJpbmcgY29tcGFjdGlvbiBidGZfZGVkdXAtXFx1MDAzZWh5cG90X21hcCBhcnJheSBpcyByZXVzZWQgdG8gc3RvcmVcXG4gICogYSBtYXAgZnJvbSBvcmlnaW5hbCB0eXBlIElEIHRvIGEgbmV3IGNvbXBhY3RlZCB0eXBlIElELCB3aGljaCB3aWxsIGJlIHVzZWRcXG4gICogZHVyaW5nIG5leHQgcGhhc2UgdG8gXFxcImZpeCB1cFxcXCIgdHlwZSBJRHMsIHJlZmVyZW5jZWQgZnJvbSBzdHJ1Y3QvdW5pb24gYW5kXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvdXNkdC5jIGIvdG9vbHMvbGliL2JwZi91c2R0LmNcXG5pbmRleCBlZTlkMWI2MTQ4ODNjLi42N2M2MGY3MTZjMWE5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2xpYi9icGYvdXNkdC5jXFxuKysrIGIvdG9vbHMvbGliL2JwZi91c2R0LmNcXG5AQCAtMTQ0LDcgKzE0NCw3IEBAXFxuICAqIGFib3V0LiBUaGlzIHN0YXRlIGhhcyB0byBiZSBtYWludGFpbmVkIHBlci1CUEYgb2JqZWN0IGFuZCBjb29yZGluYXRlXFxuICAqIGJldHdlZW4gZGlmZmVyZW50IFVTRFQgYXR0YWNobWVudHMgd2l0aGluIHRoZSBzYW1lIEJQRiBvYmplY3QuXFxuICAqXFxuLSAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxheWVkIG91dFxcbisgKiBTcGVjIElEIGlzIHRoZSBrZXkgaW4gc3BlYyBCUEYgbWFwLCB2YWx1ZSBpcyB0aGUgYWN0dWFsIFVTRFQgc3BlYyBsYWlkIG91dFxcbiAgKiBhcyBzdHJ1Y3QgdXNkdF9zcGVjLiBFYWNoIGludm9jYXRpb24gb2YgQlBGIHByb2dyYW0gYXQgcnVudGltZSBuZWVkcyB0b1xcbiAgKiBrbm93IGl0cyBhc3NvY2lhdGVkIHNwZWMgSUQuIEl0IGdldHMgaXQgZWl0aGVyIHRocm91Z2ggQlBGIGNvb2tpZSwgd2hpY2hcXG4gICogbGliYnBmIHNldHMgdG8gc3BlYyBJRCBkdXJpbmcgYXR0YWNoIHRpbWUsIG9yLCBpZiBrZXJuZWwgaXMgdG9vIG9sZCB0b1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcXG5pbmRleCBkZTY1NmI2OWQxM2FmLi5mYjUwZWU0YWQwOTcyIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xcbkBAIC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGNoZWNrX2FzYW5fYXJncyhzOCBfX2FyZW5hICphZGRyLCBzaXplX3Qgc2l6ZSxcXG4gXFx0XFx0Z290byBjb25maXJtZWRfdmFsaWQ7XFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIHRoZSBlZGdlIG9mIHRoZVxcbitcXHQgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIGVkZ2Ugb2YgdGhlXFxuIFxcdCAqIDRHaUIgYm91bmRhcnkgb2YgdGhlIGFyZW5hIChsYXN0IHZhbGlkIGFkZHJlc3MgaXMgMVVMIFxcdTAwM2NcXHUwMDNjIDMyIC0gMSkuXFxuIFxcdCAqXFxuIFxcdCAqXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuY1xcbmluZGV4IDFiMjVkNWM1ZjhmYjguLjhiOTZmYjg2MTM2ODggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jXFxuQEAgLTEzLDcgKzEzLDcgQEBcXG4gICogSVB2NiBoZWFkZXIgd2l0aCBhIFNlZ21lbnQgUm91dGluZyBIZWFkZXIsIHdpdGggc2VnbWVudHMgOlxcbiAgKlxcdGZkMDA6OjEgLVxcdTAwM2UgZmQwMDo6MiAtXFx1MDAzZSBmZDAwOjozIC1cXHUwMDNlIGZkMDA6OjRcXG4gICpcXG4tICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJpbmRlZCB0byBzZWc2bG9jYWwgRW5kLkJQRiBhY3Rpb25zIDpcXG4rICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJvdW5kIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxcbiAgKiAtIGZkMDA6OjEgOiBhZGQgYSBUTFYsIGNoYW5nZSB0aGUgZmxhZ3MgYW5kIGFwcGx5IGEgRW5kLlggYWN0aW9uIHRvIGZjNDI6OjFcXG4gICogLSBmZDAwOjoyIDogcmVtb3ZlIHRoZSBUTFYsIGNoYW5nZSB0aGUgZmxhZ3MsIGFkZCBhIHRhZ1xcbiAgKiAtIGZkMDA6OjMgOiBhcHBseSBhbiBFbmQuVCBhY3Rpb24gdG8gZmQwMDo6NCwgdGhyb3VnaCByb3V0aW5nIHRhYmxlIDExN1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oXFxuaW5kZXggOGFlNGZiMjAyN2Y3My4uOWYyOTcxZmM3Y2Q1NCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oXFxuQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMgdGxkX2tleV90IF9fdGxkX2NyZWF0ZV9rZXkoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IHNpemUsIGJvb2wgZHluX2RhdGEpXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdC8qXFxuLVxcdFxcdCAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcXG4rXFx0XFx0ICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXAgdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcXG4gXFx0XFx0ICogVExEX0RZTl9EQVRBX1NJWkUgaXMgYWxsb2NhdGVkIGZvciB0bGRfY3JlYXRlX2tleSgpXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoZHluX2RhdGEpIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jXFxuaW5kZXggNjI0MDc4YWJmM2RlYS4uZDdlMzBlZTU3NmM5MyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcXG5AQCAtNyw3ICs3LDcgQEBcXG4gXFxuIFNFQyhcXFwiZnJlcGxhY2UvYnRmX3VucmVsaWFibGVfa3Byb2JlXFxcIilcXG4gLyogY29udGV4dCB0eXBlIGlzIHdoYXQgQlBGIHZlcmlmaWVyIGV4cGVjdHMgZm9yIGtwcm9iZSBjb250ZXh0LCBidXQgdGFyZ2V0XFxuLSAqIHByb2dyYW0gaGFzIGBzdHVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmVcXG4rICogcHJvZ3JhbSBoYXMgYHN0cnVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmVcXG4gICogcmVqZWN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6XFxuICAqXFxuICAqIGFyZzAgcmVwbGFjZV9idGZfdW5yZWxpYWJsZV9rcHJvYmUoc3RydWN0IHB0X3JlZ3MgKikgZG9lc24ndCBtYXRjaCBidGZfdW5yZWxpYWJsZV9rcHJvYmUoc3RydWN0IHdoYXRldmVyICopXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcXG5pbmRleCBjNjY5OTE1OWRhY2RkLi5lNDRhOTc5MjcwZWEwIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcXG5AQCAtMTUxMSw3ICsxNTExLDcgQEAgX19uYWtlZCBpbnQgY2hlY2twb2ludF9zdGF0ZXNfZGVsZXRpb24odm9pZClcXG4gXFx0ICogd291bGQgZ2V0IGVxdWFsIHRvIG9uZSBvZiB0aGUgZXhwbG9yZWQgc3RhdGVzIGFuZCB0aHVzIGxvb3BcXG4gXFx0ICogZXhwbG9yYXRpb24gd291bGQgYmUgZmluaXNoZWQgKGF0LWxlYXN0IGZvciBhIHNwZWNpZmljIHBhdGgpLlxcbiBcXHQgKiBWZXJpZmllciBldmljdHMgZXhwbG9yZWQgc3RhdGVzIHdpdGggaGlnaCBtaXNzIHRvIGhpdCByYXRpb1xcbi1cXHQgKiB0byB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXFxuK1xcdCAqIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWRcXG4gXFx0ICogc3RhdGVzIHBlciBpbnN0cnVjdGlvbi5cXG4gXFx0ICogVGhpcyB0ZXN0IGlzIGRlc2lnbmVkIHRvIFxcXCJzdHJlc3MgdGVzdFxcXCIgZXZpY3Rpb24gcG9saWN5IGRlZmluZWQgdXNpbmcgZm9ybXVsYTpcXG4gXFx0ICpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcXG5pbmRleCBhNjNlMzM2NzUwOTE4Li4yMjdkZWEwZGEzYTA1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXFxuQEAgLTIyNSw3ICsyMjUsNyBAQCBfX25ha2VkIHZvaWQgc3RhY2tfd3JpdGVfcHJpdl92c191bnByaXYodm9pZClcXG4gfVxcbiBcXG4gLyogU2ltaWxhciB0byB0aGUgcHJldmlvdXMgdGVzdCwgYnV0IHRoaXMgdGltZSBhbHNvIHBlcmZvcm0gYSByZWFkIGZyb20gdGhlXFxuLSAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2ZmZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcXG4rICogYWRkcmVzcyB3cml0dGVuIHRvIHdpdGggYSB2YXJpYWJsZSBvZmZzZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcXG4gICogYWZ0ZXIgYSB2YXJpYWJsZS1vZmZzZXQgd3JpdGUsIGEgcHJpdmlsZWdlZCBwcm9ncmFtIGNhbiByZWFkIHRoZSBzbG90cyB0aGF0XFxuICAqIHdlcmUgaW4gdGhlIHJhbmdlIG9mIHRoYXQgd3JpdGUgKGV2ZW4gaWYgdGhlIHZlcmlmaWVyIGRvZXNuJ3QgYWN0dWFsbHkga25vdyBpZlxcbiAgKiB0aGUgc2xvdCBiZWluZyByZWFkIHdhcyByZWFsbHkgd3JpdHRlbiB0byBvciBub3QuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA2OjQ3OjAwLjU1MTUxODQwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzU1MTI1NzIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgY29udGFpbnMgY29tbWVudCBzcGVsbGluZyBhbmQgdHlwbyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEJQRiBKSVQgZmlsZXMsIGFuZCBCUEYgc2VsZnRlc3RzL3Rvb2xzLiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzM2NjBkZmEzZGRlYjk5ZTY0NGU3ODk4MDc3MzYwM2E3NGRkN2M5NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMDY6NDY6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY1xuaW5kZXggOWVkZTgxYWZiYzUwZS4uYjFjMjFjMDE0YzljZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbisrKyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYyxcbiBcdGFybV9icGZfcHV0X3JlZzY0KGRzdCwgcmQsIGN0eCk7XG4gfVxuIFxuLS8qIEFyaXRobWF0aWMgT3BlcmF0aW9uICovXG4rLyogQXJpdGhtZXRpYyBPcGVyYXRpb24gKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9hcl9yKGNvbnN0IHU4IHJkLCBjb25zdCB1OCBydCwgY29uc3QgdTggcm0sXG4gXHRcdFx0ICAgICBjb25zdCB1OCBybiwgc3RydWN0IGppdF9jdHggKmN0eCwgdTggb3AsXG4gXHRcdFx0ICAgICBib29sIGlzX2ptcDY0KSB7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCBiZmRjNTA3NDBkYThlLi5jZjhjMWI0OWRhMjU3IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC0yMyw3ICsyMyw3IEBAXG4gICpcbiAgKlx0XHRbXHRwcmV2IHNwXHRcdF0gXHUwMDNjLS0tLS0tLS0tLS0tLVxuICAqXHRcdFsgICBudiBncHIgc2F2ZSBhcmVhXHRdIDE2ICogNFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuKyAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cCB0byA1MTJcdHxcbiAgKlx0XHRbICAgICBmcmFtZSBoZWFkZXJcdF0gMTZcdFx0fFxuICAqIHNwIChyMSkgLS0tXHUwMDNlXHRbICAgIHN0YWNrIHBvaW50ZXJcdF0gLS0tLS0tLS0tLS0tLS1cbiAgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGZjOWRiNjkxZTgyMDMuLjhhMWEwMDAyNmM2OWYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTIzLDcgKzIzLDcgQEBcbiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZTpcbiAgKiBMYXlvdXQgd2hlbiBzZXR0aW5nIHVwIG91ciBvd24gc3RhY2sgZnJhbWUuXG4gICogTm90ZTogcjEgYXQgYm90dG9tLCBjb21wb25lbnQgb2Zmc2V0cyBwb3NpdGl2ZSB3cnQgcjEuXG4tICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50XG4rICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXAgdG8gbG9jYWxfdG1wX3Zhcikgc3RheXMgY29uc2lzdGVudFxuICAqIHdpdGggb3VyIHJlZHpvbmUgdXNhZ2UuXG4gICpcbiAgKiB0YWlsX2NhbGxfaW5mbyAtIHN0b3JlcyB0YWlsY2FsbCBjb3VudCB2YWx1ZSBpbiBtYWluIHByb2dyYW0nc1xuQEAgLTM1LDcgKzM1LDcgQEBcbiAgKlx0XHRbICAgbnYgZ3ByIHNhdmUgYXJlYVx0XSAoNiAqIDgpXHR8XG4gICpcdFx0WyBhZGRsLiBudiBncHIgc2F2ZSBhcmVhXSAoMTIgKiA4KVx0fCBcdTAwM2MtLS0gZXhjZXB0aW9uIGJvdW5kYXJ5L2NhbGxiYWNrIHByb2dyYW1cbiAgKlx0XHRbICAgIGxvY2FsX3RtcF92YXJcdF0gMjRcdFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuKyAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cCB0byA1MTJcdHxcbiAgKlx0XHRbICAgICBmcmFtZSBoZWFkZXJcdF0gMzIvMTEyXHR8XG4gICogc3AgKHIxKSAtLS1cdTAwM2VcdFsgICAgc3RhY2sgcG9pbnRlclx0XSAtLS0tLS0tLS0tLS0tLVxuICAqXG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcbmluZGV4IGEyZTI4ZTA0NjRhMzMuLjgxNDMwZjA2NWFjOTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG4rKysgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG5AQCAtMTk1LDcgKzE5NSw3IEBAIGJwZl9lcnJvcjpcbiBcdC8qIE1ha2UgdGhlIEpJVCBwcm9ncmFtIHJldHVybiB6ZXJvLiAgVGhlIEpJVCBlcGlsb2d1ZVxuIFx0ICogc3RvcmVzIGF3YXkgdGhlIG9yaWdpbmFsICVvNyBpbnRvIHJfc2F2ZWRfTzcuICBUaGVcbiBcdCAqIG5vcm1hbCBsZWFmIGZ1bmN0aW9uIHJldHVybiBpcyB0byB1c2UgXCJyZXRsXCIgd2hpY2hcbi1cdCAqIHdvdWxkIGV2YWx1dGUgdG8gXCJqbXBsICVvNyArIDgsICVnMFwiIGJ1dCB3ZSB3YW50IHRvXG4rXHQgKiB3b3VsZCBldmFsdWF0ZSB0byBcImptcGwgJW83ICsgOCwgJWcwXCIgYnV0IHdlIHdhbnQgdG9cbiBcdCAqIHVzZSB0aGUgc2F2ZWQgdmFsdWUgdGh1cyB0aGUgc2VxdWVuY2UgeW91IHNlZSBoZXJlLlxuIFx0ICovXG4gXHRqbXBsXHRyX3NhdmVkX083ICsgOCwgJWcwXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbmluZGV4IDAwYWQ4YjYzYWE0NzcuLjRlZmY2ZTYwMWIwNTMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG5AQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyO1xuICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pXHRcdFx0XHRcXFxuIFx0QlBGX0FMVTMyX0lNTV9PRkYoT1AsIERTVCwgSU1NLCAwKVxuIFxuLS8qIEVuZGlhbmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xuKy8qIEVuZGlhbm5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi9cbiBcbiAjZGVmaW5lIEJQRl9FTkRJQU4oVFlQRSwgRFNULCBMRU4pXHRcdFx0XHRcXFxuIFx0KChzdHJ1Y3QgYnBmX2luc24pIHtcdFx0XHRcdFx0XFxcbkBAIC0xMDI5LDcgKzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIHU4ICpicGZfc2tiX2NiKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4gXHQgKlxuIFx0ICogSW4gc29tZSBzb2NrZXQgZmlsdGVyIGNhc2VzLCB0aGUgY2IgdW5mb3J0dW5hdGVseSBuZWVkcyB0byBiZVxuIFx0ICogc2F2ZWQvcmVzdG9yZWQgc28gdGhhdCBwcm90b2NvbCBzcGVjaWZpYyBza2ItXHUwMDNlY2JbXSBkYXRhIHdvbid0XG4tXHQgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWRnZWQgZUJQRiBwcm9ncmFtc1xuK1x0ICogYmUgbG9zdC4gSW4gYW55IGNhc2UsIGR1ZSB0byB1bnByaXZpbGVnZWQgZUJQRiBwcm9ncmFtc1xuIFx0ICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWFcbiBcdCAqIHRvIG5vdCBsZWFrIHByZXZpb3VzIGNvbnRlbnRzIHRvIHVzZXIgc3BhY2UuXG4gXHQgKi9cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jIGIva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xuaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmNcbisrKyBiL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmNcbkBAIC0yMDcsNyArMjA3LDcgQEAgcmV1c2Vwb3J0X2FycmF5X3VwZGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgcmV1c2Vwb3J0X2FycmF5ICphcnJheSxcbiBcdFx0cmV0dXJuIC1FTk9UU1VQUDtcbiBcbiBcdC8qXG4tXHQgKiBzayBtdXN0IGJlIGhhc2hlZCAoaS5lLiBsaXN0ZW5pbmcgaW4gdGhlIFRDUCBjYXNlIG9yIGJpbmRlZFxuK1x0ICogc2sgbXVzdCBiZSBoYXNoZWQgKGkuZS4gbGlzdGVuaW5nIGluIHRoZSBUQ1AgY2FzZSBvciBib3VuZFxuIFx0ICogaW4gdGhlIFVEUCBjYXNlKSBhbmRcbiBcdCAqIGl0IG11c3QgYWxzbyBiZSBhIFNPX1JFVVNFUE9SVCBzayAoaS5lLiByZXVzZSBjYW5ub3QgYmUgTlVMTCkuXG4gXHQgKlxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jXG5pbmRleCBjNzgzMzU5OTc3YjQ2Li5kMWM3MzExM2U1OGZiIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xuKysrIGIvdG9vbHMvbGliL2JwZi9idGYuY1xuQEAgLTM4NDcsNyArMzg0Nyw3IEBAIHN0YXRpYyBpbnQgYnRmX2RlZHVwX3JlbWFwX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQpO1xuICAqIHR5cGVzLCBpbiBnZW5lcmFsLCBjYW4gZm9ybSBncmFwaHMgY29udGFpbmluZyBjeWNsZXMsIG5vdCBqdXN0IERBR3MuXG4gICpcbiAgKiBXaGlsZSBhbGdvcml0aG0gZG9lcyBkZWR1cGxpY2F0aW9uLCBpdCBhbHNvIG1lcmdlcyBhbmQgcmVzb2x2ZXMgdHlwZVxuLSAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaHQgYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cbisgKiBpbmZvcm1hdGlvbiAodW5sZXNzIGRpc2FibGVkIHRocm91Z2ggYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cbiAgKiBFLmcuLCBpbiB0aGUgZXhhbXBsZSBhYm92ZSB3aXRoIHR3byBjb21waWxhdGlvbiB1bml0cyBoYXZpbmcgcGFydGlhbCB0eXBlXG4gICogaW5mb3JtYXRpb24gZm9yIHN0cnVjdHMgYEFgIGFuZCBgQmAsIHRoZSBvdXRwdXQgb2YgYWxnb3JpdGhtIHdpbGwgZW1pdFxuICAqIGEgc2luZ2xlIGNvcHkgb2YgZWFjaCBCVEYgdHlwZSB0aGF0IGRlc2NyaWJlcyBzdHJ1Y3RzIGBBYCwgYEJgLCBhbmQgYFNgXG5AQCAtNTY0OCw3ICs1NjQ4LDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVzb2x2ZV9md2RzKHN0cnVjdCBidGZfZGVkdXAgKmQpXG4gICpcbiAgKiBBZnRlciB3ZSBlc3RhYmxpc2hlZCBmb3IgZWFjaCB0eXBlIGl0cyBjb3JyZXNwb25kaW5nIGNhbm9uaWNhbCByZXByZXNlbnRhdGl2ZVxuICAqIHR5cGUsIHdlIG5vdyBjYW4gZWxpbWluYXRlIHR5cGVzIHRoYXQgYXJlIG5vdCBjYW5vbmljYWwgYW5kIGxlYXZlIG9ubHlcbi0gKiBjYW5vbmljYWwgb25lcyBsYXllZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlclxuKyAqIGNhbm9uaWNhbCBvbmVzIGxhaWQgb3V0IHNlcXVlbnRpYWxseSBpbiBtZW1vcnkgYnkgY29weWluZyB0aGVtIG92ZXJcbiAgKiBkdXBsaWNhdGVzLiBEdXJpbmcgY29tcGFjdGlvbiBidGZfZGVkdXAtXHUwMDNlaHlwb3RfbWFwIGFycmF5IGlzIHJldXNlZCB0byBzdG9yZVxuICAqIGEgbWFwIGZyb20gb3JpZ2luYWwgdHlwZSBJRCB0byBhIG5ldyBjb21wYWN0ZWQgdHlwZSBJRCwgd2hpY2ggd2lsbCBiZSB1c2VkXG4gICogZHVyaW5nIG5leHQgcGhhc2UgdG8gXCJmaXggdXBcIiB0eXBlIElEcywgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdC91bmlvbiBhbmRcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL3VzZHQuYyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5pbmRleCBlZTlkMWI2MTQ4ODNjLi42N2M2MGY3MTZjMWE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi91c2R0LmNcbisrKyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5AQCAtMTQ0LDcgKzE0NCw3IEBAXG4gICogYWJvdXQuIFRoaXMgc3RhdGUgaGFzIHRvIGJlIG1haW50YWluZWQgcGVyLUJQRiBvYmplY3QgYW5kIGNvb3JkaW5hdGVcbiAgKiBiZXR3ZWVuIGRpZmZlcmVudCBVU0RUIGF0dGFjaG1lbnRzIHdpdGhpbiB0aGUgc2FtZSBCUEYgb2JqZWN0LlxuICAqXG4tICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGF5ZWQgb3V0XG4rICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGFpZCBvdXRcbiAgKiBhcyBzdHJ1Y3QgdXNkdF9zcGVjLiBFYWNoIGludm9jYXRpb24gb2YgQlBGIHByb2dyYW0gYXQgcnVudGltZSBuZWVkcyB0b1xuICAqIGtub3cgaXRzIGFzc29jaWF0ZWQgc3BlYyBJRC4gSXQgZ2V0cyBpdCBlaXRoZXIgdGhyb3VnaCBCUEYgY29va2llLCB3aGljaFxuICAqIGxpYmJwZiBzZXRzIHRvIHNwZWMgSUQgZHVyaW5nIGF0dGFjaCB0aW1lLCBvciwgaWYga2VybmVsIGlzIHRvbyBvbGQgdG9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcbmluZGV4IGRlNjU2YjY5ZDEzYWYuLmZiNTBlZTRhZDA5NzIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xuQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2hlY2tfYXNhbl9hcmdzKHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzaXplLFxuIFx0XHRnb3RvIGNvbmZpcm1lZF92YWxpZDtcbiBcbiBcdC8qXG4tXHQgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIHRoZSBlZGdlIG9mIHRoZVxuK1x0ICogV3JhcGFyb3VuZCBpcyBwb3NzaWJsZSBmb3IgdmFsdWVzIGNsb3NlIHRvIHRoZSBlZGdlIG9mIHRoZVxuIFx0ICogNEdpQiBib3VuZGFyeSBvZiB0aGUgYXJlbmEgKGxhc3QgdmFsaWQgYWRkcmVzcyBpcyAxVUwgXHUwMDNjXHUwMDNjIDMyIC0gMSkuXG4gXHQgKlxuIFx0ICpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbmluZGV4IDFiMjVkNWM1ZjhmYjguLjhiOTZmYjg2MTM2ODggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuY1xuQEAgLTEzLDcgKzEzLDcgQEBcbiAgKiBJUHY2IGhlYWRlciB3aXRoIGEgU2VnbWVudCBSb3V0aW5nIEhlYWRlciwgd2l0aCBzZWdtZW50cyA6XG4gICpcdGZkMDA6OjEgLVx1MDAzZSBmZDAwOjoyIC1cdTAwM2UgZmQwMDo6MyAtXHUwMDNlIGZkMDA6OjRcbiAgKlxuLSAqIDMgZmQwMDo6LzE2IElQdjYgYWRkcmVzc2VzIGFyZSBiaW5kZWQgdG8gc2VnNmxvY2FsIEVuZC5CUEYgYWN0aW9ucyA6XG4rICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJvdW5kIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxuICAqIC0gZmQwMDo6MSA6IGFkZCBhIFRMViwgY2hhbmdlIHRoZSBmbGFncyBhbmQgYXBwbHkgYSBFbmQuWCBhY3Rpb24gdG8gZmM0Mjo6MVxuICAqIC0gZmQwMDo6MiA6IHJlbW92ZSB0aGUgVExWLCBjaGFuZ2UgdGhlIGZsYWdzLCBhZGQgYSB0YWdcbiAgKiAtIGZkMDA6OjMgOiBhcHBseSBhbiBFbmQuVCBhY3Rpb24gdG8gZmQwMDo6NCwgdGhyb3VnaCByb3V0aW5nIHRhYmxlIDExN1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbmluZGV4IDhhZTRmYjIwMjdmNzMuLjlmMjk3MWZjN2NkNTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHRsZF9rZXlfdCBfX3RsZF9jcmVhdGVfa2V5KGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLCBib29sIGR5bl9kYXRhKVxuIFx0XHR9XG4gXG4gXHRcdC8qXG4tXHRcdCAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcbitcdFx0ICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXAgdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcbiBcdFx0ICogVExEX0RZTl9EQVRBX1NJWkUgaXMgYWxsb2NhdGVkIGZvciB0bGRfY3JlYXRlX2tleSgpXG4gXHRcdCAqL1xuIFx0XHRpZiAoZHluX2RhdGEpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcbmluZGV4IDYyNDA3OGFiZjNkZWEuLmQ3ZTMwZWU1NzZjOTMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xuQEAgLTcsNyArNyw3IEBAXG4gXG4gU0VDKFwiZnJlcGxhY2UvYnRmX3VucmVsaWFibGVfa3Byb2JlXCIpXG4gLyogY29udGV4dCB0eXBlIGlzIHdoYXQgQlBGIHZlcmlmaWVyIGV4cGVjdHMgZm9yIGtwcm9iZSBjb250ZXh0LCBidXQgdGFyZ2V0XG4tICogcHJvZ3JhbSBoYXMgYHN0dWN0IHdoYXRldmVyICpjdHhgIGFyZ3VtZW50LCBzbyBmcmVwbGFjZSBvcGVyYXRpb24gd2lsbCBiZVxuKyAqIHByb2dyYW0gaGFzIGBzdHJ1Y3Qgd2hhdGV2ZXIgKmN0eGAgYXJndW1lbnQsIHNvIGZyZXBsYWNlIG9wZXJhdGlvbiB3aWxsIGJlXG4gICogcmVqZWN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6XG4gICpcbiAgKiBhcmcwIHJlcGxhY2VfYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCBwdF9yZWdzICopIGRvZXNuJ3QgbWF0Y2ggYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCB3aGF0ZXZlciAqKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbmluZGV4IGM2Njk5MTU5ZGFjZGQuLmU0NGE5NzkyNzBlYTAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbkBAIC0xNTExLDcgKzE1MTEsNyBAQCBfX25ha2VkIGludCBjaGVja3BvaW50X3N0YXRlc19kZWxldGlvbih2b2lkKVxuIFx0ICogd291bGQgZ2V0IGVxdWFsIHRvIG9uZSBvZiB0aGUgZXhwbG9yZWQgc3RhdGVzIGFuZCB0aHVzIGxvb3BcbiBcdCAqIGV4cGxvcmF0aW9uIHdvdWxkIGJlIGZpbmlzaGVkIChhdC1sZWFzdCBmb3IgYSBzcGVjaWZpYyBwYXRoKS5cbiBcdCAqIFZlcmlmaWVyIGV2aWN0cyBleHBsb3JlZCBzdGF0ZXMgd2l0aCBoaWdoIG1pc3MgdG8gaGl0IHJhdGlvXG4tXHQgKiB0byB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXG4rXHQgKiB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXG4gXHQgKiBzdGF0ZXMgcGVyIGluc3RydWN0aW9uLlxuIFx0ICogVGhpcyB0ZXN0IGlzIGRlc2lnbmVkIHRvIFwic3RyZXNzIHRlc3RcIiBldmljdGlvbiBwb2xpY3kgZGVmaW5lZCB1c2luZyBmb3JtdWxhOlxuIFx0ICpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuaW5kZXggYTYzZTMzNjc1MDkxOC4uMjI3ZGVhMGRhM2EwNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcbkBAIC0yMjUsNyArMjI1LDcgQEAgX19uYWtlZCB2b2lkIHN0YWNrX3dyaXRlX3ByaXZfdnNfdW5wcml2KHZvaWQpXG4gfVxuIFxuIC8qIFNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHRlc3QsIGJ1dCB0aGlzIHRpbWUgYWxzbyBwZXJmb3JtIGEgcmVhZCBmcm9tIHRoZVxuLSAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2ZmZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcbisgKiBhZGRyZXNzIHdyaXR0ZW4gdG8gd2l0aCBhIHZhcmlhYmxlIG9mZnNldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxuICAqIGFmdGVyIGEgdmFyaWFibGUtb2Zmc2V0IHdyaXRlLCBhIHByaXZpbGVnZWQgcHJvZ3JhbSBjYW4gcmVhZCB0aGUgc2xvdHMgdGhhdFxuICAqIHdlcmUgaW4gdGhlIHJhbmdlIG9mIHRoYXQgd3JpdGUgKGV2ZW4gaWYgdGhlIHZlcmlmaWVyIGRvZXNuJ3QgYWN0dWFsbHkga25vdyBpZlxuICAqIHRoZSBzbG90IGJlaW5nIHJlYWQgd2FzIHJlYWxseSB3cml0dGVuIHRvIG9yIG5vdC5cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA2OjQ3OjAwLjU1MTUxOTg4NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc1NTEyMzYzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXM6IEEgRGVlcCBEaXZlIGludG8gVHlwb3MgYW5kIFRlc3QgU3VpdGVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHNjYW4gb2YgdGhlIGRpZmYgcmV2ZWFscyBhIGNvbGxlY3Rpb24gb2YgY2hhbmdlcywgYW5kIGl0J3MgbG9va2luZyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBXZSdyZSB0YWxraW5nIGFib3V0IGNvbW1lbnQgdHlwbyBmaXhlcyDigJMgYWxsIG9mIHRoZW0hIEkgbWVhbiwgaXQncyBjb3ZlcmluZyBhIGJyb2FkIHJhbmdlIG9mIGZpbGVzOiBgYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY2AsIGBhcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLCBgYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jYCwgYGFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNgLCBgaW5jbHVkZS9saW51eC9maWx0ZXIuaGAsIGBrZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jYCwgYHRvb2xzL2xpYi9icGYvYnRmLmNgLCBgdG9vbHMvbGliL2JwZi91c2R0LmNgLCBhbmQgYSBzbGV3IG9mIHNlbGZ0ZXN0IGZpbGVzIHVuZGVyIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC5cblxuTm93LCBJJ20gZ29pbmcgdG8gZG8gbXkgZHVlIGRpbGlnZW5jZSBhbmQgY29uZmlybSB0aGF0IHRoZSBjaGFuZ2UgaXMgbGltaXRlZCB0byBjb21tZW50cy4gSSdsbCBtZXRpY3Vsb3VzbHkgZ28gdGhyb3VnaCBlYWNoIGZpbGUsIHNwZWNpZmljYWxseSBleGFtaW5pbmcgdGhlIGxpbmVzIHdoZXJlIHRoZSBmaXhlcyBhcmUgbWFkZS4gSSdsbCBkb3VibGUtY2hlY2sgYGluY2x1ZGUvbGludXgvZmlsdGVyLmhgLCBga2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY2AsIGFuZCBhbGwgdGhlIGBhcmNoLy4uLmAgYW5kIGB0b29scy8uLi5gIGRpcmVjdG9yaWVzLCBhbmQgY29uZmlybSB0aGF0IHRoZXJlJ3Mgbm8gYWx0ZXJhdGlvbiB0byBhbnkgY3JpdGljYWwgY29kZS4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIG5vIHN0cmluZyBsaXRlcmFscywgbWFjcm9zLCBvciBhbnl0aGluZyBvZiB0aGF0IHNvcnQgYXJlIGltcGFjdGVkLlxuXG5BbHJpZ2h0LCBJJ3ZlIGNvbmZpcm1lZCBpdC4gQXMgcGVyIFNlY3Rpb24gMiwgdGhpcyBwYXRjaCBpcyBzdHJpY3RseSBpbiB0aGUgcmVhbG0gb2YgXCJOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzXCI6IHNwZWNpZmljYWxseSBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgYW5kIHNwZWxsaW5nIGZpeGVzLiBQbHVzLCB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgY29uZmluZWQgdG8gdXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZnRlc3RzLCBhbmQgc2NyaXB0cywgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIG1vZHVsZXMuIFRoaXMgbWVhbnMgaXQncyBhIGNsZWFyIGNhc2UuXG5cblRoZXJlZm9yZSwgZm9yIHRoaXMgcGF0Y2gsIGBXb3J0aEZ1enppbmcgPSBmYWxzZWAuIFRoZXJlIGFyZSBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24sIGFuZCBjZXJ0YWlubHkgbm8gc3BlY2lmaWMgc3ltYm9scyB0aGF0IEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aC4gVGhlIHJlYXNvbmluZyBpcyBzaW1wbGU6IHRoZSBwYXRjaCdzIHNjb3BlIGlzIGxpbWl0ZWQgdG8gY29tbWVudCBzcGVsbGluZyBhbmQgdHlwbyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZXMsIGFyY2hpdGVjdHVyZSBKSVRzLCBhbmQgc2VsZnRlc3QgZmlsZXMuIE5vIGV4ZWN1dGFibGUgY29kZSBvciBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cblxuVGltZSB0byBpbnZva2UgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgyNCwiT3V0cHV0VG9rZW5zIjo3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA2OjQ3OjA4LjEwMjc1ODE0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZXhjbHVzaXZlbHkgY29udGFpbnMgY29tbWVudCBzcGVsbGluZyBhbmQgdHlwbyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEJQRiBKSVQgZmlsZXMsIGFuZCBCUEYgc2VsZnRlc3RzL3Rvb2xzLiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IGNvbnRhaW5zIGNvbW1lbnQgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBCUEYgSklUIGZpbGVzLCBhbmQgQlBGIHNlbGZ0ZXN0cy90b29scy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNjo0NzowOC4xMDI3Nzc0ODlaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrgbg[1] Phase: Running StartedAt: 2026-09-08 06:47:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrgbg[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-08 06:47:18 +0000 UTC FinishedAt: 2026-09-08 06:47:22 +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,}