Name: series-workflowf7s94 Phase: Failed StartedAt: 2026-09-05 22:12:20 +0000 UTC FinishedAt: 2026-09-05 23:01:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7s94[0] Phase: Succeeded StartedAt: 2026-09-05 22:12:20 +0000 UTC FinishedAt: 2026-09-05 23:00:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7s94[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 22:12:20 +0000 UTC FinishedAt: 2026-09-05 23:00:55 +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+CgkJCTx0ZD4yMDI2LzA5LzA1IDIzOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIHNvbGVseSBvZiBjb21tZW50IHNwZWxsaW5nIGZpeGVzIGFjcm9zcyBrZXJuZWwgc291cmNlIGZpbGVzLCBoZWFkZXIgZmlsZXMsIGFuZCB0b29scy9zZWxmdGVzdHMuIE5vIGV4ZWN1dGFibGUgY29kZSwgZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIG9yIHJ1bnRpbWUgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDIzOjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGQ0ZDM0YWQ5MTFlNWI3ZWZkYzMzZjdmY2VlMmY0YTc1YjIwZjIzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMjM6MDA6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbmluZGV4IDllZGU4MWFmYmM1MGUuLmIxYzIxYzAxNGM5Y2YgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXG5AQCAtMTM0Niw3ICYjNDM7MTM0Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0X2xkc3hfcihjb25zdCBzOCBkc3RbXSwgY29uc3Qgczggc3JjLFxuIFx0YXJtX2JwZl9wdXRfcmVnNjQoZHN0LCByZCwgY3R4KTtcbiB9XG4gXG4tLyogQXJpdGhtYXRpYyBPcGVyYXRpb24gKi9cbiYjNDM7LyogQXJpdGhtZXRpYyBPcGVyYXRpb24gKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9hcl9yKGNvbnN0IHU4IHJkLCBjb25zdCB1OCBydCwgY29uc3QgdTggcm0sXG4gXHRcdFx0ICAgICBjb25zdCB1OCBybiwgc3RydWN0IGppdF9jdHggKmN0eCwgdTggb3AsXG4gXHRcdFx0ICAgICBib29sIGlzX2ptcDY0KSB7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCBiZmRjNTA3NDBkYThlLi5jZjhjMWI0OWRhMjU3IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC0yMyw3ICYjNDM7MjMsNyBAQFxuICAqXG4gICpcdFx0W1x0cHJldiBzcFx0XHRdIFx1MDAzYy0tLS0tLS0tLS0tLS1cbiAgKlx0XHRbICAgbnYgZ3ByIHNhdmUgYXJlYVx0XSAxNiAqIDRcdHxcbi0gKiBmcCAocjMxKSAtLVx1MDAzZVx0WyAgIGVicGYgc3RhY2sgc3BhY2VcdF0gdXB0byA1MTJcdHxcbiYjNDM7ICogZnAgKHIzMSkgLS1cdTAwM2VcdFsgICBlYnBmIHN0YWNrIHNwYWNlXHRdIHVwIHRvIDUxMlx0fFxuICAqXHRcdFsgICAgIGZyYW1lIGhlYWRlclx0XSAxNlx0XHR8XG4gICogc3AgKHIxKSAtLS1cdTAwM2VcdFsgICAgc3RhY2sgcG9pbnRlclx0XSAtLS0tLS0tLS0tLS0tLVxuICAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggZmM5ZGI2OTFlODIwMy4uOGExYTAwMDI2YzY5ZiAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMjMsNyAmIzQzOzIzLDcgQEBcbiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZTpcbiAgKiBMYXlvdXQgd2hlbiBzZXR0aW5nIHVwIG91ciBvd24gc3RhY2sgZnJhbWUuXG4gICogTm90ZTogcjEgYXQgYm90dG9tLCBjb21wb25lbnQgb2Zmc2V0cyBwb3NpdGl2ZSB3cnQgcjEuXG4tICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50XG4mIzQzOyAqIEVuc3VyZSB0aGUgdG9wIGhhbGYgKHVwIHRvIGxvY2FsX3RtcF92YXIpIHN0YXlzIGNvbnNpc3RlbnRcbiAgKiB3aXRoIG91ciByZWR6b25lIHVzYWdlLlxuICAqXG4gICogdGFpbF9jYWxsX2luZm8gLSBzdG9yZXMgdGFpbGNhbGwgY291bnQgdmFsdWUgaW4gbWFpbiBwcm9ncmFtJiMzOTtzXG5AQCAtMzUsNyAmIzQzOzM1LDcgQEBcbiAgKlx0XHRbICAgbnYgZ3ByIHNhdmUgYXJlYVx0XSAoNiAqIDgpXHR8XG4gICpcdFx0WyBhZGRsLiBudiBncHIgc2F2ZSBhcmVhXSAoMTIgKiA4KVx0fCBcdTAwM2MtLS0gZXhjZXB0aW9uIGJvdW5kYXJ5L2NhbGxiYWNrIHByb2dyYW1cbiAgKlx0XHRbICAgIGxvY2FsX3RtcF92YXJcdF0gMjRcdFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuJiM0MzsgKiBmcCAocjMxKSAtLVx1MDAzZVx0WyAgIGVicGYgc3RhY2sgc3BhY2VcdF0gdXAgdG8gNTEyXHR8XG4gICpcdFx0WyAgICAgZnJhbWUgaGVhZGVyXHRdIDMyLzExMlx0fFxuICAqIHNwIChyMSkgLS0tXHUwMDNlXHRbICAgIHN0YWNrIHBvaW50ZXJcdF0gLS0tLS0tLS0tLS0tLS1cbiAgKlxuZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlMgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG5pbmRleCBhMmUyOGUwNDY0YTMzLi44MTQzMGYwNjVhYzk3IDEwMDY0NFxuLS0tIGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuU1xuQEAgLTE5NSw3ICYjNDM7MTk1LDcgQEAgYnBmX2Vycm9yOlxuIFx0LyogTWFrZSB0aGUgSklUIHByb2dyYW0gcmV0dXJuIHplcm8uICBUaGUgSklUIGVwaWxvZ3VlXG4gXHQgKiBzdG9yZXMgYXdheSB0aGUgb3JpZ2luYWwgJW83IGludG8gcl9zYXZlZF9PNy4gIFRoZVxuIFx0ICogbm9ybWFsIGxlYWYgZnVuY3Rpb24gcmV0dXJuIGlzIHRvIHVzZSBcJiMzNDtyZXRsXCYjMzQ7IHdoaWNoXG4tXHQgKiB3b3VsZCBldmFsdXRlIHRvIFwmIzM0O2ptcGwgJW83ICYjNDM7IDgsICVnMFwmIzM0OyBidXQgd2Ugd2FudCB0b1xuJiM0MztcdCAqIHdvdWxkIGV2YWx1YXRlIHRvIFwmIzM0O2ptcGwgJW83ICYjNDM7IDgsICVnMFwmIzM0OyBidXQgd2Ugd2FudCB0b1xuIFx0ICogdXNlIHRoZSBzYXZlZCB2YWx1ZSB0aHVzIHRoZSBzZXF1ZW5jZSB5b3Ugc2VlIGhlcmUuXG4gXHQgKi9cbiBcdGptcGxcdHJfc2F2ZWRfTzcgJiM0MzsgOCwgJWcwXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbmluZGV4IDRhOWJjNmE4NDhmMmUuLjBhMDY3YzJlOTIzZGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG5AQCAtMTQ3LDcgJiM0MzsxNDcsNyBAQCBzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlcjtcbiAjZGVmaW5lIEJQRl9BTFUzMl9JTU0oT1AsIERTVCwgSU1NKVx0XHRcdFx0XFxcbiBcdEJQRl9BTFUzMl9JTU1fT0ZGKE9QLCBEU1QsIElNTSwgMClcbiBcbi0vKiBFbmRpYW5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi9cbiYjNDM7LyogRW5kaWFubmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xuIFxuICNkZWZpbmUgQlBGX0VORElBTihUWVBFLCBEU1QsIExFTilcdFx0XHRcdFxcXG4gXHQoKHN0cnVjdCBicGZfaW5zbikge1x0XHRcdFx0XHRcXFxuQEAgLTEwMjksNyAmIzQzOzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIHU4ICpicGZfc2tiX2NiKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4gXHQgKlxuIFx0ICogSW4gc29tZSBzb2NrZXQgZmlsdGVyIGNhc2VzLCB0aGUgY2IgdW5mb3J0dW5hdGVseSBuZWVkcyB0byBiZVxuIFx0ICogc2F2ZWQvcmVzdG9yZWQgc28gdGhhdCBwcm90b2NvbCBzcGVjaWZpYyBza2ItXHUwMDNlY2JbXSBkYXRhIHdvbiYjMzk7dFxuLVx0ICogYmUgbG9zdC4gSW4gYW55IGNhc2UsIGR1ZSB0byB1bnByaXZpbGVkZ2VkIGVCUEYgcHJvZ3JhbXNcbiYjNDM7XHQgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWdlZCBlQlBGIHByb2dyYW1zXG4gXHQgKiBhdHRhY2hlZCB0byBzb2NrZXRzLCB3ZSBuZWVkIHRvIGNsZWFyIHRoZSBicGZfc2tiX2NiKCkgYXJlYVxuIFx0ICogdG8gbm90IGxlYWsgcHJldmlvdXMgY29udGVudHMgdG8gdXNlciBzcGFjZS5cbiBcdCAqL1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmMgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXG5pbmRleCA0OWI4ZTVhMGM2YjRmLi40ZGUwOGFiZmQ5NGVkIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xuQEAgLTIwNyw3ICYjNDM7MjA3LDcgQEAgcmV1c2Vwb3J0X2FycmF5X3VwZGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgcmV1c2Vwb3J0X2FycmF5ICphcnJheSxcbiBcdFx0cmV0dXJuIC1FTk9UU1VQUDtcbiBcbiBcdC8qXG4tXHQgKiBzayBtdXN0IGJlIGhhc2hlZCAoaS5lLiBsaXN0ZW5pbmcgaW4gdGhlIFRDUCBjYXNlIG9yIGJpbmRlZFxuJiM0MztcdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYm91bmRcbiBcdCAqIGluIHRoZSBVRFAgY2FzZSkgYW5kXG4gXHQgKiBpdCBtdXN0IGFsc28gYmUgYSBTT19SRVVTRVBPUlQgc2sgKGkuZS4gcmV1c2UgY2Fubm90IGJlIE5VTEwpLlxuIFx0ICpcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3N0cmVhbS5jIGIva2VybmVsL2JwZi9zdHJlYW0uY1xuaW5kZXggYmU5Y2U5OGU5NDY5Mi4uNTRmNWJlMTI4OWQyYiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvc3RyZWFtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvc3RyZWFtLmNcbkBAIC0yNCw3ICYjNDM7MjQsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl9zdHJlYW1fZWxlbSAqYnBmX3N0cmVhbV9lbGVtX2FsbG9jKGludCBsZW4pXG4gXHQvKlxuIFx0ICogTGVuZ3RoIGRlbm90ZXMgdGhlIGFtb3VudCBvZiBkYXRhIHRvIGJlIHdyaXR0ZW4gYXMgcGFydCBvZiBzdHJlYW0gZWxlbWVudCxcbiBcdCAqIHRodXMgaW5jbHVkZXMgJiMzOTtcXDAmIzM5OyBieXRlLiBXZSYjMzk7cmUgY2FwcGVkIGJ5IGhvdyBtdWNoIGJwZl9icHJpbnRmX2J1ZmZlcnMgY2FuXG4tXHQgKiBhY2NvbW9kYXRlLCB0aGVyZWZvcmUgZGVueSBhbGxvY2F0aW9ucyB0aGF0IHdvbiYjMzk7dCBmaXQgaW50byB0aGVtLlxuJiM0MztcdCAqIGFjY29tbW9kYXRlLCB0aGVyZWZvcmUgZGVueSBhbGxvY2F0aW9ucyB0aGF0IHdvbiYjMzk7dCBmaXQgaW50byB0aGVtLlxuIFx0ICovXG4gXHRpZiAobGVuIFx1MDAzYyAwIHx8IGxlbiBcdTAwM2UgbWF4X2xlbilcbiBcdFx0cmV0dXJuIE5VTEw7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9idGYuYyBiL3Rvb2xzL2xpYi9icGYvYnRmLmNcbmluZGV4IDg0MTdkZTkyZDAyODIuLmMxNzQ1YmVlMzdjMGEgMTAwNjQ0XG4tLS0gYS90b29scy9saWIvYnBmL2J0Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9saWIvYnBmL2J0Zi5jXG5AQCAtMzg0Myw3ICYjNDM7Mzg0Myw3IEBAIHN0YXRpYyBpbnQgYnRmX2RlZHVwX3JlbWFwX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQpO1xuICAqIHR5cGVzLCBpbiBnZW5lcmFsLCBjYW4gZm9ybSBncmFwaHMgY29udGFpbmluZyBjeWNsZXMsIG5vdCBqdXN0IERBR3MuXG4gICpcbiAgKiBXaGlsZSBhbGdvcml0aG0gZG9lcyBkZWR1cGxpY2F0aW9uLCBpdCBhbHNvIG1lcmdlcyBhbmQgcmVzb2x2ZXMgdHlwZVxuLSAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaHQgYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cbiYjNDM7ICogaW5mb3JtYXRpb24gKHVubGVzcyBkaXNhYmxlZCB0aHJvdWdoIGBzdHJ1Y3QgYnRmX29wdHNgKSwgd2hlbmV2ZXIgcG9zc2libGUuXG4gICogRS5nLiwgaW4gdGhlIGV4YW1wbGUgYWJvdmUgd2l0aCB0d28gY29tcGlsYXRpb24gdW5pdHMgaGF2aW5nIHBhcnRpYWwgdHlwZVxuICAqIGluZm9ybWF0aW9uIGZvciBzdHJ1Y3RzIGBBYCBhbmQgYEJgLCB0aGUgb3V0cHV0IG9mIGFsZ29yaXRobSB3aWxsIGVtaXRcbiAgKiBhIHNpbmdsZSBjb3B5IG9mIGVhY2ggQlRGIHR5cGUgdGhhdCBkZXNjcmliZXMgc3RydWN0cyBgQWAsIGBCYCwgYW5kIGBTYFxuQEAgLTU2NDQsNyAmIzQzOzU2NDQsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kZWR1cF9yZXNvbHZlX2Z3ZHMoc3RydWN0IGJ0Zl9kZWR1cCAqZClcbiAgKlxuICAqIEFmdGVyIHdlIGVzdGFibGlzaGVkIGZvciBlYWNoIHR5cGUgaXRzIGNvcnJlc3BvbmRpbmcgY2Fub25pY2FsIHJlcHJlc2VudGF0aXZlXG4gICogdHlwZSwgd2Ugbm93IGNhbiBlbGltaW5hdGUgdHlwZXMgdGhhdCBhcmUgbm90IGNhbm9uaWNhbCBhbmQgbGVhdmUgb25seVxuLSAqIGNhbm9uaWNhbCBvbmVzIGxheWVkIG91dCBzZXF1ZW50aWFsbHkgaW4gbWVtb3J5IGJ5IGNvcHlpbmcgdGhlbSBvdmVyXG4mIzQzOyAqIGNhbm9uaWNhbCBvbmVzIGxhaWQgb3V0IHNlcXVlbnRpYWxseSBpbiBtZW1vcnkgYnkgY29weWluZyB0aGVtIG92ZXJcbiAgKiBkdXBsaWNhdGVzLiBEdXJpbmcgY29tcGFjdGlvbiBidGZfZGVkdXAtXHUwMDNlaHlwb3RfbWFwIGFycmF5IGlzIHJldXNlZCB0byBzdG9yZVxuICAqIGEgbWFwIGZyb20gb3JpZ2luYWwgdHlwZSBJRCB0byBhIG5ldyBjb21wYWN0ZWQgdHlwZSBJRCwgd2hpY2ggd2lsbCBiZSB1c2VkXG4gICogZHVyaW5nIG5leHQgcGhhc2UgdG8gXCYjMzQ7Zml4IHVwXCYjMzQ7IHR5cGUgSURzLCByZWZlcmVuY2VkIGZyb20gc3RydWN0L3VuaW9uIGFuZFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvdXNkdC5jIGIvdG9vbHMvbGliL2JwZi91c2R0LmNcbmluZGV4IDJlNTZlM2FiNWI2Y2MuLmMwOTMzNTgwOTMwYmMgMTAwNjQ0XG4tLS0gYS90b29scy9saWIvYnBmL3VzZHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi91c2R0LmNcbkBAIC0xNDQsNyAmIzQzOzE0NCw3IEBAXG4gICogYWJvdXQuIFRoaXMgc3RhdGUgaGFzIHRvIGJlIG1haW50YWluZWQgcGVyLUJQRiBvYmplY3QgYW5kIGNvb3JkaW5hdGVcbiAgKiBiZXR3ZWVuIGRpZmZlcmVudCBVU0RUIGF0dGFjaG1lbnRzIHdpdGhpbiB0aGUgc2FtZSBCUEYgb2JqZWN0LlxuICAqXG4tICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGF5ZWQgb3V0XG4mIzQzOyAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxhaWQgb3V0XG4gICogYXMgc3RydWN0IHVzZHRfc3BlYy4gRWFjaCBpbnZvY2F0aW9uIG9mIEJQRiBwcm9ncmFtIGF0IHJ1bnRpbWUgbmVlZHMgdG9cbiAgKiBrbm93IGl0cyBhc3NvY2lhdGVkIHNwZWMgSUQuIEl0IGdldHMgaXQgZWl0aGVyIHRocm91Z2ggQlBGIGNvb2tpZSwgd2hpY2hcbiAgKiBsaWJicGYgc2V0cyB0byBzcGVjIElEIGR1cmluZyBhdHRhY2ggdGltZSwgb3IsIGlmIGtlcm5lbCBpcyB0b28gb2xkIHRvXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jXG5pbmRleCA1MTM1ZDVjNzJhNDZkLi4xNThkOTVjMjUyMGJmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcbkBAIC0yMjEsNyAmIzQzOzIyMSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBjaGVja19hc2FuX2FyZ3MoczggX19hcmVuYSAqYWRkciwgc2l6ZV90IHNpemUsXG4gXHRcdGdvdG8gY29uZmlybWVkX3ZhbGlkO1xuIFxuIFx0Lypcbi1cdCAqIFdyYXBhcm91bmQgaXMgcG9zc2libGUgZm9yIHZhbHVlcyBjbG9zZSB0byB0aGUgdGhlIGVkZ2Ugb2YgdGhlXG4mIzQzO1x0ICogV3JhcGFyb3VuZCBpcyBwb3NzaWJsZSBmb3IgdmFsdWVzIGNsb3NlIHRvIHRoZSBlZGdlIG9mIHRoZVxuIFx0ICogNEdpQiBib3VuZGFyeSBvZiB0aGUgYXJlbmEgKGxhc3QgdmFsaWQgYWRkcmVzcyBpcyAxVUwgXHUwMDNjXHUwMDNjIDMyIC0gMSkuXG4gXHQgKlxuIFx0ICpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbmluZGV4IDFiMjVkNWM1ZjhmYjguLjhiOTZmYjg2MTM2ODggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuY1xuQEAgLTEzLDcgJiM0MzsxMyw3IEBAXG4gICogSVB2NiBoZWFkZXIgd2l0aCBhIFNlZ21lbnQgUm91dGluZyBIZWFkZXIsIHdpdGggc2VnbWVudHMgOlxuICAqXHRmZDAwOjoxIC1cdTAwM2UgZmQwMDo6MiAtXHUwMDNlIGZkMDA6OjMgLVx1MDAzZSBmZDAwOjo0XG4gICpcbi0gKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYmluZGVkIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxuJiM0MzsgKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYm91bmQgdG8gc2VnNmxvY2FsIEVuZC5CUEYgYWN0aW9ucyA6XG4gICogLSBmZDAwOjoxIDogYWRkIGEgVExWLCBjaGFuZ2UgdGhlIGZsYWdzIGFuZCBhcHBseSBhIEVuZC5YIGFjdGlvbiB0byBmYzQyOjoxXG4gICogLSBmZDAwOjoyIDogcmVtb3ZlIHRoZSBUTFYsIGNoYW5nZSB0aGUgZmxhZ3MsIGFkZCBhIHRhZ1xuICAqIC0gZmQwMDo6MyA6IGFwcGx5IGFuIEVuZC5UIGFjdGlvbiB0byBmZDAwOjo0LCB0aHJvdWdoIHJvdXRpbmcgdGFibGUgMTE3XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxuaW5kZXggOGFlNGZiMjAyN2Y3My4uOWYyOTcxZmM3Y2Q1NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxuQEAgLTI0Myw3ICYjNDM7MjQzLDcgQEAgc3RhdGljIHRsZF9rZXlfdCBfX3RsZF9jcmVhdGVfa2V5KGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLCBib29sIGR5bl9kYXRhKVxuIFx0XHR9XG4gXG4gXHRcdC8qXG4tXHRcdCAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcbiYjNDM7XHRcdCAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwIHRvIGEgcGFnZSB3aGlsZSBhdCBtb3N0XG4gXHRcdCAqIFRMRF9EWU5fREFUQV9TSVpFIGlzIGFsbG9jYXRlZCBmb3IgdGxkX2NyZWF0ZV9rZXkoKVxuIFx0XHQgKi9cbiBcdFx0aWYgKGR5bl9kYXRhKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jXG5pbmRleCA2MjQwNzhhYmYzZGVhLi5kN2UzMGVlNTc2YzkzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcbkBAIC03LDcgJiM0Mzs3LDcgQEBcbiBcbiBTRUMoXCYjMzQ7ZnJlcGxhY2UvYnRmX3VucmVsaWFibGVfa3Byb2JlXCYjMzQ7KVxuIC8qIGNvbnRleHQgdHlwZSBpcyB3aGF0IEJQRiB2ZXJpZmllciBleHBlY3RzIGZvciBrcHJvYmUgY29udGV4dCwgYnV0IHRhcmdldFxuLSAqIHByb2dyYW0gaGFzIGBzdHVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmVcbiYjNDM7ICogcHJvZ3JhbSBoYXMgYHN0cnVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmVcbiAgKiByZWplY3RlZCB3aXRoIHRoZSBmb2xsb3dpbmcgbWVzc2FnZTpcbiAgKlxuICAqIGFyZzAgcmVwbGFjZV9idGZfdW5yZWxpYWJsZV9rcHJvYmUoc3RydWN0IHB0X3JlZ3MgKikgZG9lc24mIzM5O3QgbWF0Y2ggYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCB3aGF0ZXZlciAqKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbmluZGV4IDYyZDdkZjllODBiZWIuLjM0MDY3MGU4OWJhOTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbkBAIC0xNTExLDcgJiM0MzsxNTExLDcgQEAgX19uYWtlZCBpbnQgY2hlY2twb2ludF9zdGF0ZXNfZGVsZXRpb24odm9pZClcbiBcdCAqIHdvdWxkIGdldCBlcXVhbCB0byBvbmUgb2YgdGhlIGV4cGxvcmVkIHN0YXRlcyBhbmQgdGh1cyBsb29wXG4gXHQgKiBleHBsb3JhdGlvbiB3b3VsZCBiZSBmaW5pc2hlZCAoYXQtbGVhc3QgZm9yIGEgc3BlY2lmaWMgcGF0aCkuXG4gXHQgKiBWZXJpZmllciBldmljdHMgZXhwbG9yZWQgc3RhdGVzIHdpdGggaGlnaCBtaXNzIHRvIGhpdCByYXRpb1xuLVx0ICogdG8gdG8gYXZvaWQgY29tcGFyaW5nIGN1cnJlbnQgc3RhdGUgd2l0aCB0b28gbWFueSBleHBsb3JlZFxuJiM0MztcdCAqIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWRcbiBcdCAqIHN0YXRlcyBwZXIgaW5zdHJ1Y3Rpb24uXG4gXHQgKiBUaGlzIHRlc3QgaXMgZGVzaWduZWQgdG8gXCYjMzQ7c3RyZXNzIHRlc3RcJiMzNDsgZXZpY3Rpb24gcG9saWN5IGRlZmluZWQgdXNpbmcgZm9ybXVsYTpcbiBcdCAqXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcbmluZGV4IGE2M2UzMzY3NTA5MTguLjIyN2RlYTBkYTNhMDUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXG5AQCAtMjI1LDcgJiM0MzsyMjUsNyBAQCBfX25ha2VkIHZvaWQgc3RhY2tfd3JpdGVfcHJpdl92c191bnByaXYodm9pZClcbiB9XG4gXG4gLyogU2ltaWxhciB0byB0aGUgcHJldmlvdXMgdGVzdCwgYnV0IHRoaXMgdGltZSBhbHNvIHBlcmZvcm0gYSByZWFkIGZyb20gdGhlXG4tICogYWRkcmVzcyB3cml0dGVuIHRvIHdpdGggYSB2YXJpYWJsZSBvZmZldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxuJiM0MzsgKiBhZGRyZXNzIHdyaXR0ZW4gdG8gd2l0aCBhIHZhcmlhYmxlIG9mZnNldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxuICAqIGFmdGVyIGEgdmFyaWFibGUtb2Zmc2V0IHdyaXRlLCBhIHByaXZpbGVnZWQgcHJvZ3JhbSBjYW4gcmVhZCB0aGUgc2xvdHMgdGhhdFxuICAqIHdlcmUgaW4gdGhlIHJhbmdlIG9mIHRoYXQgd3JpdGUgKGV2ZW4gaWYgdGhlIHZlcmlmaWVyIGRvZXNuJiMzOTt0IGFjdHVhbGx5IGtub3cgaWZcbiAgKiB0aGUgc2xvdCBiZWluZyByZWFkIHdhcyByZWFsbHkgd3JpdHRlbiB0byBvciBub3QuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjM6MDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIHNvbGVseSBvZiBjb21tZW50IHNwZWxsaW5nIGZpeGVzIGFjcm9zcyBrZXJuZWwgc291cmNlIGZpbGVzLCBoZWFkZXIgZmlsZXMsIGFuZCB0b29scy9zZWxmdGVzdHMuIE5vIGV4ZWN1dGFibGUgY29kZSwgZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIG9yIHJ1bnRpbWUgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGQ0ZDM0YWQ5MTFlNWI3ZWZkYzMzZjdmY2VlMmY0YTc1YjIwZjIzZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgU2VwIDUgMjM6MDA6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYwppbmRleCA5ZWRlODFhZmJjNTBlLi5iMWMyMWMwMTRjOWNmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmMKQEAgLTEzNDYsNyAmIzQzOzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYywKIAlhcm1fYnBmX3B1dF9yZWc2NChkc3QsIHJkLCBjdHgpOwogfQogCi0vKiBBcml0aG1hdGljIE9wZXJhdGlvbiAqLwomIzQzOy8qIEFyaXRobWV0aWMgT3BlcmF0aW9uICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9hcl9yKGNvbnN0IHU4IHJkLCBjb25zdCB1OCBydCwgY29uc3QgdTggcm0sCiAJCQkgICAgIGNvbnN0IHU4IHJuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1OCBvcCwKIAkJCSAgICAgYm9vbCBpc19qbXA2NCkgewpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jCmluZGV4IGJmZGM1MDc0MGRhOGUuLmNmOGMxYjQ5ZGEyNTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmMKQEAgLTIzLDcgJiM0MzsyMyw3IEBACiAgKgogICoJCVsJcHJldiBzcAkJXSAmbHQ7LS0tLS0tLS0tLS0tLQogICoJCVsgICBudiBncHIgc2F2ZSBhcmVhCV0gMTYgKiA0CXwKLSAqIGZwIChyMzEpIC0tJmd0OwlbICAgZWJwZiBzdGFjayBzcGFjZQldIHVwdG8gNTEyCXwKJiM0MzsgKiBmcCAocjMxKSAtLSZndDsJWyAgIGVicGYgc3RhY2sgc3BhY2UJXSB1cCB0byA1MTIJfAogICoJCVsgICAgIGZyYW1lIGhlYWRlcgldIDE2CQl8CiAgKiBzcCAocjEpIC0tLSZndDsJWyAgICBzdGFjayBwb2ludGVyCV0gLS0tLS0tLS0tLS0tLS0KICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IGZjOWRiNjkxZTgyMDMuLjhhMWEwMDAyNmM2OWYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMKQEAgLTIzLDcgJiM0MzsyMyw3IEBACiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZToKICAqIExheW91dCB3aGVuIHNldHRpbmcgdXAgb3VyIG93biBzdGFjayBmcmFtZS4KICAqIE5vdGU6IHIxIGF0IGJvdHRvbSwgY29tcG9uZW50IG9mZnNldHMgcG9zaXRpdmUgd3J0IHIxLgotICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50CiYjNDM7ICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXAgdG8gbG9jYWxfdG1wX3Zhcikgc3RheXMgY29uc2lzdGVudAogICogd2l0aCBvdXIgcmVkem9uZSB1c2FnZS4KICAqCiAgKiB0YWlsX2NhbGxfaW5mbyAtIHN0b3JlcyB0YWlsY2FsbCBjb3VudCB2YWx1ZSBpbiBtYWluIHByb2dyYW0mIzM5O3MKQEAgLTM1LDcgJiM0MzszNSw3IEBACiAgKgkJWyAgIG52IGdwciBzYXZlIGFyZWEJXSAoNiAqIDgpCXwKICAqCQlbIGFkZGwuIG52IGdwciBzYXZlIGFyZWFdICgxMiAqIDgpCXwgJmx0Oy0tLSBleGNlcHRpb24gYm91bmRhcnkvY2FsbGJhY2sgcHJvZ3JhbQogICoJCVsgICAgbG9jYWxfdG1wX3ZhcgldIDI0CQl8Ci0gKiBmcCAocjMxKSAtLSZndDsJWyAgIGVicGYgc3RhY2sgc3BhY2UJXSB1cHRvIDUxMgl8CiYjNDM7ICogZnAgKHIzMSkgLS0mZ3Q7CVsgICBlYnBmIHN0YWNrIHNwYWNlCV0gdXAgdG8gNTEyCXwKICAqCQlbICAgICBmcmFtZSBoZWFkZXIJXSAzMi8xMTIJfAogICogc3AgKHIxKSAtLS0mZ3Q7CVsgICAgc3RhY2sgcG9pbnRlcgldIC0tLS0tLS0tLS0tLS0tCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlMKaW5kZXggYTJlMjhlMDQ2NGEzMy4uODE0MzBmMDY1YWM5NyAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TCkBAIC0xOTUsNyAmIzQzOzE5NSw3IEBAIGJwZl9lcnJvcjoKIAkvKiBNYWtlIHRoZSBKSVQgcHJvZ3JhbSByZXR1cm4gemVyby4gIFRoZSBKSVQgZXBpbG9ndWUKIAkgKiBzdG9yZXMgYXdheSB0aGUgb3JpZ2luYWwgJW83IGludG8gcl9zYXZlZF9PNy4gIFRoZQogCSAqIG5vcm1hbCBsZWFmIGZ1bmN0aW9uIHJldHVybiBpcyB0byB1c2UgJiMzNDtyZXRsJiMzNDsgd2hpY2gKLQkgKiB3b3VsZCBldmFsdXRlIHRvICYjMzQ7am1wbCAlbzcgJiM0MzsgOCwgJWcwJiMzNDsgYnV0IHdlIHdhbnQgdG8KJiM0MzsJICogd291bGQgZXZhbHVhdGUgdG8gJiMzNDtqbXBsICVvNyAmIzQzOyA4LCAlZzAmIzM0OyBidXQgd2Ugd2FudCB0bwogCSAqIHVzZSB0aGUgc2F2ZWQgdmFsdWUgdGh1cyB0aGUgc2VxdWVuY2UgeW91IHNlZSBoZXJlLgogCSAqLwogCWptcGwJcl9zYXZlZF9PNyAmIzQzOyA4LCAlZzAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmggYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oCmluZGV4IDRhOWJjNmE4NDhmMmUuLjBhMDY3YzJlOTIzZGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaApAQCAtMTQ3LDcgJiM0MzsxNDcsNyBAQCBzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlcjsKICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pCQkJCVwKIAlCUEZfQUxVMzJfSU1NX09GRihPUCwgRFNULCBJTU0sIDApCiAKLS8qIEVuZGlhbmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqLwomIzQzOy8qIEVuZGlhbm5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi8KIAogI2RlZmluZSBCUEZfRU5ESUFOKFRZUEUsIERTVCwgTEVOKQkJCQlcCiAJKChzdHJ1Y3QgYnBmX2luc24pIHsJCQkJCVwKQEAgLTEwMjksNyAmIzQzOzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIHU4ICpicGZfc2tiX2NiKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCiAJICoKIAkgKiBJbiBzb21lIHNvY2tldCBmaWx0ZXIgY2FzZXMsIHRoZSBjYiB1bmZvcnR1bmF0ZWx5IG5lZWRzIHRvIGJlCiAJICogc2F2ZWQvcmVzdG9yZWQgc28gdGhhdCBwcm90b2NvbCBzcGVjaWZpYyBza2ItJmd0O2NiW10gZGF0YSB3b24mIzM5O3QKLQkgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWRnZWQgZUJQRiBwcm9ncmFtcwomIzQzOwkgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWdlZCBlQlBGIHByb2dyYW1zCiAJICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWEKIAkgKiB0byBub3QgbGVhayBwcmV2aW91cyBjb250ZW50cyB0byB1c2VyIHNwYWNlLgogCSAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuYyBiL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmMKaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jCkBAIC0yMDcsNyAmIzQzOzIwNyw3IEBAIHJldXNlcG9ydF9hcnJheV91cGRhdGVfY2hlY2soY29uc3Qgc3RydWN0IHJldXNlcG9ydF9hcnJheSAqYXJyYXksCiAJCXJldHVybiAtRU5PVFNVUFA7CiAKIAkvKgotCSAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYmluZGVkCiYjNDM7CSAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYm91bmQKIAkgKiBpbiB0aGUgVURQIGNhc2UpIGFuZAogCSAqIGl0IG11c3QgYWxzbyBiZSBhIFNPX1JFVVNFUE9SVCBzayAoaS5lLiByZXVzZSBjYW5ub3QgYmUgTlVMTCkuCiAJICoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvc3RyZWFtLmMgYi9rZXJuZWwvYnBmL3N0cmVhbS5jCmluZGV4IGJlOWNlOThlOTQ2OTIuLjU0ZjViZTEyODlkMmIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvc3RyZWFtLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9zdHJlYW0uYwpAQCAtMjQsNyAmIzQzOzI0LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfc3RyZWFtX2VsZW0gKmJwZl9zdHJlYW1fZWxlbV9hbGxvYyhpbnQgbGVuKQogCS8qCiAJICogTGVuZ3RoIGRlbm90ZXMgdGhlIGFtb3VudCBvZiBkYXRhIHRvIGJlIHdyaXR0ZW4gYXMgcGFydCBvZiBzdHJlYW0gZWxlbWVudCwKIAkgKiB0aHVzIGluY2x1ZGVzICYjMzk7XDAmIzM5OyBieXRlLiBXZSYjMzk7cmUgY2FwcGVkIGJ5IGhvdyBtdWNoIGJwZl9icHJpbnRmX2J1ZmZlcnMgY2FuCi0JICogYWNjb21vZGF0ZSwgdGhlcmVmb3JlIGRlbnkgYWxsb2NhdGlvbnMgdGhhdCB3b24mIzM5O3QgZml0IGludG8gdGhlbS4KJiM0MzsJICogYWNjb21tb2RhdGUsIHRoZXJlZm9yZSBkZW55IGFsbG9jYXRpb25zIHRoYXQgd29uJiMzOTt0IGZpdCBpbnRvIHRoZW0uCiAJICovCiAJaWYgKGxlbiAmbHQ7IDAgfHwgbGVuICZndDsgbWF4X2xlbikKIAkJcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2J0Zi5jIGIvdG9vbHMvbGliL2JwZi9idGYuYwppbmRleCA4NDE3ZGU5MmQwMjgyLi5jMTc0NWJlZTM3YzBhIDEwMDY0NAotLS0gYS90b29scy9saWIvYnBmL2J0Zi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2xpYi9icGYvYnRmLmMKQEAgLTM4NDMsNyAmIzQzOzM4NDMsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kZWR1cF9yZW1hcF90eXBlcyhzdHJ1Y3QgYnRmX2RlZHVwICpkKTsKICAqIHR5cGVzLCBpbiBnZW5lcmFsLCBjYW4gZm9ybSBncmFwaHMgY29udGFpbmluZyBjeWNsZXMsIG5vdCBqdXN0IERBR3MuCiAgKgogICogV2hpbGUgYWxnb3JpdGhtIGRvZXMgZGVkdXBsaWNhdGlvbiwgaXQgYWxzbyBtZXJnZXMgYW5kIHJlc29sdmVzIHR5cGUKLSAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaHQgYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS4KJiM0MzsgKiBpbmZvcm1hdGlvbiAodW5sZXNzIGRpc2FibGVkIHRocm91Z2ggYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS4KICAqIEUuZy4sIGluIHRoZSBleGFtcGxlIGFib3ZlIHdpdGggdHdvIGNvbXBpbGF0aW9uIHVuaXRzIGhhdmluZyBwYXJ0aWFsIHR5cGUKICAqIGluZm9ybWF0aW9uIGZvciBzdHJ1Y3RzIGBBYCBhbmQgYEJgLCB0aGUgb3V0cHV0IG9mIGFsZ29yaXRobSB3aWxsIGVtaXQKICAqIGEgc2luZ2xlIGNvcHkgb2YgZWFjaCBCVEYgdHlwZSB0aGF0IGRlc2NyaWJlcyBzdHJ1Y3RzIGBBYCwgYEJgLCBhbmQgYFNgCkBAIC01NjQ0LDcgJiM0Mzs1NjQ0LDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVzb2x2ZV9md2RzKHN0cnVjdCBidGZfZGVkdXAgKmQpCiAgKgogICogQWZ0ZXIgd2UgZXN0YWJsaXNoZWQgZm9yIGVhY2ggdHlwZSBpdHMgY29ycmVzcG9uZGluZyBjYW5vbmljYWwgcmVwcmVzZW50YXRpdmUKICAqIHR5cGUsIHdlIG5vdyBjYW4gZWxpbWluYXRlIHR5cGVzIHRoYXQgYXJlIG5vdCBjYW5vbmljYWwgYW5kIGxlYXZlIG9ubHkKLSAqIGNhbm9uaWNhbCBvbmVzIGxheWVkIG91dCBzZXF1ZW50aWFsbHkgaW4gbWVtb3J5IGJ5IGNvcHlpbmcgdGhlbSBvdmVyCiYjNDM7ICogY2Fub25pY2FsIG9uZXMgbGFpZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlcgogICogZHVwbGljYXRlcy4gRHVyaW5nIGNvbXBhY3Rpb24gYnRmX2RlZHVwLSZndDtoeXBvdF9tYXAgYXJyYXkgaXMgcmV1c2VkIHRvIHN0b3JlCiAgKiBhIG1hcCBmcm9tIG9yaWdpbmFsIHR5cGUgSUQgdG8gYSBuZXcgY29tcGFjdGVkIHR5cGUgSUQsIHdoaWNoIHdpbGwgYmUgdXNlZAogICogZHVyaW5nIG5leHQgcGhhc2UgdG8gJiMzNDtmaXggdXAmIzM0OyB0eXBlIElEcywgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdC91bmlvbiBhbmQKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvdXNkdC5jIGIvdG9vbHMvbGliL2JwZi91c2R0LmMKaW5kZXggMmU1NmUzYWI1YjZjYy4uYzA5MzM1ODA5MzBiYyAxMDA2NDQKLS0tIGEvdG9vbHMvbGliL2JwZi91c2R0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi91c2R0LmMKQEAgLTE0NCw3ICYjNDM7MTQ0LDcgQEAKICAqIGFib3V0LiBUaGlzIHN0YXRlIGhhcyB0byBiZSBtYWludGFpbmVkIHBlci1CUEYgb2JqZWN0IGFuZCBjb29yZGluYXRlCiAgKiBiZXR3ZWVuIGRpZmZlcmVudCBVU0RUIGF0dGFjaG1lbnRzIHdpdGhpbiB0aGUgc2FtZSBCUEYgb2JqZWN0LgogICoKLSAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxheWVkIG91dAomIzQzOyAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxhaWQgb3V0CiAgKiBhcyBzdHJ1Y3QgdXNkdF9zcGVjLiBFYWNoIGludm9jYXRpb24gb2YgQlBGIHByb2dyYW0gYXQgcnVudGltZSBuZWVkcyB0bwogICoga25vdyBpdHMgYXNzb2NpYXRlZCBzcGVjIElELiBJdCBnZXRzIGl0IGVpdGhlciB0aHJvdWdoIEJQRiBjb29raWUsIHdoaWNoCiAgKiBsaWJicGYgc2V0cyB0byBzcGVjIElEIGR1cmluZyBhdHRhY2ggdGltZSwgb3IsIGlmIGtlcm5lbCBpcyB0b28gb2xkIHRvCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMKaW5kZXggNTEzNWQ1YzcyYTQ2ZC4uMTU4ZDk1YzI1MjBiZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYwpAQCAtMjIxLDcgJiM0MzsyMjEsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2hlY2tfYXNhbl9hcmdzKHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzaXplLAogCQlnb3RvIGNvbmZpcm1lZF92YWxpZDsKIAogCS8qCi0JICogV3JhcGFyb3VuZCBpcyBwb3NzaWJsZSBmb3IgdmFsdWVzIGNsb3NlIHRvIHRoZSB0aGUgZWRnZSBvZiB0aGUKJiM0MzsJICogV3JhcGFyb3VuZCBpcyBwb3NzaWJsZSBmb3IgdmFsdWVzIGNsb3NlIHRvIHRoZSBlZGdlIG9mIHRoZQogCSAqIDRHaUIgYm91bmRhcnkgb2YgdGhlIGFyZW5hIChsYXN0IHZhbGlkIGFkZHJlc3MgaXMgMVVMICZsdDsmbHQ7IDMyIC0gMSkuCiAJICoKIAkgKgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jCmluZGV4IDFiMjVkNWM1ZjhmYjguLjhiOTZmYjg2MTM2ODggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMKQEAgLTEzLDcgJiM0MzsxMyw3IEBACiAgKiBJUHY2IGhlYWRlciB3aXRoIGEgU2VnbWVudCBSb3V0aW5nIEhlYWRlciwgd2l0aCBzZWdtZW50cyA6CiAgKglmZDAwOjoxIC0mZ3Q7IGZkMDA6OjIgLSZndDsgZmQwMDo6MyAtJmd0OyBmZDAwOjo0CiAgKgotICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJpbmRlZCB0byBzZWc2bG9jYWwgRW5kLkJQRiBhY3Rpb25zIDoKJiM0MzsgKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYm91bmQgdG8gc2VnNmxvY2FsIEVuZC5CUEYgYWN0aW9ucyA6CiAgKiAtIGZkMDA6OjEgOiBhZGQgYSBUTFYsIGNoYW5nZSB0aGUgZmxhZ3MgYW5kIGFwcGx5IGEgRW5kLlggYWN0aW9uIHRvIGZjNDI6OjEKICAqIC0gZmQwMDo6MiA6IHJlbW92ZSB0aGUgVExWLCBjaGFuZ2UgdGhlIGZsYWdzLCBhZGQgYSB0YWcKICAqIC0gZmQwMDo6MyA6IGFwcGx5IGFuIEVuZC5UIGFjdGlvbiB0byBmZDAwOjo0LCB0aHJvdWdoIHJvdXRpbmcgdGFibGUgMTE3CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oCmluZGV4IDhhZTRmYjIwMjdmNzMuLjlmMjk3MWZjN2NkNTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oCkBAIC0yNDMsNyAmIzQzOzI0Myw3IEBAIHN0YXRpYyB0bGRfa2V5X3QgX190bGRfY3JlYXRlX2tleShjb25zdCBjaGFyICpuYW1lLCBzaXplX3Qgc2l6ZSwgYm9vbCBkeW5fZGF0YSkKIAkJfQogCiAJCS8qCi0JCSAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3QKJiM0MzsJCSAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwIHRvIGEgcGFnZSB3aGlsZSBhdCBtb3N0CiAJCSAqIFRMRF9EWU5fREFUQV9TSVpFIGlzIGFsbG9jYXRlZCBmb3IgdGxkX2NyZWF0ZV9rZXkoKQogCQkgKi8KIAkJaWYgKGR5bl9kYXRhKSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMKaW5kZXggNjI0MDc4YWJmM2RlYS4uZDdlMzBlZTU3NmM5MyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuYwpAQCAtNyw3ICYjNDM7Nyw3IEBACiAKIFNFQygmIzM0O2ZyZXBsYWNlL2J0Zl91bnJlbGlhYmxlX2twcm9iZSYjMzQ7KQogLyogY29udGV4dCB0eXBlIGlzIHdoYXQgQlBGIHZlcmlmaWVyIGV4cGVjdHMgZm9yIGtwcm9iZSBjb250ZXh0LCBidXQgdGFyZ2V0Ci0gKiBwcm9ncmFtIGhhcyBgc3R1Y3Qgd2hhdGV2ZXIgKmN0eGAgYXJndW1lbnQsIHNvIGZyZXBsYWNlIG9wZXJhdGlvbiB3aWxsIGJlCiYjNDM7ICogcHJvZ3JhbSBoYXMgYHN0cnVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmUKICAqIHJlamVjdGVkIHdpdGggdGhlIGZvbGxvd2luZyBtZXNzYWdlOgogICoKICAqIGFyZzAgcmVwbGFjZV9idGZfdW5yZWxpYWJsZV9rcHJvYmUoc3RydWN0IHB0X3JlZ3MgKikgZG9lc24mIzM5O3QgbWF0Y2ggYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCB3aGF0ZXZlciAqKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwppbmRleCA2MmQ3ZGY5ZTgwYmViLi4zNDA2NzBlODliYTkyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwpAQCAtMTUxMSw3ICYjNDM7MTUxMSw3IEBAIF9fbmFrZWQgaW50IGNoZWNrcG9pbnRfc3RhdGVzX2RlbGV0aW9uKHZvaWQpCiAJICogd291bGQgZ2V0IGVxdWFsIHRvIG9uZSBvZiB0aGUgZXhwbG9yZWQgc3RhdGVzIGFuZCB0aHVzIGxvb3AKIAkgKiBleHBsb3JhdGlvbiB3b3VsZCBiZSBmaW5pc2hlZCAoYXQtbGVhc3QgZm9yIGEgc3BlY2lmaWMgcGF0aCkuCiAJICogVmVyaWZpZXIgZXZpY3RzIGV4cGxvcmVkIHN0YXRlcyB3aXRoIGhpZ2ggbWlzcyB0byBoaXQgcmF0aW8KLQkgKiB0byB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkCiYjNDM7CSAqIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWQKIAkgKiBzdGF0ZXMgcGVyIGluc3RydWN0aW9uLgogCSAqIFRoaXMgdGVzdCBpcyBkZXNpZ25lZCB0byAmIzM0O3N0cmVzcyB0ZXN0JiMzNDsgZXZpY3Rpb24gcG9saWN5IGRlZmluZWQgdXNpbmcgZm9ybXVsYToKIAkgKgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMKaW5kZXggYTYzZTMzNjc1MDkxOC4uMjI3ZGVhMGRhM2EwNSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jCkBAIC0yMjUsNyAmIzQzOzIyNSw3IEBAIF9fbmFrZWQgdm9pZCBzdGFja193cml0ZV9wcml2X3ZzX3VucHJpdih2b2lkKQogfQogCiAvKiBTaW1pbGFyIHRvIHRoZSBwcmV2aW91cyB0ZXN0LCBidXQgdGhpcyB0aW1lIGFsc28gcGVyZm9ybSBhIHJlYWQgZnJvbSB0aGUKLSAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2ZmZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCwKJiM0MzsgKiBhZGRyZXNzIHdyaXR0ZW4gdG8gd2l0aCBhIHZhcmlhYmxlIG9mZnNldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LAogICogYWZ0ZXIgYSB2YXJpYWJsZS1vZmZzZXQgd3JpdGUsIGEgcHJpdmlsZWdlZCBwcm9ncmFtIGNhbiByZWFkIHRoZSBzbG90cyB0aGF0CiAgKiB3ZXJlIGluIHRoZSByYW5nZSBvZiB0aGF0IHdyaXRlIChldmVuIGlmIHRoZSB2ZXJpZmllciBkb2VzbiYjMzk7dCBhY3R1YWxseSBrbm93IGlmCiAgKiB0aGUgc2xvdCBiZWluZyByZWFkIHdhcyByZWFsbHkgd3JpdHRlbiB0byBvciBub3QuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDIzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNTQKCQkJCQkJCW91dHB1dDogNzEKCQkJCQkJCXRob3VnaHRzOiA2NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXMgYW5kIERldGVybWluYXRpb24gb2YgV29ydGhGdXp6aW5nIFN0YXR1cyoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBzY2FuIG9mIHRoZSBkaWZmIHJldmVhbHMgdGhhdCAqZXZlcnkgc2luZ2xlKiBjaGFuZ2UgaXMgYSBjb21tZW50IHNwZWxsaW5nIGZpeC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY29ycmVjdGlvbnMgdG8gY29tbWVudHMgYWNyb3NzIGEgdmFyaWV0eSBvZiBmaWxlczogYGFyY2gvYXJtYCwgYGFyY2gvcG93ZXJwY2AsIGBhcmNoL3NwYXJjYCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSwgdGhlIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCBoZWFkZXIsIHRoZSBga2VybmVsL2JwZmAgZGlyZWN0b3J5LCBhbmQgZXZlbiB0aGUgYHRvb2xzL2xpYi9icGZgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmYCBkaXJlY3Rvcmllcy4gTm90aGluZyB0b3VjaGVzIGFjdHVhbCBleGVjdXRhYmxlIGNvZGUsIHJ1bnRpbWUgY2hlY2tzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHRoZSB1bmRlcmx5aW5nIGxvZ2ljLiBJdCYjMzk7cyBhbGwgYWJvdXQgaW1wcm92aW5nIHRoZSByZWFkYWJpbGl0eSBvZiB0aGUgY29tbWVudHMuCgpOb3csIGxldCYjMzk7cyBhcHBseSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZnJvbSB0aGUgaW5zdHJ1Y3Rpb25zIHRvIHRoaXMgcGF0Y2guIFRoZSBpbnN0cnVjdGlvbnMgZGVmaW5lIHNwZWNpZmljIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBzaG91bGQgYmUgc2V0IHRvIGZhbHNlLiBDb25kaXRpb24gbnVtYmVyIHR3byBpcyBjbGVhcmx5IHJlbGV2YW50IGhlcmU6IGl0IGxpc3RzIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGFuZCBzcGVsbGluZyBmaXhlcyBhcyBmYWxsaW5nIHVuZGVyIHRoZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGNhdGVnb3J5LiBUaGlzIHBhdGNoJiMzOTtzIGVudGlyZXR5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4gV2UmIzM5O3JlICpvbmx5KiBkZWFsaW5nIHdpdGggY29tbWVudCBjb3JyZWN0aW9ucywgaW5jbHVkaW5nIGluIHNlbGZ0ZXN0cy4KClRoZXJlZm9yZSwgYmVjYXVzZSBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIHN0cmljdGx5IGNvbW1lbnQgc3BlbGxpbmcgZml4ZXMgYWNyb3NzIHRoZSBrZXJuZWwsIGhlYWRlcnMsIHNvdXJjZSBmaWxlcywgdG9vbHMgYW5kIHNlbGZ0ZXN0cywgSSBjb25jbHVkZSB0aGF0IGBXb3J0aEZ1enppbmdgIGFic29sdXRlbHkgbXVzdCBiZSBmYWxzZSBpbiB0aGlzIHNjZW5hcmlvLiBDb25zZXF1ZW50bHksIHRoZSBgRm9jdXNTeW1ib2xzYCBzZXQgc2hvdWxkIGFsc28gYmUgZW1wdHksIGFzIHRoZXJlIGFyZSBubyBzeW1ib2xzIHRvIGZvY3VzIG9uLiBTaW1pbGFybHksIHRoZSBgRW5hYmxlQ29uZmlnc2Agc2V0IHNob3VsZCBhbHNvIGJlIGVtcHR5LiBXZSBoYXZlIG5vdGhpbmcgaGVyZSB0aGF0IHdhcnJhbnRzIGZ1enppbmcgb3IgZW5hYmxpbmcgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCkkmIzM5O2xsIHByb2NlZWQgdG8gdmVyaWZ5IHRoZXNlIHNldHRpbmdzIHVzaW5nIHRoZSBwcm9wZXIgc2V0LXJlc3VsdHMgdG9vbCBjYWxsIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgc29sZWx5IG9mIGNvbW1lbnQgc3BlbGxpbmcgZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGhlYWRlciBmaWxlcywgYW5kIHRvb2xzL3NlbGZ0ZXN0cy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBkYXRhIHN0cnVjdHVyZXMsIGNvbnRyb2wgZmxvdywgb3IgcnVudGltZSBhc3NlcnRpb25zIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBzb2xlbHkgb2YgY29tbWVudCBzcGVsbGluZyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgaGVhZGVyIGZpbGVzLCBhbmQgdG9vbHMvc2VsZnRlc3RzLiBObyBleGVjdXRhYmxlIGNvZGUsIGRhdGEgc3RydWN0dXJlcywgY29udHJvbCBmbG93LCBvciBydW50aW1lIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAyMzowMDwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMjM6MDA6MzguNjU2OTU3NTA0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxMzA3MzgyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBzb2xlbHkgb2YgY29tbWVudCBzcGVsbGluZyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgaGVhZGVyIGZpbGVzLCBhbmQgdG9vbHMvc2VsZnRlc3RzLiBObyBleGVjdXRhYmxlIGNvZGUsIGRhdGEgc3RydWN0dXJlcywgY29udHJvbCBmbG93LCBvciBydW50aW1lIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMjM6MDA6MzguNjU2OTYyMjY0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgxOTc3Njk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGQ0ZDM0YWQ5MTFlNWI3ZWZkYzMzZjdmY2VlMmY0YTc1YjIwZjIzZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IFNlcCA1IDIzOjAwOjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmMgYi9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXFxuaW5kZXggOWVkZTgxYWZiYzUwZS4uYjFjMjFjMDE0YzljZiAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXFxuKysrIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY1xcbkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYyxcXG4gXFx0YXJtX2JwZl9wdXRfcmVnNjQoZHN0LCByZCwgY3R4KTtcXG4gfVxcbiBcXG4tLyogQXJpdGhtYXRpYyBPcGVyYXRpb24gKi9cXG4rLyogQXJpdGhtZXRpYyBPcGVyYXRpb24gKi9cXG4gc3RhdGljIGlubGluZSB2b2lkIGVtaXRfYXJfcihjb25zdCB1OCByZCwgY29uc3QgdTggcnQsIGNvbnN0IHU4IHJtLFxcbiBcXHRcXHRcXHQgICAgIGNvbnN0IHU4IHJuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1OCBvcCxcXG4gXFx0XFx0XFx0ICAgICBib29sIGlzX2ptcDY0KSB7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbmluZGV4IGJmZGM1MDc0MGRhOGUuLmNmOGMxYjQ5ZGEyNTcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXFxuKysrIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTIzLDcgKzIzLDcgQEBcXG4gICpcXG4gICpcXHRcXHRbXFx0cHJldiBzcFxcdFxcdF0gXFx1MDAzYy0tLS0tLS0tLS0tLS1cXG4gICpcXHRcXHRbICAgbnYgZ3ByIHNhdmUgYXJlYVxcdF0gMTYgKiA0XFx0fFxcbi0gKiBmcCAocjMxKSAtLVxcdTAwM2VcXHRbICAgZWJwZiBzdGFjayBzcGFjZVxcdF0gdXB0byA1MTJcXHR8XFxuKyAqIGZwIChyMzEpIC0tXFx1MDAzZVxcdFsgICBlYnBmIHN0YWNrIHNwYWNlXFx0XSB1cCB0byA1MTJcXHR8XFxuICAqXFx0XFx0WyAgICAgZnJhbWUgaGVhZGVyXFx0XSAxNlxcdFxcdHxcXG4gICogc3AgKHIxKSAtLS1cXHUwMDNlXFx0WyAgICBzdGFjayBwb2ludGVyXFx0XSAtLS0tLS0tLS0tLS0tLVxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggZmM5ZGI2OTFlODIwMy4uOGExYTAwMDI2YzY5ZiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5AQCAtMjMsNyArMjMsNyBAQFxcbiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZTpcXG4gICogTGF5b3V0IHdoZW4gc2V0dGluZyB1cCBvdXIgb3duIHN0YWNrIGZyYW1lLlxcbiAgKiBOb3RlOiByMSBhdCBib3R0b20sIGNvbXBvbmVudCBvZmZzZXRzIHBvc2l0aXZlIHdydCByMS5cXG4tICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50XFxuKyAqIEVuc3VyZSB0aGUgdG9wIGhhbGYgKHVwIHRvIGxvY2FsX3RtcF92YXIpIHN0YXlzIGNvbnNpc3RlbnRcXG4gICogd2l0aCBvdXIgcmVkem9uZSB1c2FnZS5cXG4gICpcXG4gICogdGFpbF9jYWxsX2luZm8gLSBzdG9yZXMgdGFpbGNhbGwgY291bnQgdmFsdWUgaW4gbWFpbiBwcm9ncmFtJ3NcXG5AQCAtMzUsNyArMzUsNyBAQFxcbiAgKlxcdFxcdFsgICBudiBncHIgc2F2ZSBhcmVhXFx0XSAoNiAqIDgpXFx0fFxcbiAgKlxcdFxcdFsgYWRkbC4gbnYgZ3ByIHNhdmUgYXJlYV0gKDEyICogOClcXHR8IFxcdTAwM2MtLS0gZXhjZXB0aW9uIGJvdW5kYXJ5L2NhbGxiYWNrIHByb2dyYW1cXG4gICpcXHRcXHRbICAgIGxvY2FsX3RtcF92YXJcXHRdIDI0XFx0XFx0fFxcbi0gKiBmcCAocjMxKSAtLVxcdTAwM2VcXHRbICAgZWJwZiBzdGFjayBzcGFjZVxcdF0gdXB0byA1MTJcXHR8XFxuKyAqIGZwIChyMzEpIC0tXFx1MDAzZVxcdFsgICBlYnBmIHN0YWNrIHNwYWNlXFx0XSB1cCB0byA1MTJcXHR8XFxuICAqXFx0XFx0WyAgICAgZnJhbWUgaGVhZGVyXFx0XSAzMi8xMTJcXHR8XFxuICAqIHNwIChyMSkgLS0tXFx1MDAzZVxcdFsgICAgc3RhY2sgcG9pbnRlclxcdF0gLS0tLS0tLS0tLS0tLS1cXG4gICpcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcXG5pbmRleCBhMmUyOGUwNDY0YTMzLi44MTQzMGYwNjVhYzk3IDEwMDY0NFxcbi0tLSBhL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcXG4rKysgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXFxuQEAgLTE5NSw3ICsxOTUsNyBAQCBicGZfZXJyb3I6XFxuIFxcdC8qIE1ha2UgdGhlIEpJVCBwcm9ncmFtIHJldHVybiB6ZXJvLiAgVGhlIEpJVCBlcGlsb2d1ZVxcbiBcXHQgKiBzdG9yZXMgYXdheSB0aGUgb3JpZ2luYWwgJW83IGludG8gcl9zYXZlZF9PNy4gIFRoZVxcbiBcXHQgKiBub3JtYWwgbGVhZiBmdW5jdGlvbiByZXR1cm4gaXMgdG8gdXNlIFxcXCJyZXRsXFxcIiB3aGljaFxcbi1cXHQgKiB3b3VsZCBldmFsdXRlIHRvIFxcXCJqbXBsICVvNyArIDgsICVnMFxcXCIgYnV0IHdlIHdhbnQgdG9cXG4rXFx0ICogd291bGQgZXZhbHVhdGUgdG8gXFxcImptcGwgJW83ICsgOCwgJWcwXFxcIiBidXQgd2Ugd2FudCB0b1xcbiBcXHQgKiB1c2UgdGhlIHNhdmVkIHZhbHVlIHRodXMgdGhlIHNlcXVlbmNlIHlvdSBzZWUgaGVyZS5cXG4gXFx0ICovXFxuIFxcdGptcGxcXHRyX3NhdmVkX083ICsgOCwgJWcwXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmggYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuaW5kZXggNGE5YmM2YTg0OGYyZS4uMGEwNjdjMmU5MjNkYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IGN0bF90YWJsZV9oZWFkZXI7XFxuICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRCUEZfQUxVMzJfSU1NX09GRihPUCwgRFNULCBJTU0sIDApXFxuIFxcbi0vKiBFbmRpYW5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi9cXG4rLyogRW5kaWFubmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xcbiBcXG4gI2RlZmluZSBCUEZfRU5ESUFOKFRZUEUsIERTVCwgTEVOKVxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0KChzdHJ1Y3QgYnBmX2luc24pIHtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTEwMjksNyArMTAyOSw3IEBAIHN0YXRpYyBpbmxpbmUgdTggKmJwZl9za2JfY2IoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0ICpcXG4gXFx0ICogSW4gc29tZSBzb2NrZXQgZmlsdGVyIGNhc2VzLCB0aGUgY2IgdW5mb3J0dW5hdGVseSBuZWVkcyB0byBiZVxcbiBcXHQgKiBzYXZlZC9yZXN0b3JlZCBzbyB0aGF0IHByb3RvY29sIHNwZWNpZmljIHNrYi1cXHUwMDNlY2JbXSBkYXRhIHdvbid0XFxuLVxcdCAqIGJlIGxvc3QuIEluIGFueSBjYXNlLCBkdWUgdG8gdW5wcml2aWxlZGdlZCBlQlBGIHByb2dyYW1zXFxuK1xcdCAqIGJlIGxvc3QuIEluIGFueSBjYXNlLCBkdWUgdG8gdW5wcml2aWxlZ2VkIGVCUEYgcHJvZ3JhbXNcXG4gXFx0ICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWFcXG4gXFx0ICogdG8gbm90IGxlYWsgcHJldmlvdXMgY29udGVudHMgdG8gdXNlciBzcGFjZS5cXG4gXFx0ICovXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmMgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXFxuaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXFxuKysrIGIva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xcbkBAIC0yMDcsNyArMjA3LDcgQEAgcmV1c2Vwb3J0X2FycmF5X3VwZGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgcmV1c2Vwb3J0X2FycmF5ICphcnJheSxcXG4gXFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYmluZGVkXFxuK1xcdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYm91bmRcXG4gXFx0ICogaW4gdGhlIFVEUCBjYXNlKSBhbmRcXG4gXFx0ICogaXQgbXVzdCBhbHNvIGJlIGEgU09fUkVVU0VQT1JUIHNrIChpLmUuIHJldXNlIGNhbm5vdCBiZSBOVUxMKS5cXG4gXFx0ICpcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9zdHJlYW0uYyBiL2tlcm5lbC9icGYvc3RyZWFtLmNcXG5pbmRleCBiZTljZTk4ZTk0NjkyLi41NGY1YmUxMjg5ZDJiIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvc3RyZWFtLmNcXG4rKysgYi9rZXJuZWwvYnBmL3N0cmVhbS5jXFxuQEAgLTI0LDcgKzI0LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfc3RyZWFtX2VsZW0gKmJwZl9zdHJlYW1fZWxlbV9hbGxvYyhpbnQgbGVuKVxcbiBcXHQvKlxcbiBcXHQgKiBMZW5ndGggZGVub3RlcyB0aGUgYW1vdW50IG9mIGRhdGEgdG8gYmUgd3JpdHRlbiBhcyBwYXJ0IG9mIHN0cmVhbSBlbGVtZW50LFxcbiBcXHQgKiB0aHVzIGluY2x1ZGVzICdcXFxcMCcgYnl0ZS4gV2UncmUgY2FwcGVkIGJ5IGhvdyBtdWNoIGJwZl9icHJpbnRmX2J1ZmZlcnMgY2FuXFxuLVxcdCAqIGFjY29tb2RhdGUsIHRoZXJlZm9yZSBkZW55IGFsbG9jYXRpb25zIHRoYXQgd29uJ3QgZml0IGludG8gdGhlbS5cXG4rXFx0ICogYWNjb21tb2RhdGUsIHRoZXJlZm9yZSBkZW55IGFsbG9jYXRpb25zIHRoYXQgd29uJ3QgZml0IGludG8gdGhlbS5cXG4gXFx0ICovXFxuIFxcdGlmIChsZW4gXFx1MDAzYyAwIHx8IGxlbiBcXHUwMDNlIG1heF9sZW4pXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2J0Zi5jIGIvdG9vbHMvbGliL2JwZi9idGYuY1xcbmluZGV4IDg0MTdkZTkyZDAyODIuLmMxNzQ1YmVlMzdjMGEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xcbisrKyBiL3Rvb2xzL2xpYi9icGYvYnRmLmNcXG5AQCAtMzg0Myw3ICszODQzLDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVtYXBfdHlwZXMoc3RydWN0IGJ0Zl9kZWR1cCAqZCk7XFxuICAqIHR5cGVzLCBpbiBnZW5lcmFsLCBjYW4gZm9ybSBncmFwaHMgY29udGFpbmluZyBjeWNsZXMsIG5vdCBqdXN0IERBR3MuXFxuICAqXFxuICAqIFdoaWxlIGFsZ29yaXRobSBkb2VzIGRlZHVwbGljYXRpb24sIGl0IGFsc28gbWVyZ2VzIGFuZCByZXNvbHZlcyB0eXBlXFxuLSAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaHQgYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cXG4rICogaW5mb3JtYXRpb24gKHVubGVzcyBkaXNhYmxlZCB0aHJvdWdoIGBzdHJ1Y3QgYnRmX29wdHNgKSwgd2hlbmV2ZXIgcG9zc2libGUuXFxuICAqIEUuZy4sIGluIHRoZSBleGFtcGxlIGFib3ZlIHdpdGggdHdvIGNvbXBpbGF0aW9uIHVuaXRzIGhhdmluZyBwYXJ0aWFsIHR5cGVcXG4gICogaW5mb3JtYXRpb24gZm9yIHN0cnVjdHMgYEFgIGFuZCBgQmAsIHRoZSBvdXRwdXQgb2YgYWxnb3JpdGhtIHdpbGwgZW1pdFxcbiAgKiBhIHNpbmdsZSBjb3B5IG9mIGVhY2ggQlRGIHR5cGUgdGhhdCBkZXNjcmliZXMgc3RydWN0cyBgQWAsIGBCYCwgYW5kIGBTYFxcbkBAIC01NjQ0LDcgKzU2NDQsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kZWR1cF9yZXNvbHZlX2Z3ZHMoc3RydWN0IGJ0Zl9kZWR1cCAqZClcXG4gICpcXG4gICogQWZ0ZXIgd2UgZXN0YWJsaXNoZWQgZm9yIGVhY2ggdHlwZSBpdHMgY29ycmVzcG9uZGluZyBjYW5vbmljYWwgcmVwcmVzZW50YXRpdmVcXG4gICogdHlwZSwgd2Ugbm93IGNhbiBlbGltaW5hdGUgdHlwZXMgdGhhdCBhcmUgbm90IGNhbm9uaWNhbCBhbmQgbGVhdmUgb25seVxcbi0gKiBjYW5vbmljYWwgb25lcyBsYXllZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlclxcbisgKiBjYW5vbmljYWwgb25lcyBsYWlkIG91dCBzZXF1ZW50aWFsbHkgaW4gbWVtb3J5IGJ5IGNvcHlpbmcgdGhlbSBvdmVyXFxuICAqIGR1cGxpY2F0ZXMuIER1cmluZyBjb21wYWN0aW9uIGJ0Zl9kZWR1cC1cXHUwMDNlaHlwb3RfbWFwIGFycmF5IGlzIHJldXNlZCB0byBzdG9yZVxcbiAgKiBhIG1hcCBmcm9tIG9yaWdpbmFsIHR5cGUgSUQgdG8gYSBuZXcgY29tcGFjdGVkIHR5cGUgSUQsIHdoaWNoIHdpbGwgYmUgdXNlZFxcbiAgKiBkdXJpbmcgbmV4dCBwaGFzZSB0byBcXFwiZml4IHVwXFxcIiB0eXBlIElEcywgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdC91bmlvbiBhbmRcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi91c2R0LmMgYi90b29scy9saWIvYnBmL3VzZHQuY1xcbmluZGV4IDJlNTZlM2FiNWI2Y2MuLmMwOTMzNTgwOTMwYmMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbGliL2JwZi91c2R0LmNcXG4rKysgYi90b29scy9saWIvYnBmL3VzZHQuY1xcbkBAIC0xNDQsNyArMTQ0LDcgQEBcXG4gICogYWJvdXQuIFRoaXMgc3RhdGUgaGFzIHRvIGJlIG1haW50YWluZWQgcGVyLUJQRiBvYmplY3QgYW5kIGNvb3JkaW5hdGVcXG4gICogYmV0d2VlbiBkaWZmZXJlbnQgVVNEVCBhdHRhY2htZW50cyB3aXRoaW4gdGhlIHNhbWUgQlBGIG9iamVjdC5cXG4gICpcXG4tICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGF5ZWQgb3V0XFxuKyAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxhaWQgb3V0XFxuICAqIGFzIHN0cnVjdCB1c2R0X3NwZWMuIEVhY2ggaW52b2NhdGlvbiBvZiBCUEYgcHJvZ3JhbSBhdCBydW50aW1lIG5lZWRzIHRvXFxuICAqIGtub3cgaXRzIGFzc29jaWF0ZWQgc3BlYyBJRC4gSXQgZ2V0cyBpdCBlaXRoZXIgdGhyb3VnaCBCUEYgY29va2llLCB3aGljaFxcbiAgKiBsaWJicGYgc2V0cyB0byBzcGVjIElEIGR1cmluZyBhdHRhY2ggdGltZSwgb3IsIGlmIGtlcm5lbCBpcyB0b28gb2xkIHRvXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xcbmluZGV4IDUxMzVkNWM3MmE0NmQuLjE1OGQ5NWMyNTIwYmYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jXFxuQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2hlY2tfYXNhbl9hcmdzKHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzaXplLFxcbiBcXHRcXHRnb3RvIGNvbmZpcm1lZF92YWxpZDtcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIFdyYXBhcm91bmQgaXMgcG9zc2libGUgZm9yIHZhbHVlcyBjbG9zZSB0byB0aGUgdGhlIGVkZ2Ugb2YgdGhlXFxuK1xcdCAqIFdyYXBhcm91bmQgaXMgcG9zc2libGUgZm9yIHZhbHVlcyBjbG9zZSB0byB0aGUgZWRnZSBvZiB0aGVcXG4gXFx0ICogNEdpQiBib3VuZGFyeSBvZiB0aGUgYXJlbmEgKGxhc3QgdmFsaWQgYWRkcmVzcyBpcyAxVUwgXFx1MDAzY1xcdTAwM2MgMzIgLSAxKS5cXG4gXFx0ICpcXG4gXFx0ICpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jXFxuaW5kZXggMWIyNWQ1YzVmOGZiOC4uOGI5NmZiODYxMzY4OCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcXG5AQCAtMTMsNyArMTMsNyBAQFxcbiAgKiBJUHY2IGhlYWRlciB3aXRoIGEgU2VnbWVudCBSb3V0aW5nIEhlYWRlciwgd2l0aCBzZWdtZW50cyA6XFxuICAqXFx0ZmQwMDo6MSAtXFx1MDAzZSBmZDAwOjoyIC1cXHUwMDNlIGZkMDA6OjMgLVxcdTAwM2UgZmQwMDo6NFxcbiAgKlxcbi0gKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYmluZGVkIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxcbisgKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYm91bmQgdG8gc2VnNmxvY2FsIEVuZC5CUEYgYWN0aW9ucyA6XFxuICAqIC0gZmQwMDo6MSA6IGFkZCBhIFRMViwgY2hhbmdlIHRoZSBmbGFncyBhbmQgYXBwbHkgYSBFbmQuWCBhY3Rpb24gdG8gZmM0Mjo6MVxcbiAgKiAtIGZkMDA6OjIgOiByZW1vdmUgdGhlIFRMViwgY2hhbmdlIHRoZSBmbGFncywgYWRkIGEgdGFnXFxuICAqIC0gZmQwMDo6MyA6IGFwcGx5IGFuIEVuZC5UIGFjdGlvbiB0byBmZDAwOjo0LCB0aHJvdWdoIHJvdXRpbmcgdGFibGUgMTE3XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcXG5pbmRleCA4YWU0ZmIyMDI3ZjczLi45ZjI5NzFmYzdjZDU0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcXG5AQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyB0bGRfa2V5X3QgX190bGRfY3JlYXRlX2tleShjb25zdCBjaGFyICpuYW1lLCBzaXplX3Qgc2l6ZSwgYm9vbCBkeW5fZGF0YSlcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0LypcXG4tXFx0XFx0ICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXB0byBhIHBhZ2Ugd2hpbGUgYXQgbW9zdFxcbitcXHRcXHQgKiBUTERfREVGSU5FX0tFWSgpIGlzIGdpdmVuIG1lbW9yeSB1cCB0byBhIHBhZ2Ugd2hpbGUgYXQgbW9zdFxcbiBcXHRcXHQgKiBUTERfRFlOX0RBVEFfU0laRSBpcyBhbGxvY2F0ZWQgZm9yIHRsZF9jcmVhdGVfa2V5KClcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChkeW5fZGF0YSkge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcXG5pbmRleCA2MjQwNzhhYmYzZGVhLi5kN2UzMGVlNTc2YzkzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xcbkBAIC03LDcgKzcsNyBAQFxcbiBcXG4gU0VDKFxcXCJmcmVwbGFjZS9idGZfdW5yZWxpYWJsZV9rcHJvYmVcXFwiKVxcbiAvKiBjb250ZXh0IHR5cGUgaXMgd2hhdCBCUEYgdmVyaWZpZXIgZXhwZWN0cyBmb3Iga3Byb2JlIGNvbnRleHQsIGJ1dCB0YXJnZXRcXG4tICogcHJvZ3JhbSBoYXMgYHN0dWN0IHdoYXRldmVyICpjdHhgIGFyZ3VtZW50LCBzbyBmcmVwbGFjZSBvcGVyYXRpb24gd2lsbCBiZVxcbisgKiBwcm9ncmFtIGhhcyBgc3RydWN0IHdoYXRldmVyICpjdHhgIGFyZ3VtZW50LCBzbyBmcmVwbGFjZSBvcGVyYXRpb24gd2lsbCBiZVxcbiAgKiByZWplY3RlZCB3aXRoIHRoZSBmb2xsb3dpbmcgbWVzc2FnZTpcXG4gICpcXG4gICogYXJnMCByZXBsYWNlX2J0Zl91bnJlbGlhYmxlX2twcm9iZShzdHJ1Y3QgcHRfcmVncyAqKSBkb2Vzbid0IG1hdGNoIGJ0Zl91bnJlbGlhYmxlX2twcm9iZShzdHJ1Y3Qgd2hhdGV2ZXIgKilcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xcbmluZGV4IDYyZDdkZjllODBiZWIuLjM0MDY3MGU4OWJhOTIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xcbkBAIC0xNTExLDcgKzE1MTEsNyBAQCBfX25ha2VkIGludCBjaGVja3BvaW50X3N0YXRlc19kZWxldGlvbih2b2lkKVxcbiBcXHQgKiB3b3VsZCBnZXQgZXF1YWwgdG8gb25lIG9mIHRoZSBleHBsb3JlZCBzdGF0ZXMgYW5kIHRodXMgbG9vcFxcbiBcXHQgKiBleHBsb3JhdGlvbiB3b3VsZCBiZSBmaW5pc2hlZCAoYXQtbGVhc3QgZm9yIGEgc3BlY2lmaWMgcGF0aCkuXFxuIFxcdCAqIFZlcmlmaWVyIGV2aWN0cyBleHBsb3JlZCBzdGF0ZXMgd2l0aCBoaWdoIG1pc3MgdG8gaGl0IHJhdGlvXFxuLVxcdCAqIHRvIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWRcXG4rXFx0ICogdG8gYXZvaWQgY29tcGFyaW5nIGN1cnJlbnQgc3RhdGUgd2l0aCB0b28gbWFueSBleHBsb3JlZFxcbiBcXHQgKiBzdGF0ZXMgcGVyIGluc3RydWN0aW9uLlxcbiBcXHQgKiBUaGlzIHRlc3QgaXMgZGVzaWduZWQgdG8gXFxcInN0cmVzcyB0ZXN0XFxcIiBldmljdGlvbiBwb2xpY3kgZGVmaW5lZCB1c2luZyBmb3JtdWxhOlxcbiBcXHQgKlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xcbmluZGV4IGE2M2UzMzY3NTA5MTguLjIyN2RlYTBkYTNhMDUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcXG5AQCAtMjI1LDcgKzIyNSw3IEBAIF9fbmFrZWQgdm9pZCBzdGFja193cml0ZV9wcml2X3ZzX3VucHJpdih2b2lkKVxcbiB9XFxuIFxcbiAvKiBTaW1pbGFyIHRvIHRoZSBwcmV2aW91cyB0ZXN0LCBidXQgdGhpcyB0aW1lIGFsc28gcGVyZm9ybSBhIHJlYWQgZnJvbSB0aGVcXG4tICogYWRkcmVzcyB3cml0dGVuIHRvIHdpdGggYSB2YXJpYWJsZSBvZmZldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxcbisgKiBhZGRyZXNzIHdyaXR0ZW4gdG8gd2l0aCBhIHZhcmlhYmxlIG9mZnNldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxcbiAgKiBhZnRlciBhIHZhcmlhYmxlLW9mZnNldCB3cml0ZSwgYSBwcml2aWxlZ2VkIHByb2dyYW0gY2FuIHJlYWQgdGhlIHNsb3RzIHRoYXRcXG4gICogd2VyZSBpbiB0aGUgcmFuZ2Ugb2YgdGhhdCB3cml0ZSAoZXZlbiBpZiB0aGUgdmVyaWZpZXIgZG9lc24ndCBhY3R1YWxseSBrbm93IGlmXFxuICAqIHRoZSBzbG90IGJlaW5nIHJlYWQgd2FzIHJlYWxseSB3cml0dGVuIHRvIG9yIG5vdC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMjM6MDA6NDAuMjM5NzUyMTg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0NDMwMjY5OTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgc29sZWx5IG9mIGNvbW1lbnQgc3BlbGxpbmcgZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGhlYWRlciBmaWxlcywgYW5kIHRvb2xzL3NlbGZ0ZXN0cy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBkYXRhIHN0cnVjdHVyZXMsIGNvbnRyb2wgZmxvdywgb3IgcnVudGltZSBhc3NlcnRpb25zIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGQ0ZDM0YWQ5MTFlNWI3ZWZkYzMzZjdmY2VlMmY0YTc1YjIwZjIzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMjM6MDA6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY1xuaW5kZXggOWVkZTgxYWZiYzUwZS4uYjFjMjFjMDE0YzljZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbisrKyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYyxcbiBcdGFybV9icGZfcHV0X3JlZzY0KGRzdCwgcmQsIGN0eCk7XG4gfVxuIFxuLS8qIEFyaXRobWF0aWMgT3BlcmF0aW9uICovXG4rLyogQXJpdGhtZXRpYyBPcGVyYXRpb24gKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9hcl9yKGNvbnN0IHU4IHJkLCBjb25zdCB1OCBydCwgY29uc3QgdTggcm0sXG4gXHRcdFx0ICAgICBjb25zdCB1OCBybiwgc3RydWN0IGppdF9jdHggKmN0eCwgdTggb3AsXG4gXHRcdFx0ICAgICBib29sIGlzX2ptcDY0KSB7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCBiZmRjNTA3NDBkYThlLi5jZjhjMWI0OWRhMjU3IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC0yMyw3ICsyMyw3IEBAXG4gICpcbiAgKlx0XHRbXHRwcmV2IHNwXHRcdF0gXHUwMDNjLS0tLS0tLS0tLS0tLVxuICAqXHRcdFsgICBudiBncHIgc2F2ZSBhcmVhXHRdIDE2ICogNFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuKyAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cCB0byA1MTJcdHxcbiAgKlx0XHRbICAgICBmcmFtZSBoZWFkZXJcdF0gMTZcdFx0fFxuICAqIHNwIChyMSkgLS0tXHUwMDNlXHRbICAgIHN0YWNrIHBvaW50ZXJcdF0gLS0tLS0tLS0tLS0tLS1cbiAgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGZjOWRiNjkxZTgyMDMuLjhhMWEwMDAyNmM2OWYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTIzLDcgKzIzLDcgQEBcbiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZTpcbiAgKiBMYXlvdXQgd2hlbiBzZXR0aW5nIHVwIG91ciBvd24gc3RhY2sgZnJhbWUuXG4gICogTm90ZTogcjEgYXQgYm90dG9tLCBjb21wb25lbnQgb2Zmc2V0cyBwb3NpdGl2ZSB3cnQgcjEuXG4tICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50XG4rICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXAgdG8gbG9jYWxfdG1wX3Zhcikgc3RheXMgY29uc2lzdGVudFxuICAqIHdpdGggb3VyIHJlZHpvbmUgdXNhZ2UuXG4gICpcbiAgKiB0YWlsX2NhbGxfaW5mbyAtIHN0b3JlcyB0YWlsY2FsbCBjb3VudCB2YWx1ZSBpbiBtYWluIHByb2dyYW0nc1xuQEAgLTM1LDcgKzM1LDcgQEBcbiAgKlx0XHRbICAgbnYgZ3ByIHNhdmUgYXJlYVx0XSAoNiAqIDgpXHR8XG4gICpcdFx0WyBhZGRsLiBudiBncHIgc2F2ZSBhcmVhXSAoMTIgKiA4KVx0fCBcdTAwM2MtLS0gZXhjZXB0aW9uIGJvdW5kYXJ5L2NhbGxiYWNrIHByb2dyYW1cbiAgKlx0XHRbICAgIGxvY2FsX3RtcF92YXJcdF0gMjRcdFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuKyAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cCB0byA1MTJcdHxcbiAgKlx0XHRbICAgICBmcmFtZSBoZWFkZXJcdF0gMzIvMTEyXHR8XG4gICogc3AgKHIxKSAtLS1cdTAwM2VcdFsgICAgc3RhY2sgcG9pbnRlclx0XSAtLS0tLS0tLS0tLS0tLVxuICAqXG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcbmluZGV4IGEyZTI4ZTA0NjRhMzMuLjgxNDMwZjA2NWFjOTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG4rKysgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG5AQCAtMTk1LDcgKzE5NSw3IEBAIGJwZl9lcnJvcjpcbiBcdC8qIE1ha2UgdGhlIEpJVCBwcm9ncmFtIHJldHVybiB6ZXJvLiAgVGhlIEpJVCBlcGlsb2d1ZVxuIFx0ICogc3RvcmVzIGF3YXkgdGhlIG9yaWdpbmFsICVvNyBpbnRvIHJfc2F2ZWRfTzcuICBUaGVcbiBcdCAqIG5vcm1hbCBsZWFmIGZ1bmN0aW9uIHJldHVybiBpcyB0byB1c2UgXCJyZXRsXCIgd2hpY2hcbi1cdCAqIHdvdWxkIGV2YWx1dGUgdG8gXCJqbXBsICVvNyArIDgsICVnMFwiIGJ1dCB3ZSB3YW50IHRvXG4rXHQgKiB3b3VsZCBldmFsdWF0ZSB0byBcImptcGwgJW83ICsgOCwgJWcwXCIgYnV0IHdlIHdhbnQgdG9cbiBcdCAqIHVzZSB0aGUgc2F2ZWQgdmFsdWUgdGh1cyB0aGUgc2VxdWVuY2UgeW91IHNlZSBoZXJlLlxuIFx0ICovXG4gXHRqbXBsXHRyX3NhdmVkX083ICsgOCwgJWcwXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbmluZGV4IDRhOWJjNmE4NDhmMmUuLjBhMDY3YzJlOTIzZGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG5AQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyO1xuICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pXHRcdFx0XHRcXFxuIFx0QlBGX0FMVTMyX0lNTV9PRkYoT1AsIERTVCwgSU1NLCAwKVxuIFxuLS8qIEVuZGlhbmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xuKy8qIEVuZGlhbm5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi9cbiBcbiAjZGVmaW5lIEJQRl9FTkRJQU4oVFlQRSwgRFNULCBMRU4pXHRcdFx0XHRcXFxuIFx0KChzdHJ1Y3QgYnBmX2luc24pIHtcdFx0XHRcdFx0XFxcbkBAIC0xMDI5LDcgKzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIHU4ICpicGZfc2tiX2NiKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4gXHQgKlxuIFx0ICogSW4gc29tZSBzb2NrZXQgZmlsdGVyIGNhc2VzLCB0aGUgY2IgdW5mb3J0dW5hdGVseSBuZWVkcyB0byBiZVxuIFx0ICogc2F2ZWQvcmVzdG9yZWQgc28gdGhhdCBwcm90b2NvbCBzcGVjaWZpYyBza2ItXHUwMDNlY2JbXSBkYXRhIHdvbid0XG4tXHQgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWRnZWQgZUJQRiBwcm9ncmFtc1xuK1x0ICogYmUgbG9zdC4gSW4gYW55IGNhc2UsIGR1ZSB0byB1bnByaXZpbGVnZWQgZUJQRiBwcm9ncmFtc1xuIFx0ICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWFcbiBcdCAqIHRvIG5vdCBsZWFrIHByZXZpb3VzIGNvbnRlbnRzIHRvIHVzZXIgc3BhY2UuXG4gXHQgKi9cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jIGIva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xuaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmNcbisrKyBiL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmNcbkBAIC0yMDcsNyArMjA3LDcgQEAgcmV1c2Vwb3J0X2FycmF5X3VwZGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgcmV1c2Vwb3J0X2FycmF5ICphcnJheSxcbiBcdFx0cmV0dXJuIC1FTk9UU1VQUDtcbiBcbiBcdC8qXG4tXHQgKiBzayBtdXN0IGJlIGhhc2hlZCAoaS5lLiBsaXN0ZW5pbmcgaW4gdGhlIFRDUCBjYXNlIG9yIGJpbmRlZFxuK1x0ICogc2sgbXVzdCBiZSBoYXNoZWQgKGkuZS4gbGlzdGVuaW5nIGluIHRoZSBUQ1AgY2FzZSBvciBib3VuZFxuIFx0ICogaW4gdGhlIFVEUCBjYXNlKSBhbmRcbiBcdCAqIGl0IG11c3QgYWxzbyBiZSBhIFNPX1JFVVNFUE9SVCBzayAoaS5lLiByZXVzZSBjYW5ub3QgYmUgTlVMTCkuXG4gXHQgKlxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvc3RyZWFtLmMgYi9rZXJuZWwvYnBmL3N0cmVhbS5jXG5pbmRleCBiZTljZTk4ZTk0NjkyLi41NGY1YmUxMjg5ZDJiIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9zdHJlYW0uY1xuKysrIGIva2VybmVsL2JwZi9zdHJlYW0uY1xuQEAgLTI0LDcgKzI0LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfc3RyZWFtX2VsZW0gKmJwZl9zdHJlYW1fZWxlbV9hbGxvYyhpbnQgbGVuKVxuIFx0LypcbiBcdCAqIExlbmd0aCBkZW5vdGVzIHRoZSBhbW91bnQgb2YgZGF0YSB0byBiZSB3cml0dGVuIGFzIHBhcnQgb2Ygc3RyZWFtIGVsZW1lbnQsXG4gXHQgKiB0aHVzIGluY2x1ZGVzICdcXDAnIGJ5dGUuIFdlJ3JlIGNhcHBlZCBieSBob3cgbXVjaCBicGZfYnByaW50Zl9idWZmZXJzIGNhblxuLVx0ICogYWNjb21vZGF0ZSwgdGhlcmVmb3JlIGRlbnkgYWxsb2NhdGlvbnMgdGhhdCB3b24ndCBmaXQgaW50byB0aGVtLlxuK1x0ICogYWNjb21tb2RhdGUsIHRoZXJlZm9yZSBkZW55IGFsbG9jYXRpb25zIHRoYXQgd29uJ3QgZml0IGludG8gdGhlbS5cbiBcdCAqL1xuIFx0aWYgKGxlbiBcdTAwM2MgMCB8fCBsZW4gXHUwMDNlIG1heF9sZW4pXG4gXHRcdHJldHVybiBOVUxMO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jXG5pbmRleCA4NDE3ZGU5MmQwMjgyLi5jMTc0NWJlZTM3YzBhIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xuKysrIGIvdG9vbHMvbGliL2JwZi9idGYuY1xuQEAgLTM4NDMsNyArMzg0Myw3IEBAIHN0YXRpYyBpbnQgYnRmX2RlZHVwX3JlbWFwX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQpO1xuICAqIHR5cGVzLCBpbiBnZW5lcmFsLCBjYW4gZm9ybSBncmFwaHMgY29udGFpbmluZyBjeWNsZXMsIG5vdCBqdXN0IERBR3MuXG4gICpcbiAgKiBXaGlsZSBhbGdvcml0aG0gZG9lcyBkZWR1cGxpY2F0aW9uLCBpdCBhbHNvIG1lcmdlcyBhbmQgcmVzb2x2ZXMgdHlwZVxuLSAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaHQgYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cbisgKiBpbmZvcm1hdGlvbiAodW5sZXNzIGRpc2FibGVkIHRocm91Z2ggYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cbiAgKiBFLmcuLCBpbiB0aGUgZXhhbXBsZSBhYm92ZSB3aXRoIHR3byBjb21waWxhdGlvbiB1bml0cyBoYXZpbmcgcGFydGlhbCB0eXBlXG4gICogaW5mb3JtYXRpb24gZm9yIHN0cnVjdHMgYEFgIGFuZCBgQmAsIHRoZSBvdXRwdXQgb2YgYWxnb3JpdGhtIHdpbGwgZW1pdFxuICAqIGEgc2luZ2xlIGNvcHkgb2YgZWFjaCBCVEYgdHlwZSB0aGF0IGRlc2NyaWJlcyBzdHJ1Y3RzIGBBYCwgYEJgLCBhbmQgYFNgXG5AQCAtNTY0NCw3ICs1NjQ0LDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVzb2x2ZV9md2RzKHN0cnVjdCBidGZfZGVkdXAgKmQpXG4gICpcbiAgKiBBZnRlciB3ZSBlc3RhYmxpc2hlZCBmb3IgZWFjaCB0eXBlIGl0cyBjb3JyZXNwb25kaW5nIGNhbm9uaWNhbCByZXByZXNlbnRhdGl2ZVxuICAqIHR5cGUsIHdlIG5vdyBjYW4gZWxpbWluYXRlIHR5cGVzIHRoYXQgYXJlIG5vdCBjYW5vbmljYWwgYW5kIGxlYXZlIG9ubHlcbi0gKiBjYW5vbmljYWwgb25lcyBsYXllZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlclxuKyAqIGNhbm9uaWNhbCBvbmVzIGxhaWQgb3V0IHNlcXVlbnRpYWxseSBpbiBtZW1vcnkgYnkgY29weWluZyB0aGVtIG92ZXJcbiAgKiBkdXBsaWNhdGVzLiBEdXJpbmcgY29tcGFjdGlvbiBidGZfZGVkdXAtXHUwMDNlaHlwb3RfbWFwIGFycmF5IGlzIHJldXNlZCB0byBzdG9yZVxuICAqIGEgbWFwIGZyb20gb3JpZ2luYWwgdHlwZSBJRCB0byBhIG5ldyBjb21wYWN0ZWQgdHlwZSBJRCwgd2hpY2ggd2lsbCBiZSB1c2VkXG4gICogZHVyaW5nIG5leHQgcGhhc2UgdG8gXCJmaXggdXBcIiB0eXBlIElEcywgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdC91bmlvbiBhbmRcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL3VzZHQuYyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5pbmRleCAyZTU2ZTNhYjViNmNjLi5jMDkzMzU4MDkzMGJjIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi91c2R0LmNcbisrKyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5AQCAtMTQ0LDcgKzE0NCw3IEBAXG4gICogYWJvdXQuIFRoaXMgc3RhdGUgaGFzIHRvIGJlIG1haW50YWluZWQgcGVyLUJQRiBvYmplY3QgYW5kIGNvb3JkaW5hdGVcbiAgKiBiZXR3ZWVuIGRpZmZlcmVudCBVU0RUIGF0dGFjaG1lbnRzIHdpdGhpbiB0aGUgc2FtZSBCUEYgb2JqZWN0LlxuICAqXG4tICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGF5ZWQgb3V0XG4rICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGFpZCBvdXRcbiAgKiBhcyBzdHJ1Y3QgdXNkdF9zcGVjLiBFYWNoIGludm9jYXRpb24gb2YgQlBGIHByb2dyYW0gYXQgcnVudGltZSBuZWVkcyB0b1xuICAqIGtub3cgaXRzIGFzc29jaWF0ZWQgc3BlYyBJRC4gSXQgZ2V0cyBpdCBlaXRoZXIgdGhyb3VnaCBCUEYgY29va2llLCB3aGljaFxuICAqIGxpYmJwZiBzZXRzIHRvIHNwZWMgSUQgZHVyaW5nIGF0dGFjaCB0aW1lLCBvciwgaWYga2VybmVsIGlzIHRvbyBvbGQgdG9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcbmluZGV4IDUxMzVkNWM3MmE0NmQuLjE1OGQ5NWMyNTIwYmYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xuQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2hlY2tfYXNhbl9hcmdzKHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzaXplLFxuIFx0XHRnb3RvIGNvbmZpcm1lZF92YWxpZDtcbiBcbiBcdC8qXG4tXHQgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIHRoZSBlZGdlIG9mIHRoZVxuK1x0ICogV3JhcGFyb3VuZCBpcyBwb3NzaWJsZSBmb3IgdmFsdWVzIGNsb3NlIHRvIHRoZSBlZGdlIG9mIHRoZVxuIFx0ICogNEdpQiBib3VuZGFyeSBvZiB0aGUgYXJlbmEgKGxhc3QgdmFsaWQgYWRkcmVzcyBpcyAxVUwgXHUwMDNjXHUwMDNjIDMyIC0gMSkuXG4gXHQgKlxuIFx0ICpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbmluZGV4IDFiMjVkNWM1ZjhmYjguLjhiOTZmYjg2MTM2ODggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuY1xuQEAgLTEzLDcgKzEzLDcgQEBcbiAgKiBJUHY2IGhlYWRlciB3aXRoIGEgU2VnbWVudCBSb3V0aW5nIEhlYWRlciwgd2l0aCBzZWdtZW50cyA6XG4gICpcdGZkMDA6OjEgLVx1MDAzZSBmZDAwOjoyIC1cdTAwM2UgZmQwMDo6MyAtXHUwMDNlIGZkMDA6OjRcbiAgKlxuLSAqIDMgZmQwMDo6LzE2IElQdjYgYWRkcmVzc2VzIGFyZSBiaW5kZWQgdG8gc2VnNmxvY2FsIEVuZC5CUEYgYWN0aW9ucyA6XG4rICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJvdW5kIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxuICAqIC0gZmQwMDo6MSA6IGFkZCBhIFRMViwgY2hhbmdlIHRoZSBmbGFncyBhbmQgYXBwbHkgYSBFbmQuWCBhY3Rpb24gdG8gZmM0Mjo6MVxuICAqIC0gZmQwMDo6MiA6IHJlbW92ZSB0aGUgVExWLCBjaGFuZ2UgdGhlIGZsYWdzLCBhZGQgYSB0YWdcbiAgKiAtIGZkMDA6OjMgOiBhcHBseSBhbiBFbmQuVCBhY3Rpb24gdG8gZmQwMDo6NCwgdGhyb3VnaCByb3V0aW5nIHRhYmxlIDExN1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbmluZGV4IDhhZTRmYjIwMjdmNzMuLjlmMjk3MWZjN2NkNTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHRsZF9rZXlfdCBfX3RsZF9jcmVhdGVfa2V5KGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLCBib29sIGR5bl9kYXRhKVxuIFx0XHR9XG4gXG4gXHRcdC8qXG4tXHRcdCAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcbitcdFx0ICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXAgdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcbiBcdFx0ICogVExEX0RZTl9EQVRBX1NJWkUgaXMgYWxsb2NhdGVkIGZvciB0bGRfY3JlYXRlX2tleSgpXG4gXHRcdCAqL1xuIFx0XHRpZiAoZHluX2RhdGEpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcbmluZGV4IDYyNDA3OGFiZjNkZWEuLmQ3ZTMwZWU1NzZjOTMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xuQEAgLTcsNyArNyw3IEBAXG4gXG4gU0VDKFwiZnJlcGxhY2UvYnRmX3VucmVsaWFibGVfa3Byb2JlXCIpXG4gLyogY29udGV4dCB0eXBlIGlzIHdoYXQgQlBGIHZlcmlmaWVyIGV4cGVjdHMgZm9yIGtwcm9iZSBjb250ZXh0LCBidXQgdGFyZ2V0XG4tICogcHJvZ3JhbSBoYXMgYHN0dWN0IHdoYXRldmVyICpjdHhgIGFyZ3VtZW50LCBzbyBmcmVwbGFjZSBvcGVyYXRpb24gd2lsbCBiZVxuKyAqIHByb2dyYW0gaGFzIGBzdHJ1Y3Qgd2hhdGV2ZXIgKmN0eGAgYXJndW1lbnQsIHNvIGZyZXBsYWNlIG9wZXJhdGlvbiB3aWxsIGJlXG4gICogcmVqZWN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6XG4gICpcbiAgKiBhcmcwIHJlcGxhY2VfYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCBwdF9yZWdzICopIGRvZXNuJ3QgbWF0Y2ggYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCB3aGF0ZXZlciAqKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbmluZGV4IDYyZDdkZjllODBiZWIuLjM0MDY3MGU4OWJhOTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbkBAIC0xNTExLDcgKzE1MTEsNyBAQCBfX25ha2VkIGludCBjaGVja3BvaW50X3N0YXRlc19kZWxldGlvbih2b2lkKVxuIFx0ICogd291bGQgZ2V0IGVxdWFsIHRvIG9uZSBvZiB0aGUgZXhwbG9yZWQgc3RhdGVzIGFuZCB0aHVzIGxvb3BcbiBcdCAqIGV4cGxvcmF0aW9uIHdvdWxkIGJlIGZpbmlzaGVkIChhdC1sZWFzdCBmb3IgYSBzcGVjaWZpYyBwYXRoKS5cbiBcdCAqIFZlcmlmaWVyIGV2aWN0cyBleHBsb3JlZCBzdGF0ZXMgd2l0aCBoaWdoIG1pc3MgdG8gaGl0IHJhdGlvXG4tXHQgKiB0byB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXG4rXHQgKiB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXG4gXHQgKiBzdGF0ZXMgcGVyIGluc3RydWN0aW9uLlxuIFx0ICogVGhpcyB0ZXN0IGlzIGRlc2lnbmVkIHRvIFwic3RyZXNzIHRlc3RcIiBldmljdGlvbiBwb2xpY3kgZGVmaW5lZCB1c2luZyBmb3JtdWxhOlxuIFx0ICpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuaW5kZXggYTYzZTMzNjc1MDkxOC4uMjI3ZGVhMGRhM2EwNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcbkBAIC0yMjUsNyArMjI1LDcgQEAgX19uYWtlZCB2b2lkIHN0YWNrX3dyaXRlX3ByaXZfdnNfdW5wcml2KHZvaWQpXG4gfVxuIFxuIC8qIFNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHRlc3QsIGJ1dCB0aGlzIHRpbWUgYWxzbyBwZXJmb3JtIGEgcmVhZCBmcm9tIHRoZVxuLSAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2ZmZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcbisgKiBhZGRyZXNzIHdyaXR0ZW4gdG8gd2l0aCBhIHZhcmlhYmxlIG9mZnNldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxuICAqIGFmdGVyIGEgdmFyaWFibGUtb2Zmc2V0IHdyaXRlLCBhIHByaXZpbGVnZWQgcHJvZ3JhbSBjYW4gcmVhZCB0aGUgc2xvdHMgdGhhdFxuICAqIHdlcmUgaW4gdGhlIHJhbmdlIG9mIHRoYXQgd3JpdGUgKGV2ZW4gaWYgdGhlIHZlcmlmaWVyIGRvZXNuJ3QgYWN0dWFsbHkga25vdyBpZlxuICAqIHRoZSBzbG90IGJlaW5nIHJlYWQgd2FzIHJlYWxseSB3cml0dGVuIHRvIG9yIG5vdC5cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDIzOjAwOjQwLjIzOTc1MzcxOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0MzAyNDcwNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXMgYW5kIERldGVybWluYXRpb24gb2YgV29ydGhGdXp6aW5nIFN0YXR1cyoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2guIE15IGluaXRpYWwgc2NhbiBvZiB0aGUgZGlmZiByZXZlYWxzIHRoYXQgKmV2ZXJ5IHNpbmdsZSogY2hhbmdlIGlzIGEgY29tbWVudCBzcGVsbGluZyBmaXguIFdlJ3JlIHRhbGtpbmcgYWJvdXQgY29ycmVjdGlvbnMgdG8gY29tbWVudHMgYWNyb3NzIGEgdmFyaWV0eSBvZiBmaWxlczogYGFyY2gvYXJtYCwgYGFyY2gvcG93ZXJwY2AsIGBhcmNoL3NwYXJjYCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSwgdGhlIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCBoZWFkZXIsIHRoZSBga2VybmVsL2JwZmAgZGlyZWN0b3J5LCBhbmQgZXZlbiB0aGUgYHRvb2xzL2xpYi9icGZgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmYCBkaXJlY3Rvcmllcy4gTm90aGluZyB0b3VjaGVzIGFjdHVhbCBleGVjdXRhYmxlIGNvZGUsIHJ1bnRpbWUgY2hlY2tzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHRoZSB1bmRlcmx5aW5nIGxvZ2ljLiBJdCdzIGFsbCBhYm91dCBpbXByb3ZpbmcgdGhlIHJlYWRhYmlsaXR5IG9mIHRoZSBjb21tZW50cy5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZnJvbSB0aGUgaW5zdHJ1Y3Rpb25zIHRvIHRoaXMgcGF0Y2guIFRoZSBpbnN0cnVjdGlvbnMgZGVmaW5lIHNwZWNpZmljIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggXCJXb3J0aEZ1enppbmdcIiBzaG91bGQgYmUgc2V0IHRvIGZhbHNlLiBDb25kaXRpb24gbnVtYmVyIHR3byBpcyBjbGVhcmx5IHJlbGV2YW50IGhlcmU6IGl0IGxpc3RzIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGFuZCBzcGVsbGluZyBmaXhlcyBhcyBmYWxsaW5nIHVuZGVyIHRoZSBcIldvcnRoRnV6emluZz1mYWxzZVwiIGNhdGVnb3J5LiBUaGlzIHBhdGNoJ3MgZW50aXJldHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBXZSdyZSAqb25seSogZGVhbGluZyB3aXRoIGNvbW1lbnQgY29ycmVjdGlvbnMsIGluY2x1ZGluZyBpbiBzZWxmdGVzdHMuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIHN0cmljdGx5IGNvbW1lbnQgc3BlbGxpbmcgZml4ZXMgYWNyb3NzIHRoZSBrZXJuZWwsIGhlYWRlcnMsIHNvdXJjZSBmaWxlcywgdG9vbHMgYW5kIHNlbGZ0ZXN0cywgSSBjb25jbHVkZSB0aGF0IGBXb3J0aEZ1enppbmdgIGFic29sdXRlbHkgbXVzdCBiZSBmYWxzZSBpbiB0aGlzIHNjZW5hcmlvLiBDb25zZXF1ZW50bHksIHRoZSBgRm9jdXNTeW1ib2xzYCBzZXQgc2hvdWxkIGFsc28gYmUgZW1wdHksIGFzIHRoZXJlIGFyZSBubyBzeW1ib2xzIHRvIGZvY3VzIG9uLiBTaW1pbGFybHksIHRoZSBgRW5hYmxlQ29uZmlnc2Agc2V0IHNob3VsZCBhbHNvIGJlIGVtcHR5LiBXZSBoYXZlIG5vdGhpbmcgaGVyZSB0aGF0IHdhcnJhbnRzIGZ1enppbmcgb3IgZW5hYmxpbmcgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuSSdsbCBwcm9jZWVkIHRvIHZlcmlmeSB0aGVzZSBzZXR0aW5ncyB1c2luZyB0aGUgcHJvcGVyIHNldC1yZXN1bHRzIHRvb2wgY2FsbCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDU0LCJPdXRwdXRUb2tlbnMiOjcxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMjM6MDA6NDQuNjcwMDAzMzY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgc29sZWx5IG9mIGNvbW1lbnQgc3BlbGxpbmcgZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGhlYWRlciBmaWxlcywgYW5kIHRvb2xzL3NlbGZ0ZXN0cy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBkYXRhIHN0cnVjdHVyZXMsIGNvbnRyb2wgZmxvdywgb3IgcnVudGltZSBhc3NlcnRpb25zIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBzb2xlbHkgb2YgY29tbWVudCBzcGVsbGluZyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgaGVhZGVyIGZpbGVzLCBhbmQgdG9vbHMvc2VsZnRlc3RzLiBObyBleGVjdXRhYmxlIGNvZGUsIGRhdGEgc3RydWN0dXJlcywgY29udHJvbCBmbG93LCBvciBydW50aW1lIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMjM6MDA6NDQuNjcwMDIzNTk2WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowf7s94[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 22:12:20 +0000 UTC FinishedAt: 2026-09-05 23:00:45 +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+CgkJCTx0ZD4yMDI2LzA5LzA1IDIzOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIHNvbGVseSBvZiBjb21tZW50IHNwZWxsaW5nIGZpeGVzIGFjcm9zcyBrZXJuZWwgc291cmNlIGZpbGVzLCBoZWFkZXIgZmlsZXMsIGFuZCB0b29scy9zZWxmdGVzdHMuIE5vIGV4ZWN1dGFibGUgY29kZSwgZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIG9yIHJ1bnRpbWUgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDIzOjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGQ0ZDM0YWQ5MTFlNWI3ZWZkYzMzZjdmY2VlMmY0YTc1YjIwZjIzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMjM6MDA6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbmluZGV4IDllZGU4MWFmYmM1MGUuLmIxYzIxYzAxNGM5Y2YgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXG5AQCAtMTM0Niw3ICYjNDM7MTM0Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0X2xkc3hfcihjb25zdCBzOCBkc3RbXSwgY29uc3Qgczggc3JjLFxuIFx0YXJtX2JwZl9wdXRfcmVnNjQoZHN0LCByZCwgY3R4KTtcbiB9XG4gXG4tLyogQXJpdGhtYXRpYyBPcGVyYXRpb24gKi9cbiYjNDM7LyogQXJpdGhtZXRpYyBPcGVyYXRpb24gKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9hcl9yKGNvbnN0IHU4IHJkLCBjb25zdCB1OCBydCwgY29uc3QgdTggcm0sXG4gXHRcdFx0ICAgICBjb25zdCB1OCBybiwgc3RydWN0IGppdF9jdHggKmN0eCwgdTggb3AsXG4gXHRcdFx0ICAgICBib29sIGlzX2ptcDY0KSB7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCBiZmRjNTA3NDBkYThlLi5jZjhjMWI0OWRhMjU3IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC0yMyw3ICYjNDM7MjMsNyBAQFxuICAqXG4gICpcdFx0W1x0cHJldiBzcFx0XHRdIFx1MDAzYy0tLS0tLS0tLS0tLS1cbiAgKlx0XHRbICAgbnYgZ3ByIHNhdmUgYXJlYVx0XSAxNiAqIDRcdHxcbi0gKiBmcCAocjMxKSAtLVx1MDAzZVx0WyAgIGVicGYgc3RhY2sgc3BhY2VcdF0gdXB0byA1MTJcdHxcbiYjNDM7ICogZnAgKHIzMSkgLS1cdTAwM2VcdFsgICBlYnBmIHN0YWNrIHNwYWNlXHRdIHVwIHRvIDUxMlx0fFxuICAqXHRcdFsgICAgIGZyYW1lIGhlYWRlclx0XSAxNlx0XHR8XG4gICogc3AgKHIxKSAtLS1cdTAwM2VcdFsgICAgc3RhY2sgcG9pbnRlclx0XSAtLS0tLS0tLS0tLS0tLVxuICAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggZmM5ZGI2OTFlODIwMy4uOGExYTAwMDI2YzY5ZiAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMjMsNyAmIzQzOzIzLDcgQEBcbiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZTpcbiAgKiBMYXlvdXQgd2hlbiBzZXR0aW5nIHVwIG91ciBvd24gc3RhY2sgZnJhbWUuXG4gICogTm90ZTogcjEgYXQgYm90dG9tLCBjb21wb25lbnQgb2Zmc2V0cyBwb3NpdGl2ZSB3cnQgcjEuXG4tICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50XG4mIzQzOyAqIEVuc3VyZSB0aGUgdG9wIGhhbGYgKHVwIHRvIGxvY2FsX3RtcF92YXIpIHN0YXlzIGNvbnNpc3RlbnRcbiAgKiB3aXRoIG91ciByZWR6b25lIHVzYWdlLlxuICAqXG4gICogdGFpbF9jYWxsX2luZm8gLSBzdG9yZXMgdGFpbGNhbGwgY291bnQgdmFsdWUgaW4gbWFpbiBwcm9ncmFtJiMzOTtzXG5AQCAtMzUsNyAmIzQzOzM1LDcgQEBcbiAgKlx0XHRbICAgbnYgZ3ByIHNhdmUgYXJlYVx0XSAoNiAqIDgpXHR8XG4gICpcdFx0WyBhZGRsLiBudiBncHIgc2F2ZSBhcmVhXSAoMTIgKiA4KVx0fCBcdTAwM2MtLS0gZXhjZXB0aW9uIGJvdW5kYXJ5L2NhbGxiYWNrIHByb2dyYW1cbiAgKlx0XHRbICAgIGxvY2FsX3RtcF92YXJcdF0gMjRcdFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuJiM0MzsgKiBmcCAocjMxKSAtLVx1MDAzZVx0WyAgIGVicGYgc3RhY2sgc3BhY2VcdF0gdXAgdG8gNTEyXHR8XG4gICpcdFx0WyAgICAgZnJhbWUgaGVhZGVyXHRdIDMyLzExMlx0fFxuICAqIHNwIChyMSkgLS0tXHUwMDNlXHRbICAgIHN0YWNrIHBvaW50ZXJcdF0gLS0tLS0tLS0tLS0tLS1cbiAgKlxuZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlMgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG5pbmRleCBhMmUyOGUwNDY0YTMzLi44MTQzMGYwNjVhYzk3IDEwMDY0NFxuLS0tIGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuU1xuQEAgLTE5NSw3ICYjNDM7MTk1LDcgQEAgYnBmX2Vycm9yOlxuIFx0LyogTWFrZSB0aGUgSklUIHByb2dyYW0gcmV0dXJuIHplcm8uICBUaGUgSklUIGVwaWxvZ3VlXG4gXHQgKiBzdG9yZXMgYXdheSB0aGUgb3JpZ2luYWwgJW83IGludG8gcl9zYXZlZF9PNy4gIFRoZVxuIFx0ICogbm9ybWFsIGxlYWYgZnVuY3Rpb24gcmV0dXJuIGlzIHRvIHVzZSBcJiMzNDtyZXRsXCYjMzQ7IHdoaWNoXG4tXHQgKiB3b3VsZCBldmFsdXRlIHRvIFwmIzM0O2ptcGwgJW83ICYjNDM7IDgsICVnMFwmIzM0OyBidXQgd2Ugd2FudCB0b1xuJiM0MztcdCAqIHdvdWxkIGV2YWx1YXRlIHRvIFwmIzM0O2ptcGwgJW83ICYjNDM7IDgsICVnMFwmIzM0OyBidXQgd2Ugd2FudCB0b1xuIFx0ICogdXNlIHRoZSBzYXZlZCB2YWx1ZSB0aHVzIHRoZSBzZXF1ZW5jZSB5b3Ugc2VlIGhlcmUuXG4gXHQgKi9cbiBcdGptcGxcdHJfc2F2ZWRfTzcgJiM0MzsgOCwgJWcwXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbmluZGV4IDRhOWJjNmE4NDhmMmUuLjBhMDY3YzJlOTIzZGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG5AQCAtMTQ3LDcgJiM0MzsxNDcsNyBAQCBzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlcjtcbiAjZGVmaW5lIEJQRl9BTFUzMl9JTU0oT1AsIERTVCwgSU1NKVx0XHRcdFx0XFxcbiBcdEJQRl9BTFUzMl9JTU1fT0ZGKE9QLCBEU1QsIElNTSwgMClcbiBcbi0vKiBFbmRpYW5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi9cbiYjNDM7LyogRW5kaWFubmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xuIFxuICNkZWZpbmUgQlBGX0VORElBTihUWVBFLCBEU1QsIExFTilcdFx0XHRcdFxcXG4gXHQoKHN0cnVjdCBicGZfaW5zbikge1x0XHRcdFx0XHRcXFxuQEAgLTEwMjksNyAmIzQzOzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIHU4ICpicGZfc2tiX2NiKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4gXHQgKlxuIFx0ICogSW4gc29tZSBzb2NrZXQgZmlsdGVyIGNhc2VzLCB0aGUgY2IgdW5mb3J0dW5hdGVseSBuZWVkcyB0byBiZVxuIFx0ICogc2F2ZWQvcmVzdG9yZWQgc28gdGhhdCBwcm90b2NvbCBzcGVjaWZpYyBza2ItXHUwMDNlY2JbXSBkYXRhIHdvbiYjMzk7dFxuLVx0ICogYmUgbG9zdC4gSW4gYW55IGNhc2UsIGR1ZSB0byB1bnByaXZpbGVkZ2VkIGVCUEYgcHJvZ3JhbXNcbiYjNDM7XHQgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWdlZCBlQlBGIHByb2dyYW1zXG4gXHQgKiBhdHRhY2hlZCB0byBzb2NrZXRzLCB3ZSBuZWVkIHRvIGNsZWFyIHRoZSBicGZfc2tiX2NiKCkgYXJlYVxuIFx0ICogdG8gbm90IGxlYWsgcHJldmlvdXMgY29udGVudHMgdG8gdXNlciBzcGFjZS5cbiBcdCAqL1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmMgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXG5pbmRleCA0OWI4ZTVhMGM2YjRmLi40ZGUwOGFiZmQ5NGVkIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xuQEAgLTIwNyw3ICYjNDM7MjA3LDcgQEAgcmV1c2Vwb3J0X2FycmF5X3VwZGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgcmV1c2Vwb3J0X2FycmF5ICphcnJheSxcbiBcdFx0cmV0dXJuIC1FTk9UU1VQUDtcbiBcbiBcdC8qXG4tXHQgKiBzayBtdXN0IGJlIGhhc2hlZCAoaS5lLiBsaXN0ZW5pbmcgaW4gdGhlIFRDUCBjYXNlIG9yIGJpbmRlZFxuJiM0MztcdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYm91bmRcbiBcdCAqIGluIHRoZSBVRFAgY2FzZSkgYW5kXG4gXHQgKiBpdCBtdXN0IGFsc28gYmUgYSBTT19SRVVTRVBPUlQgc2sgKGkuZS4gcmV1c2UgY2Fubm90IGJlIE5VTEwpLlxuIFx0ICpcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3N0cmVhbS5jIGIva2VybmVsL2JwZi9zdHJlYW0uY1xuaW5kZXggYmU5Y2U5OGU5NDY5Mi4uNTRmNWJlMTI4OWQyYiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvc3RyZWFtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvc3RyZWFtLmNcbkBAIC0yNCw3ICYjNDM7MjQsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl9zdHJlYW1fZWxlbSAqYnBmX3N0cmVhbV9lbGVtX2FsbG9jKGludCBsZW4pXG4gXHQvKlxuIFx0ICogTGVuZ3RoIGRlbm90ZXMgdGhlIGFtb3VudCBvZiBkYXRhIHRvIGJlIHdyaXR0ZW4gYXMgcGFydCBvZiBzdHJlYW0gZWxlbWVudCxcbiBcdCAqIHRodXMgaW5jbHVkZXMgJiMzOTtcXDAmIzM5OyBieXRlLiBXZSYjMzk7cmUgY2FwcGVkIGJ5IGhvdyBtdWNoIGJwZl9icHJpbnRmX2J1ZmZlcnMgY2FuXG4tXHQgKiBhY2NvbW9kYXRlLCB0aGVyZWZvcmUgZGVueSBhbGxvY2F0aW9ucyB0aGF0IHdvbiYjMzk7dCBmaXQgaW50byB0aGVtLlxuJiM0MztcdCAqIGFjY29tbW9kYXRlLCB0aGVyZWZvcmUgZGVueSBhbGxvY2F0aW9ucyB0aGF0IHdvbiYjMzk7dCBmaXQgaW50byB0aGVtLlxuIFx0ICovXG4gXHRpZiAobGVuIFx1MDAzYyAwIHx8IGxlbiBcdTAwM2UgbWF4X2xlbilcbiBcdFx0cmV0dXJuIE5VTEw7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9idGYuYyBiL3Rvb2xzL2xpYi9icGYvYnRmLmNcbmluZGV4IDg0MTdkZTkyZDAyODIuLmMxNzQ1YmVlMzdjMGEgMTAwNjQ0XG4tLS0gYS90b29scy9saWIvYnBmL2J0Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9saWIvYnBmL2J0Zi5jXG5AQCAtMzg0Myw3ICYjNDM7Mzg0Myw3IEBAIHN0YXRpYyBpbnQgYnRmX2RlZHVwX3JlbWFwX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQpO1xuICAqIHR5cGVzLCBpbiBnZW5lcmFsLCBjYW4gZm9ybSBncmFwaHMgY29udGFpbmluZyBjeWNsZXMsIG5vdCBqdXN0IERBR3MuXG4gICpcbiAgKiBXaGlsZSBhbGdvcml0aG0gZG9lcyBkZWR1cGxpY2F0aW9uLCBpdCBhbHNvIG1lcmdlcyBhbmQgcmVzb2x2ZXMgdHlwZVxuLSAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaHQgYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cbiYjNDM7ICogaW5mb3JtYXRpb24gKHVubGVzcyBkaXNhYmxlZCB0aHJvdWdoIGBzdHJ1Y3QgYnRmX29wdHNgKSwgd2hlbmV2ZXIgcG9zc2libGUuXG4gICogRS5nLiwgaW4gdGhlIGV4YW1wbGUgYWJvdmUgd2l0aCB0d28gY29tcGlsYXRpb24gdW5pdHMgaGF2aW5nIHBhcnRpYWwgdHlwZVxuICAqIGluZm9ybWF0aW9uIGZvciBzdHJ1Y3RzIGBBYCBhbmQgYEJgLCB0aGUgb3V0cHV0IG9mIGFsZ29yaXRobSB3aWxsIGVtaXRcbiAgKiBhIHNpbmdsZSBjb3B5IG9mIGVhY2ggQlRGIHR5cGUgdGhhdCBkZXNjcmliZXMgc3RydWN0cyBgQWAsIGBCYCwgYW5kIGBTYFxuQEAgLTU2NDQsNyAmIzQzOzU2NDQsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kZWR1cF9yZXNvbHZlX2Z3ZHMoc3RydWN0IGJ0Zl9kZWR1cCAqZClcbiAgKlxuICAqIEFmdGVyIHdlIGVzdGFibGlzaGVkIGZvciBlYWNoIHR5cGUgaXRzIGNvcnJlc3BvbmRpbmcgY2Fub25pY2FsIHJlcHJlc2VudGF0aXZlXG4gICogdHlwZSwgd2Ugbm93IGNhbiBlbGltaW5hdGUgdHlwZXMgdGhhdCBhcmUgbm90IGNhbm9uaWNhbCBhbmQgbGVhdmUgb25seVxuLSAqIGNhbm9uaWNhbCBvbmVzIGxheWVkIG91dCBzZXF1ZW50aWFsbHkgaW4gbWVtb3J5IGJ5IGNvcHlpbmcgdGhlbSBvdmVyXG4mIzQzOyAqIGNhbm9uaWNhbCBvbmVzIGxhaWQgb3V0IHNlcXVlbnRpYWxseSBpbiBtZW1vcnkgYnkgY29weWluZyB0aGVtIG92ZXJcbiAgKiBkdXBsaWNhdGVzLiBEdXJpbmcgY29tcGFjdGlvbiBidGZfZGVkdXAtXHUwMDNlaHlwb3RfbWFwIGFycmF5IGlzIHJldXNlZCB0byBzdG9yZVxuICAqIGEgbWFwIGZyb20gb3JpZ2luYWwgdHlwZSBJRCB0byBhIG5ldyBjb21wYWN0ZWQgdHlwZSBJRCwgd2hpY2ggd2lsbCBiZSB1c2VkXG4gICogZHVyaW5nIG5leHQgcGhhc2UgdG8gXCYjMzQ7Zml4IHVwXCYjMzQ7IHR5cGUgSURzLCByZWZlcmVuY2VkIGZyb20gc3RydWN0L3VuaW9uIGFuZFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvdXNkdC5jIGIvdG9vbHMvbGliL2JwZi91c2R0LmNcbmluZGV4IDJlNTZlM2FiNWI2Y2MuLmMwOTMzNTgwOTMwYmMgMTAwNjQ0XG4tLS0gYS90b29scy9saWIvYnBmL3VzZHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi91c2R0LmNcbkBAIC0xNDQsNyAmIzQzOzE0NCw3IEBAXG4gICogYWJvdXQuIFRoaXMgc3RhdGUgaGFzIHRvIGJlIG1haW50YWluZWQgcGVyLUJQRiBvYmplY3QgYW5kIGNvb3JkaW5hdGVcbiAgKiBiZXR3ZWVuIGRpZmZlcmVudCBVU0RUIGF0dGFjaG1lbnRzIHdpdGhpbiB0aGUgc2FtZSBCUEYgb2JqZWN0LlxuICAqXG4tICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGF5ZWQgb3V0XG4mIzQzOyAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxhaWQgb3V0XG4gICogYXMgc3RydWN0IHVzZHRfc3BlYy4gRWFjaCBpbnZvY2F0aW9uIG9mIEJQRiBwcm9ncmFtIGF0IHJ1bnRpbWUgbmVlZHMgdG9cbiAgKiBrbm93IGl0cyBhc3NvY2lhdGVkIHNwZWMgSUQuIEl0IGdldHMgaXQgZWl0aGVyIHRocm91Z2ggQlBGIGNvb2tpZSwgd2hpY2hcbiAgKiBsaWJicGYgc2V0cyB0byBzcGVjIElEIGR1cmluZyBhdHRhY2ggdGltZSwgb3IsIGlmIGtlcm5lbCBpcyB0b28gb2xkIHRvXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jXG5pbmRleCA1MTM1ZDVjNzJhNDZkLi4xNThkOTVjMjUyMGJmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcbkBAIC0yMjEsNyAmIzQzOzIyMSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBjaGVja19hc2FuX2FyZ3MoczggX19hcmVuYSAqYWRkciwgc2l6ZV90IHNpemUsXG4gXHRcdGdvdG8gY29uZmlybWVkX3ZhbGlkO1xuIFxuIFx0Lypcbi1cdCAqIFdyYXBhcm91bmQgaXMgcG9zc2libGUgZm9yIHZhbHVlcyBjbG9zZSB0byB0aGUgdGhlIGVkZ2Ugb2YgdGhlXG4mIzQzO1x0ICogV3JhcGFyb3VuZCBpcyBwb3NzaWJsZSBmb3IgdmFsdWVzIGNsb3NlIHRvIHRoZSBlZGdlIG9mIHRoZVxuIFx0ICogNEdpQiBib3VuZGFyeSBvZiB0aGUgYXJlbmEgKGxhc3QgdmFsaWQgYWRkcmVzcyBpcyAxVUwgXHUwMDNjXHUwMDNjIDMyIC0gMSkuXG4gXHQgKlxuIFx0ICpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbmluZGV4IDFiMjVkNWM1ZjhmYjguLjhiOTZmYjg2MTM2ODggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuY1xuQEAgLTEzLDcgJiM0MzsxMyw3IEBAXG4gICogSVB2NiBoZWFkZXIgd2l0aCBhIFNlZ21lbnQgUm91dGluZyBIZWFkZXIsIHdpdGggc2VnbWVudHMgOlxuICAqXHRmZDAwOjoxIC1cdTAwM2UgZmQwMDo6MiAtXHUwMDNlIGZkMDA6OjMgLVx1MDAzZSBmZDAwOjo0XG4gICpcbi0gKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYmluZGVkIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxuJiM0MzsgKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYm91bmQgdG8gc2VnNmxvY2FsIEVuZC5CUEYgYWN0aW9ucyA6XG4gICogLSBmZDAwOjoxIDogYWRkIGEgVExWLCBjaGFuZ2UgdGhlIGZsYWdzIGFuZCBhcHBseSBhIEVuZC5YIGFjdGlvbiB0byBmYzQyOjoxXG4gICogLSBmZDAwOjoyIDogcmVtb3ZlIHRoZSBUTFYsIGNoYW5nZSB0aGUgZmxhZ3MsIGFkZCBhIHRhZ1xuICAqIC0gZmQwMDo6MyA6IGFwcGx5IGFuIEVuZC5UIGFjdGlvbiB0byBmZDAwOjo0LCB0aHJvdWdoIHJvdXRpbmcgdGFibGUgMTE3XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxuaW5kZXggOGFlNGZiMjAyN2Y3My4uOWYyOTcxZmM3Y2Q1NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxuQEAgLTI0Myw3ICYjNDM7MjQzLDcgQEAgc3RhdGljIHRsZF9rZXlfdCBfX3RsZF9jcmVhdGVfa2V5KGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLCBib29sIGR5bl9kYXRhKVxuIFx0XHR9XG4gXG4gXHRcdC8qXG4tXHRcdCAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcbiYjNDM7XHRcdCAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwIHRvIGEgcGFnZSB3aGlsZSBhdCBtb3N0XG4gXHRcdCAqIFRMRF9EWU5fREFUQV9TSVpFIGlzIGFsbG9jYXRlZCBmb3IgdGxkX2NyZWF0ZV9rZXkoKVxuIFx0XHQgKi9cbiBcdFx0aWYgKGR5bl9kYXRhKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jXG5pbmRleCA2MjQwNzhhYmYzZGVhLi5kN2UzMGVlNTc2YzkzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcbkBAIC03LDcgJiM0Mzs3LDcgQEBcbiBcbiBTRUMoXCYjMzQ7ZnJlcGxhY2UvYnRmX3VucmVsaWFibGVfa3Byb2JlXCYjMzQ7KVxuIC8qIGNvbnRleHQgdHlwZSBpcyB3aGF0IEJQRiB2ZXJpZmllciBleHBlY3RzIGZvciBrcHJvYmUgY29udGV4dCwgYnV0IHRhcmdldFxuLSAqIHByb2dyYW0gaGFzIGBzdHVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmVcbiYjNDM7ICogcHJvZ3JhbSBoYXMgYHN0cnVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmVcbiAgKiByZWplY3RlZCB3aXRoIHRoZSBmb2xsb3dpbmcgbWVzc2FnZTpcbiAgKlxuICAqIGFyZzAgcmVwbGFjZV9idGZfdW5yZWxpYWJsZV9rcHJvYmUoc3RydWN0IHB0X3JlZ3MgKikgZG9lc24mIzM5O3QgbWF0Y2ggYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCB3aGF0ZXZlciAqKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbmluZGV4IDYyZDdkZjllODBiZWIuLjM0MDY3MGU4OWJhOTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbkBAIC0xNTExLDcgJiM0MzsxNTExLDcgQEAgX19uYWtlZCBpbnQgY2hlY2twb2ludF9zdGF0ZXNfZGVsZXRpb24odm9pZClcbiBcdCAqIHdvdWxkIGdldCBlcXVhbCB0byBvbmUgb2YgdGhlIGV4cGxvcmVkIHN0YXRlcyBhbmQgdGh1cyBsb29wXG4gXHQgKiBleHBsb3JhdGlvbiB3b3VsZCBiZSBmaW5pc2hlZCAoYXQtbGVhc3QgZm9yIGEgc3BlY2lmaWMgcGF0aCkuXG4gXHQgKiBWZXJpZmllciBldmljdHMgZXhwbG9yZWQgc3RhdGVzIHdpdGggaGlnaCBtaXNzIHRvIGhpdCByYXRpb1xuLVx0ICogdG8gdG8gYXZvaWQgY29tcGFyaW5nIGN1cnJlbnQgc3RhdGUgd2l0aCB0b28gbWFueSBleHBsb3JlZFxuJiM0MztcdCAqIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWRcbiBcdCAqIHN0YXRlcyBwZXIgaW5zdHJ1Y3Rpb24uXG4gXHQgKiBUaGlzIHRlc3QgaXMgZGVzaWduZWQgdG8gXCYjMzQ7c3RyZXNzIHRlc3RcJiMzNDsgZXZpY3Rpb24gcG9saWN5IGRlZmluZWQgdXNpbmcgZm9ybXVsYTpcbiBcdCAqXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcbmluZGV4IGE2M2UzMzY3NTA5MTguLjIyN2RlYTBkYTNhMDUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jXG5AQCAtMjI1LDcgJiM0MzsyMjUsNyBAQCBfX25ha2VkIHZvaWQgc3RhY2tfd3JpdGVfcHJpdl92c191bnByaXYodm9pZClcbiB9XG4gXG4gLyogU2ltaWxhciB0byB0aGUgcHJldmlvdXMgdGVzdCwgYnV0IHRoaXMgdGltZSBhbHNvIHBlcmZvcm0gYSByZWFkIGZyb20gdGhlXG4tICogYWRkcmVzcyB3cml0dGVuIHRvIHdpdGggYSB2YXJpYWJsZSBvZmZldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxuJiM0MzsgKiBhZGRyZXNzIHdyaXR0ZW4gdG8gd2l0aCBhIHZhcmlhYmxlIG9mZnNldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxuICAqIGFmdGVyIGEgdmFyaWFibGUtb2Zmc2V0IHdyaXRlLCBhIHByaXZpbGVnZWQgcHJvZ3JhbSBjYW4gcmVhZCB0aGUgc2xvdHMgdGhhdFxuICAqIHdlcmUgaW4gdGhlIHJhbmdlIG9mIHRoYXQgd3JpdGUgKGV2ZW4gaWYgdGhlIHZlcmlmaWVyIGRvZXNuJiMzOTt0IGFjdHVhbGx5IGtub3cgaWZcbiAgKiB0aGUgc2xvdCBiZWluZyByZWFkIHdhcyByZWFsbHkgd3JpdHRlbiB0byBvciBub3QuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjM6MDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIHNvbGVseSBvZiBjb21tZW50IHNwZWxsaW5nIGZpeGVzIGFjcm9zcyBrZXJuZWwgc291cmNlIGZpbGVzLCBoZWFkZXIgZmlsZXMsIGFuZCB0b29scy9zZWxmdGVzdHMuIE5vIGV4ZWN1dGFibGUgY29kZSwgZGF0YSBzdHJ1Y3R1cmVzLCBjb250cm9sIGZsb3csIG9yIHJ1bnRpbWUgYXNzZXJ0aW9ucyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGQ0ZDM0YWQ5MTFlNWI3ZWZkYzMzZjdmY2VlMmY0YTc1YjIwZjIzZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgU2VwIDUgMjM6MDA6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYwppbmRleCA5ZWRlODFhZmJjNTBlLi5iMWMyMWMwMTRjOWNmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmMKQEAgLTEzNDYsNyAmIzQzOzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYywKIAlhcm1fYnBmX3B1dF9yZWc2NChkc3QsIHJkLCBjdHgpOwogfQogCi0vKiBBcml0aG1hdGljIE9wZXJhdGlvbiAqLwomIzQzOy8qIEFyaXRobWV0aWMgT3BlcmF0aW9uICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9hcl9yKGNvbnN0IHU4IHJkLCBjb25zdCB1OCBydCwgY29uc3QgdTggcm0sCiAJCQkgICAgIGNvbnN0IHU4IHJuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1OCBvcCwKIAkJCSAgICAgYm9vbCBpc19qbXA2NCkgewpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jCmluZGV4IGJmZGM1MDc0MGRhOGUuLmNmOGMxYjQ5ZGEyNTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmMKQEAgLTIzLDcgJiM0MzsyMyw3IEBACiAgKgogICoJCVsJcHJldiBzcAkJXSAmbHQ7LS0tLS0tLS0tLS0tLQogICoJCVsgICBudiBncHIgc2F2ZSBhcmVhCV0gMTYgKiA0CXwKLSAqIGZwIChyMzEpIC0tJmd0OwlbICAgZWJwZiBzdGFjayBzcGFjZQldIHVwdG8gNTEyCXwKJiM0MzsgKiBmcCAocjMxKSAtLSZndDsJWyAgIGVicGYgc3RhY2sgc3BhY2UJXSB1cCB0byA1MTIJfAogICoJCVsgICAgIGZyYW1lIGhlYWRlcgldIDE2CQl8CiAgKiBzcCAocjEpIC0tLSZndDsJWyAgICBzdGFjayBwb2ludGVyCV0gLS0tLS0tLS0tLS0tLS0KICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IGZjOWRiNjkxZTgyMDMuLjhhMWEwMDAyNmM2OWYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMKQEAgLTIzLDcgJiM0MzsyMyw3IEBACiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZToKICAqIExheW91dCB3aGVuIHNldHRpbmcgdXAgb3VyIG93biBzdGFjayBmcmFtZS4KICAqIE5vdGU6IHIxIGF0IGJvdHRvbSwgY29tcG9uZW50IG9mZnNldHMgcG9zaXRpdmUgd3J0IHIxLgotICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50CiYjNDM7ICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXAgdG8gbG9jYWxfdG1wX3Zhcikgc3RheXMgY29uc2lzdGVudAogICogd2l0aCBvdXIgcmVkem9uZSB1c2FnZS4KICAqCiAgKiB0YWlsX2NhbGxfaW5mbyAtIHN0b3JlcyB0YWlsY2FsbCBjb3VudCB2YWx1ZSBpbiBtYWluIHByb2dyYW0mIzM5O3MKQEAgLTM1LDcgJiM0MzszNSw3IEBACiAgKgkJWyAgIG52IGdwciBzYXZlIGFyZWEJXSAoNiAqIDgpCXwKICAqCQlbIGFkZGwuIG52IGdwciBzYXZlIGFyZWFdICgxMiAqIDgpCXwgJmx0Oy0tLSBleGNlcHRpb24gYm91bmRhcnkvY2FsbGJhY2sgcHJvZ3JhbQogICoJCVsgICAgbG9jYWxfdG1wX3ZhcgldIDI0CQl8Ci0gKiBmcCAocjMxKSAtLSZndDsJWyAgIGVicGYgc3RhY2sgc3BhY2UJXSB1cHRvIDUxMgl8CiYjNDM7ICogZnAgKHIzMSkgLS0mZ3Q7CVsgICBlYnBmIHN0YWNrIHNwYWNlCV0gdXAgdG8gNTEyCXwKICAqCQlbICAgICBmcmFtZSBoZWFkZXIJXSAzMi8xMTIJfAogICogc3AgKHIxKSAtLS0mZ3Q7CVsgICAgc3RhY2sgcG9pbnRlcgldIC0tLS0tLS0tLS0tLS0tCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlMKaW5kZXggYTJlMjhlMDQ2NGEzMy4uODE0MzBmMDY1YWM5NyAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TCkBAIC0xOTUsNyAmIzQzOzE5NSw3IEBAIGJwZl9lcnJvcjoKIAkvKiBNYWtlIHRoZSBKSVQgcHJvZ3JhbSByZXR1cm4gemVyby4gIFRoZSBKSVQgZXBpbG9ndWUKIAkgKiBzdG9yZXMgYXdheSB0aGUgb3JpZ2luYWwgJW83IGludG8gcl9zYXZlZF9PNy4gIFRoZQogCSAqIG5vcm1hbCBsZWFmIGZ1bmN0aW9uIHJldHVybiBpcyB0byB1c2UgJiMzNDtyZXRsJiMzNDsgd2hpY2gKLQkgKiB3b3VsZCBldmFsdXRlIHRvICYjMzQ7am1wbCAlbzcgJiM0MzsgOCwgJWcwJiMzNDsgYnV0IHdlIHdhbnQgdG8KJiM0MzsJICogd291bGQgZXZhbHVhdGUgdG8gJiMzNDtqbXBsICVvNyAmIzQzOyA4LCAlZzAmIzM0OyBidXQgd2Ugd2FudCB0bwogCSAqIHVzZSB0aGUgc2F2ZWQgdmFsdWUgdGh1cyB0aGUgc2VxdWVuY2UgeW91IHNlZSBoZXJlLgogCSAqLwogCWptcGwJcl9zYXZlZF9PNyAmIzQzOyA4LCAlZzAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmggYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oCmluZGV4IDRhOWJjNmE4NDhmMmUuLjBhMDY3YzJlOTIzZGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaApAQCAtMTQ3LDcgJiM0MzsxNDcsNyBAQCBzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlcjsKICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pCQkJCVwKIAlCUEZfQUxVMzJfSU1NX09GRihPUCwgRFNULCBJTU0sIDApCiAKLS8qIEVuZGlhbmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqLwomIzQzOy8qIEVuZGlhbm5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi8KIAogI2RlZmluZSBCUEZfRU5ESUFOKFRZUEUsIERTVCwgTEVOKQkJCQlcCiAJKChzdHJ1Y3QgYnBmX2luc24pIHsJCQkJCVwKQEAgLTEwMjksNyAmIzQzOzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIHU4ICpicGZfc2tiX2NiKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCiAJICoKIAkgKiBJbiBzb21lIHNvY2tldCBmaWx0ZXIgY2FzZXMsIHRoZSBjYiB1bmZvcnR1bmF0ZWx5IG5lZWRzIHRvIGJlCiAJICogc2F2ZWQvcmVzdG9yZWQgc28gdGhhdCBwcm90b2NvbCBzcGVjaWZpYyBza2ItJmd0O2NiW10gZGF0YSB3b24mIzM5O3QKLQkgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWRnZWQgZUJQRiBwcm9ncmFtcwomIzQzOwkgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWdlZCBlQlBGIHByb2dyYW1zCiAJICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWEKIAkgKiB0byBub3QgbGVhayBwcmV2aW91cyBjb250ZW50cyB0byB1c2VyIHNwYWNlLgogCSAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuYyBiL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmMKaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jCkBAIC0yMDcsNyAmIzQzOzIwNyw3IEBAIHJldXNlcG9ydF9hcnJheV91cGRhdGVfY2hlY2soY29uc3Qgc3RydWN0IHJldXNlcG9ydF9hcnJheSAqYXJyYXksCiAJCXJldHVybiAtRU5PVFNVUFA7CiAKIAkvKgotCSAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYmluZGVkCiYjNDM7CSAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYm91bmQKIAkgKiBpbiB0aGUgVURQIGNhc2UpIGFuZAogCSAqIGl0IG11c3QgYWxzbyBiZSBhIFNPX1JFVVNFUE9SVCBzayAoaS5lLiByZXVzZSBjYW5ub3QgYmUgTlVMTCkuCiAJICoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvc3RyZWFtLmMgYi9rZXJuZWwvYnBmL3N0cmVhbS5jCmluZGV4IGJlOWNlOThlOTQ2OTIuLjU0ZjViZTEyODlkMmIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvc3RyZWFtLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9zdHJlYW0uYwpAQCAtMjQsNyAmIzQzOzI0LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfc3RyZWFtX2VsZW0gKmJwZl9zdHJlYW1fZWxlbV9hbGxvYyhpbnQgbGVuKQogCS8qCiAJICogTGVuZ3RoIGRlbm90ZXMgdGhlIGFtb3VudCBvZiBkYXRhIHRvIGJlIHdyaXR0ZW4gYXMgcGFydCBvZiBzdHJlYW0gZWxlbWVudCwKIAkgKiB0aHVzIGluY2x1ZGVzICYjMzk7XDAmIzM5OyBieXRlLiBXZSYjMzk7cmUgY2FwcGVkIGJ5IGhvdyBtdWNoIGJwZl9icHJpbnRmX2J1ZmZlcnMgY2FuCi0JICogYWNjb21vZGF0ZSwgdGhlcmVmb3JlIGRlbnkgYWxsb2NhdGlvbnMgdGhhdCB3b24mIzM5O3QgZml0IGludG8gdGhlbS4KJiM0MzsJICogYWNjb21tb2RhdGUsIHRoZXJlZm9yZSBkZW55IGFsbG9jYXRpb25zIHRoYXQgd29uJiMzOTt0IGZpdCBpbnRvIHRoZW0uCiAJICovCiAJaWYgKGxlbiAmbHQ7IDAgfHwgbGVuICZndDsgbWF4X2xlbikKIAkJcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2J0Zi5jIGIvdG9vbHMvbGliL2JwZi9idGYuYwppbmRleCA4NDE3ZGU5MmQwMjgyLi5jMTc0NWJlZTM3YzBhIDEwMDY0NAotLS0gYS90b29scy9saWIvYnBmL2J0Zi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2xpYi9icGYvYnRmLmMKQEAgLTM4NDMsNyAmIzQzOzM4NDMsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kZWR1cF9yZW1hcF90eXBlcyhzdHJ1Y3QgYnRmX2RlZHVwICpkKTsKICAqIHR5cGVzLCBpbiBnZW5lcmFsLCBjYW4gZm9ybSBncmFwaHMgY29udGFpbmluZyBjeWNsZXMsIG5vdCBqdXN0IERBR3MuCiAgKgogICogV2hpbGUgYWxnb3JpdGhtIGRvZXMgZGVkdXBsaWNhdGlvbiwgaXQgYWxzbyBtZXJnZXMgYW5kIHJlc29sdmVzIHR5cGUKLSAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaHQgYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS4KJiM0MzsgKiBpbmZvcm1hdGlvbiAodW5sZXNzIGRpc2FibGVkIHRocm91Z2ggYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS4KICAqIEUuZy4sIGluIHRoZSBleGFtcGxlIGFib3ZlIHdpdGggdHdvIGNvbXBpbGF0aW9uIHVuaXRzIGhhdmluZyBwYXJ0aWFsIHR5cGUKICAqIGluZm9ybWF0aW9uIGZvciBzdHJ1Y3RzIGBBYCBhbmQgYEJgLCB0aGUgb3V0cHV0IG9mIGFsZ29yaXRobSB3aWxsIGVtaXQKICAqIGEgc2luZ2xlIGNvcHkgb2YgZWFjaCBCVEYgdHlwZSB0aGF0IGRlc2NyaWJlcyBzdHJ1Y3RzIGBBYCwgYEJgLCBhbmQgYFNgCkBAIC01NjQ0LDcgJiM0Mzs1NjQ0LDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVzb2x2ZV9md2RzKHN0cnVjdCBidGZfZGVkdXAgKmQpCiAgKgogICogQWZ0ZXIgd2UgZXN0YWJsaXNoZWQgZm9yIGVhY2ggdHlwZSBpdHMgY29ycmVzcG9uZGluZyBjYW5vbmljYWwgcmVwcmVzZW50YXRpdmUKICAqIHR5cGUsIHdlIG5vdyBjYW4gZWxpbWluYXRlIHR5cGVzIHRoYXQgYXJlIG5vdCBjYW5vbmljYWwgYW5kIGxlYXZlIG9ubHkKLSAqIGNhbm9uaWNhbCBvbmVzIGxheWVkIG91dCBzZXF1ZW50aWFsbHkgaW4gbWVtb3J5IGJ5IGNvcHlpbmcgdGhlbSBvdmVyCiYjNDM7ICogY2Fub25pY2FsIG9uZXMgbGFpZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlcgogICogZHVwbGljYXRlcy4gRHVyaW5nIGNvbXBhY3Rpb24gYnRmX2RlZHVwLSZndDtoeXBvdF9tYXAgYXJyYXkgaXMgcmV1c2VkIHRvIHN0b3JlCiAgKiBhIG1hcCBmcm9tIG9yaWdpbmFsIHR5cGUgSUQgdG8gYSBuZXcgY29tcGFjdGVkIHR5cGUgSUQsIHdoaWNoIHdpbGwgYmUgdXNlZAogICogZHVyaW5nIG5leHQgcGhhc2UgdG8gJiMzNDtmaXggdXAmIzM0OyB0eXBlIElEcywgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdC91bmlvbiBhbmQKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvdXNkdC5jIGIvdG9vbHMvbGliL2JwZi91c2R0LmMKaW5kZXggMmU1NmUzYWI1YjZjYy4uYzA5MzM1ODA5MzBiYyAxMDA2NDQKLS0tIGEvdG9vbHMvbGliL2JwZi91c2R0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi91c2R0LmMKQEAgLTE0NCw3ICYjNDM7MTQ0LDcgQEAKICAqIGFib3V0LiBUaGlzIHN0YXRlIGhhcyB0byBiZSBtYWludGFpbmVkIHBlci1CUEYgb2JqZWN0IGFuZCBjb29yZGluYXRlCiAgKiBiZXR3ZWVuIGRpZmZlcmVudCBVU0RUIGF0dGFjaG1lbnRzIHdpdGhpbiB0aGUgc2FtZSBCUEYgb2JqZWN0LgogICoKLSAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxheWVkIG91dAomIzQzOyAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxhaWQgb3V0CiAgKiBhcyBzdHJ1Y3QgdXNkdF9zcGVjLiBFYWNoIGludm9jYXRpb24gb2YgQlBGIHByb2dyYW0gYXQgcnVudGltZSBuZWVkcyB0bwogICoga25vdyBpdHMgYXNzb2NpYXRlZCBzcGVjIElELiBJdCBnZXRzIGl0IGVpdGhlciB0aHJvdWdoIEJQRiBjb29raWUsIHdoaWNoCiAgKiBsaWJicGYgc2V0cyB0byBzcGVjIElEIGR1cmluZyBhdHRhY2ggdGltZSwgb3IsIGlmIGtlcm5lbCBpcyB0b28gb2xkIHRvCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMKaW5kZXggNTEzNWQ1YzcyYTQ2ZC4uMTU4ZDk1YzI1MjBiZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYwpAQCAtMjIxLDcgJiM0MzsyMjEsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2hlY2tfYXNhbl9hcmdzKHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzaXplLAogCQlnb3RvIGNvbmZpcm1lZF92YWxpZDsKIAogCS8qCi0JICogV3JhcGFyb3VuZCBpcyBwb3NzaWJsZSBmb3IgdmFsdWVzIGNsb3NlIHRvIHRoZSB0aGUgZWRnZSBvZiB0aGUKJiM0MzsJICogV3JhcGFyb3VuZCBpcyBwb3NzaWJsZSBmb3IgdmFsdWVzIGNsb3NlIHRvIHRoZSBlZGdlIG9mIHRoZQogCSAqIDRHaUIgYm91bmRhcnkgb2YgdGhlIGFyZW5hIChsYXN0IHZhbGlkIGFkZHJlc3MgaXMgMVVMICZsdDsmbHQ7IDMyIC0gMSkuCiAJICoKIAkgKgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jCmluZGV4IDFiMjVkNWM1ZjhmYjguLjhiOTZmYjg2MTM2ODggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMKQEAgLTEzLDcgJiM0MzsxMyw3IEBACiAgKiBJUHY2IGhlYWRlciB3aXRoIGEgU2VnbWVudCBSb3V0aW5nIEhlYWRlciwgd2l0aCBzZWdtZW50cyA6CiAgKglmZDAwOjoxIC0mZ3Q7IGZkMDA6OjIgLSZndDsgZmQwMDo6MyAtJmd0OyBmZDAwOjo0CiAgKgotICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJpbmRlZCB0byBzZWc2bG9jYWwgRW5kLkJQRiBhY3Rpb25zIDoKJiM0MzsgKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYm91bmQgdG8gc2VnNmxvY2FsIEVuZC5CUEYgYWN0aW9ucyA6CiAgKiAtIGZkMDA6OjEgOiBhZGQgYSBUTFYsIGNoYW5nZSB0aGUgZmxhZ3MgYW5kIGFwcGx5IGEgRW5kLlggYWN0aW9uIHRvIGZjNDI6OjEKICAqIC0gZmQwMDo6MiA6IHJlbW92ZSB0aGUgVExWLCBjaGFuZ2UgdGhlIGZsYWdzLCBhZGQgYSB0YWcKICAqIC0gZmQwMDo6MyA6IGFwcGx5IGFuIEVuZC5UIGFjdGlvbiB0byBmZDAwOjo0LCB0aHJvdWdoIHJvdXRpbmcgdGFibGUgMTE3CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oCmluZGV4IDhhZTRmYjIwMjdmNzMuLjlmMjk3MWZjN2NkNTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oCkBAIC0yNDMsNyAmIzQzOzI0Myw3IEBAIHN0YXRpYyB0bGRfa2V5X3QgX190bGRfY3JlYXRlX2tleShjb25zdCBjaGFyICpuYW1lLCBzaXplX3Qgc2l6ZSwgYm9vbCBkeW5fZGF0YSkKIAkJfQogCiAJCS8qCi0JCSAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3QKJiM0MzsJCSAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwIHRvIGEgcGFnZSB3aGlsZSBhdCBtb3N0CiAJCSAqIFRMRF9EWU5fREFUQV9TSVpFIGlzIGFsbG9jYXRlZCBmb3IgdGxkX2NyZWF0ZV9rZXkoKQogCQkgKi8KIAkJaWYgKGR5bl9kYXRhKSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMKaW5kZXggNjI0MDc4YWJmM2RlYS4uZDdlMzBlZTU3NmM5MyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZyZXBsYWNlX3VucmVsaWFibGVfcHJvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuYwpAQCAtNyw3ICYjNDM7Nyw3IEBACiAKIFNFQygmIzM0O2ZyZXBsYWNlL2J0Zl91bnJlbGlhYmxlX2twcm9iZSYjMzQ7KQogLyogY29udGV4dCB0eXBlIGlzIHdoYXQgQlBGIHZlcmlmaWVyIGV4cGVjdHMgZm9yIGtwcm9iZSBjb250ZXh0LCBidXQgdGFyZ2V0Ci0gKiBwcm9ncmFtIGhhcyBgc3R1Y3Qgd2hhdGV2ZXIgKmN0eGAgYXJndW1lbnQsIHNvIGZyZXBsYWNlIG9wZXJhdGlvbiB3aWxsIGJlCiYjNDM7ICogcHJvZ3JhbSBoYXMgYHN0cnVjdCB3aGF0ZXZlciAqY3R4YCBhcmd1bWVudCwgc28gZnJlcGxhY2Ugb3BlcmF0aW9uIHdpbGwgYmUKICAqIHJlamVjdGVkIHdpdGggdGhlIGZvbGxvd2luZyBtZXNzYWdlOgogICoKICAqIGFyZzAgcmVwbGFjZV9idGZfdW5yZWxpYWJsZV9rcHJvYmUoc3RydWN0IHB0X3JlZ3MgKikgZG9lc24mIzM5O3QgbWF0Y2ggYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCB3aGF0ZXZlciAqKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwppbmRleCA2MmQ3ZGY5ZTgwYmViLi4zNDA2NzBlODliYTkyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwpAQCAtMTUxMSw3ICYjNDM7MTUxMSw3IEBAIF9fbmFrZWQgaW50IGNoZWNrcG9pbnRfc3RhdGVzX2RlbGV0aW9uKHZvaWQpCiAJICogd291bGQgZ2V0IGVxdWFsIHRvIG9uZSBvZiB0aGUgZXhwbG9yZWQgc3RhdGVzIGFuZCB0aHVzIGxvb3AKIAkgKiBleHBsb3JhdGlvbiB3b3VsZCBiZSBmaW5pc2hlZCAoYXQtbGVhc3QgZm9yIGEgc3BlY2lmaWMgcGF0aCkuCiAJICogVmVyaWZpZXIgZXZpY3RzIGV4cGxvcmVkIHN0YXRlcyB3aXRoIGhpZ2ggbWlzcyB0byBoaXQgcmF0aW8KLQkgKiB0byB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkCiYjNDM7CSAqIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWQKIAkgKiBzdGF0ZXMgcGVyIGluc3RydWN0aW9uLgogCSAqIFRoaXMgdGVzdCBpcyBkZXNpZ25lZCB0byAmIzM0O3N0cmVzcyB0ZXN0JiMzNDsgZXZpY3Rpb24gcG9saWN5IGRlZmluZWQgdXNpbmcgZm9ybXVsYToKIAkgKgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmMKaW5kZXggYTYzZTMzNjc1MDkxOC4uMjI3ZGVhMGRhM2EwNSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jCkBAIC0yMjUsNyAmIzQzOzIyNSw3IEBAIF9fbmFrZWQgdm9pZCBzdGFja193cml0ZV9wcml2X3ZzX3VucHJpdih2b2lkKQogfQogCiAvKiBTaW1pbGFyIHRvIHRoZSBwcmV2aW91cyB0ZXN0LCBidXQgdGhpcyB0aW1lIGFsc28gcGVyZm9ybSBhIHJlYWQgZnJvbSB0aGUKLSAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2ZmZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCwKJiM0MzsgKiBhZGRyZXNzIHdyaXR0ZW4gdG8gd2l0aCBhIHZhcmlhYmxlIG9mZnNldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LAogICogYWZ0ZXIgYSB2YXJpYWJsZS1vZmZzZXQgd3JpdGUsIGEgcHJpdmlsZWdlZCBwcm9ncmFtIGNhbiByZWFkIHRoZSBzbG90cyB0aGF0CiAgKiB3ZXJlIGluIHRoZSByYW5nZSBvZiB0aGF0IHdyaXRlIChldmVuIGlmIHRoZSB2ZXJpZmllciBkb2VzbiYjMzk7dCBhY3R1YWxseSBrbm93IGlmCiAgKiB0aGUgc2xvdCBiZWluZyByZWFkIHdhcyByZWFsbHkgd3JpdHRlbiB0byBvciBub3QuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDIzOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNTQKCQkJCQkJCW91dHB1dDogNzEKCQkJCQkJCXRob3VnaHRzOiA2NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXMgYW5kIERldGVybWluYXRpb24gb2YgV29ydGhGdXp6aW5nIFN0YXR1cyoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBzY2FuIG9mIHRoZSBkaWZmIHJldmVhbHMgdGhhdCAqZXZlcnkgc2luZ2xlKiBjaGFuZ2UgaXMgYSBjb21tZW50IHNwZWxsaW5nIGZpeC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY29ycmVjdGlvbnMgdG8gY29tbWVudHMgYWNyb3NzIGEgdmFyaWV0eSBvZiBmaWxlczogYGFyY2gvYXJtYCwgYGFyY2gvcG93ZXJwY2AsIGBhcmNoL3NwYXJjYCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSwgdGhlIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCBoZWFkZXIsIHRoZSBga2VybmVsL2JwZmAgZGlyZWN0b3J5LCBhbmQgZXZlbiB0aGUgYHRvb2xzL2xpYi9icGZgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmYCBkaXJlY3Rvcmllcy4gTm90aGluZyB0b3VjaGVzIGFjdHVhbCBleGVjdXRhYmxlIGNvZGUsIHJ1bnRpbWUgY2hlY2tzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHRoZSB1bmRlcmx5aW5nIGxvZ2ljLiBJdCYjMzk7cyBhbGwgYWJvdXQgaW1wcm92aW5nIHRoZSByZWFkYWJpbGl0eSBvZiB0aGUgY29tbWVudHMuCgpOb3csIGxldCYjMzk7cyBhcHBseSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZnJvbSB0aGUgaW5zdHJ1Y3Rpb25zIHRvIHRoaXMgcGF0Y2guIFRoZSBpbnN0cnVjdGlvbnMgZGVmaW5lIHNwZWNpZmljIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBzaG91bGQgYmUgc2V0IHRvIGZhbHNlLiBDb25kaXRpb24gbnVtYmVyIHR3byBpcyBjbGVhcmx5IHJlbGV2YW50IGhlcmU6IGl0IGxpc3RzIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGFuZCBzcGVsbGluZyBmaXhlcyBhcyBmYWxsaW5nIHVuZGVyIHRoZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGNhdGVnb3J5LiBUaGlzIHBhdGNoJiMzOTtzIGVudGlyZXR5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4gV2UmIzM5O3JlICpvbmx5KiBkZWFsaW5nIHdpdGggY29tbWVudCBjb3JyZWN0aW9ucywgaW5jbHVkaW5nIGluIHNlbGZ0ZXN0cy4KClRoZXJlZm9yZSwgYmVjYXVzZSBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIHN0cmljdGx5IGNvbW1lbnQgc3BlbGxpbmcgZml4ZXMgYWNyb3NzIHRoZSBrZXJuZWwsIGhlYWRlcnMsIHNvdXJjZSBmaWxlcywgdG9vbHMgYW5kIHNlbGZ0ZXN0cywgSSBjb25jbHVkZSB0aGF0IGBXb3J0aEZ1enppbmdgIGFic29sdXRlbHkgbXVzdCBiZSBmYWxzZSBpbiB0aGlzIHNjZW5hcmlvLiBDb25zZXF1ZW50bHksIHRoZSBgRm9jdXNTeW1ib2xzYCBzZXQgc2hvdWxkIGFsc28gYmUgZW1wdHksIGFzIHRoZXJlIGFyZSBubyBzeW1ib2xzIHRvIGZvY3VzIG9uLiBTaW1pbGFybHksIHRoZSBgRW5hYmxlQ29uZmlnc2Agc2V0IHNob3VsZCBhbHNvIGJlIGVtcHR5LiBXZSBoYXZlIG5vdGhpbmcgaGVyZSB0aGF0IHdhcnJhbnRzIGZ1enppbmcgb3IgZW5hYmxpbmcgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCkkmIzM5O2xsIHByb2NlZWQgdG8gdmVyaWZ5IHRoZXNlIHNldHRpbmdzIHVzaW5nIHRoZSBwcm9wZXIgc2V0LXJlc3VsdHMgdG9vbCBjYWxsIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgc29sZWx5IG9mIGNvbW1lbnQgc3BlbGxpbmcgZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGhlYWRlciBmaWxlcywgYW5kIHRvb2xzL3NlbGZ0ZXN0cy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBkYXRhIHN0cnVjdHVyZXMsIGNvbnRyb2wgZmxvdywgb3IgcnVudGltZSBhc3NlcnRpb25zIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBzb2xlbHkgb2YgY29tbWVudCBzcGVsbGluZyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgaGVhZGVyIGZpbGVzLCBhbmQgdG9vbHMvc2VsZnRlc3RzLiBObyBleGVjdXRhYmxlIGNvZGUsIGRhdGEgc3RydWN0dXJlcywgY29udHJvbCBmbG93LCBvciBydW50aW1lIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAyMzowMDwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMjM6MDA6MzguNjU2OTU3NTA0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxMzA3MzgyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBzb2xlbHkgb2YgY29tbWVudCBzcGVsbGluZyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgaGVhZGVyIGZpbGVzLCBhbmQgdG9vbHMvc2VsZnRlc3RzLiBObyBleGVjdXRhYmxlIGNvZGUsIGRhdGEgc3RydWN0dXJlcywgY29udHJvbCBmbG93LCBvciBydW50aW1lIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMjM6MDA6MzguNjU2OTYyMjY0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgxOTc3Njk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGQ0ZDM0YWQ5MTFlNWI3ZWZkYzMzZjdmY2VlMmY0YTc1YjIwZjIzZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IFNlcCA1IDIzOjAwOjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmMgYi9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXFxuaW5kZXggOWVkZTgxYWZiYzUwZS4uYjFjMjFjMDE0YzljZiAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jXFxuKysrIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY1xcbkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYyxcXG4gXFx0YXJtX2JwZl9wdXRfcmVnNjQoZHN0LCByZCwgY3R4KTtcXG4gfVxcbiBcXG4tLyogQXJpdGhtYXRpYyBPcGVyYXRpb24gKi9cXG4rLyogQXJpdGhtZXRpYyBPcGVyYXRpb24gKi9cXG4gc3RhdGljIGlubGluZSB2b2lkIGVtaXRfYXJfcihjb25zdCB1OCByZCwgY29uc3QgdTggcnQsIGNvbnN0IHU4IHJtLFxcbiBcXHRcXHRcXHQgICAgIGNvbnN0IHU4IHJuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1OCBvcCxcXG4gXFx0XFx0XFx0ICAgICBib29sIGlzX2ptcDY0KSB7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbmluZGV4IGJmZGM1MDc0MGRhOGUuLmNmOGMxYjQ5ZGEyNTcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXFxuKysrIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTIzLDcgKzIzLDcgQEBcXG4gICpcXG4gICpcXHRcXHRbXFx0cHJldiBzcFxcdFxcdF0gXFx1MDAzYy0tLS0tLS0tLS0tLS1cXG4gICpcXHRcXHRbICAgbnYgZ3ByIHNhdmUgYXJlYVxcdF0gMTYgKiA0XFx0fFxcbi0gKiBmcCAocjMxKSAtLVxcdTAwM2VcXHRbICAgZWJwZiBzdGFjayBzcGFjZVxcdF0gdXB0byA1MTJcXHR8XFxuKyAqIGZwIChyMzEpIC0tXFx1MDAzZVxcdFsgICBlYnBmIHN0YWNrIHNwYWNlXFx0XSB1cCB0byA1MTJcXHR8XFxuICAqXFx0XFx0WyAgICAgZnJhbWUgaGVhZGVyXFx0XSAxNlxcdFxcdHxcXG4gICogc3AgKHIxKSAtLS1cXHUwMDNlXFx0WyAgICBzdGFjayBwb2ludGVyXFx0XSAtLS0tLS0tLS0tLS0tLVxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggZmM5ZGI2OTFlODIwMy4uOGExYTAwMDI2YzY5ZiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5AQCAtMjMsNyArMjMsNyBAQFxcbiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZTpcXG4gICogTGF5b3V0IHdoZW4gc2V0dGluZyB1cCBvdXIgb3duIHN0YWNrIGZyYW1lLlxcbiAgKiBOb3RlOiByMSBhdCBib3R0b20sIGNvbXBvbmVudCBvZmZzZXRzIHBvc2l0aXZlIHdydCByMS5cXG4tICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50XFxuKyAqIEVuc3VyZSB0aGUgdG9wIGhhbGYgKHVwIHRvIGxvY2FsX3RtcF92YXIpIHN0YXlzIGNvbnNpc3RlbnRcXG4gICogd2l0aCBvdXIgcmVkem9uZSB1c2FnZS5cXG4gICpcXG4gICogdGFpbF9jYWxsX2luZm8gLSBzdG9yZXMgdGFpbGNhbGwgY291bnQgdmFsdWUgaW4gbWFpbiBwcm9ncmFtJ3NcXG5AQCAtMzUsNyArMzUsNyBAQFxcbiAgKlxcdFxcdFsgICBudiBncHIgc2F2ZSBhcmVhXFx0XSAoNiAqIDgpXFx0fFxcbiAgKlxcdFxcdFsgYWRkbC4gbnYgZ3ByIHNhdmUgYXJlYV0gKDEyICogOClcXHR8IFxcdTAwM2MtLS0gZXhjZXB0aW9uIGJvdW5kYXJ5L2NhbGxiYWNrIHByb2dyYW1cXG4gICpcXHRcXHRbICAgIGxvY2FsX3RtcF92YXJcXHRdIDI0XFx0XFx0fFxcbi0gKiBmcCAocjMxKSAtLVxcdTAwM2VcXHRbICAgZWJwZiBzdGFjayBzcGFjZVxcdF0gdXB0byA1MTJcXHR8XFxuKyAqIGZwIChyMzEpIC0tXFx1MDAzZVxcdFsgICBlYnBmIHN0YWNrIHNwYWNlXFx0XSB1cCB0byA1MTJcXHR8XFxuICAqXFx0XFx0WyAgICAgZnJhbWUgaGVhZGVyXFx0XSAzMi8xMTJcXHR8XFxuICAqIHNwIChyMSkgLS0tXFx1MDAzZVxcdFsgICAgc3RhY2sgcG9pbnRlclxcdF0gLS0tLS0tLS0tLS0tLS1cXG4gICpcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcXG5pbmRleCBhMmUyOGUwNDY0YTMzLi44MTQzMGYwNjVhYzk3IDEwMDY0NFxcbi0tLSBhL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcXG4rKysgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXFxuQEAgLTE5NSw3ICsxOTUsNyBAQCBicGZfZXJyb3I6XFxuIFxcdC8qIE1ha2UgdGhlIEpJVCBwcm9ncmFtIHJldHVybiB6ZXJvLiAgVGhlIEpJVCBlcGlsb2d1ZVxcbiBcXHQgKiBzdG9yZXMgYXdheSB0aGUgb3JpZ2luYWwgJW83IGludG8gcl9zYXZlZF9PNy4gIFRoZVxcbiBcXHQgKiBub3JtYWwgbGVhZiBmdW5jdGlvbiByZXR1cm4gaXMgdG8gdXNlIFxcXCJyZXRsXFxcIiB3aGljaFxcbi1cXHQgKiB3b3VsZCBldmFsdXRlIHRvIFxcXCJqbXBsICVvNyArIDgsICVnMFxcXCIgYnV0IHdlIHdhbnQgdG9cXG4rXFx0ICogd291bGQgZXZhbHVhdGUgdG8gXFxcImptcGwgJW83ICsgOCwgJWcwXFxcIiBidXQgd2Ugd2FudCB0b1xcbiBcXHQgKiB1c2UgdGhlIHNhdmVkIHZhbHVlIHRodXMgdGhlIHNlcXVlbmNlIHlvdSBzZWUgaGVyZS5cXG4gXFx0ICovXFxuIFxcdGptcGxcXHRyX3NhdmVkX083ICsgOCwgJWcwXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmggYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuaW5kZXggNGE5YmM2YTg0OGYyZS4uMGEwNjdjMmU5MjNkYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IGN0bF90YWJsZV9oZWFkZXI7XFxuICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRCUEZfQUxVMzJfSU1NX09GRihPUCwgRFNULCBJTU0sIDApXFxuIFxcbi0vKiBFbmRpYW5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi9cXG4rLyogRW5kaWFubmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xcbiBcXG4gI2RlZmluZSBCUEZfRU5ESUFOKFRZUEUsIERTVCwgTEVOKVxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0KChzdHJ1Y3QgYnBmX2luc24pIHtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTEwMjksNyArMTAyOSw3IEBAIHN0YXRpYyBpbmxpbmUgdTggKmJwZl9za2JfY2IoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0ICpcXG4gXFx0ICogSW4gc29tZSBzb2NrZXQgZmlsdGVyIGNhc2VzLCB0aGUgY2IgdW5mb3J0dW5hdGVseSBuZWVkcyB0byBiZVxcbiBcXHQgKiBzYXZlZC9yZXN0b3JlZCBzbyB0aGF0IHByb3RvY29sIHNwZWNpZmljIHNrYi1cXHUwMDNlY2JbXSBkYXRhIHdvbid0XFxuLVxcdCAqIGJlIGxvc3QuIEluIGFueSBjYXNlLCBkdWUgdG8gdW5wcml2aWxlZGdlZCBlQlBGIHByb2dyYW1zXFxuK1xcdCAqIGJlIGxvc3QuIEluIGFueSBjYXNlLCBkdWUgdG8gdW5wcml2aWxlZ2VkIGVCUEYgcHJvZ3JhbXNcXG4gXFx0ICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWFcXG4gXFx0ICogdG8gbm90IGxlYWsgcHJldmlvdXMgY29udGVudHMgdG8gdXNlciBzcGFjZS5cXG4gXFx0ICovXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmMgYi9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXFxuaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jXFxuKysrIGIva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xcbkBAIC0yMDcsNyArMjA3LDcgQEAgcmV1c2Vwb3J0X2FycmF5X3VwZGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgcmV1c2Vwb3J0X2FycmF5ICphcnJheSxcXG4gXFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYmluZGVkXFxuK1xcdCAqIHNrIG11c3QgYmUgaGFzaGVkIChpLmUuIGxpc3RlbmluZyBpbiB0aGUgVENQIGNhc2Ugb3IgYm91bmRcXG4gXFx0ICogaW4gdGhlIFVEUCBjYXNlKSBhbmRcXG4gXFx0ICogaXQgbXVzdCBhbHNvIGJlIGEgU09fUkVVU0VQT1JUIHNrIChpLmUuIHJldXNlIGNhbm5vdCBiZSBOVUxMKS5cXG4gXFx0ICpcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9zdHJlYW0uYyBiL2tlcm5lbC9icGYvc3RyZWFtLmNcXG5pbmRleCBiZTljZTk4ZTk0NjkyLi41NGY1YmUxMjg5ZDJiIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvc3RyZWFtLmNcXG4rKysgYi9rZXJuZWwvYnBmL3N0cmVhbS5jXFxuQEAgLTI0LDcgKzI0LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfc3RyZWFtX2VsZW0gKmJwZl9zdHJlYW1fZWxlbV9hbGxvYyhpbnQgbGVuKVxcbiBcXHQvKlxcbiBcXHQgKiBMZW5ndGggZGVub3RlcyB0aGUgYW1vdW50IG9mIGRhdGEgdG8gYmUgd3JpdHRlbiBhcyBwYXJ0IG9mIHN0cmVhbSBlbGVtZW50LFxcbiBcXHQgKiB0aHVzIGluY2x1ZGVzICdcXFxcMCcgYnl0ZS4gV2UncmUgY2FwcGVkIGJ5IGhvdyBtdWNoIGJwZl9icHJpbnRmX2J1ZmZlcnMgY2FuXFxuLVxcdCAqIGFjY29tb2RhdGUsIHRoZXJlZm9yZSBkZW55IGFsbG9jYXRpb25zIHRoYXQgd29uJ3QgZml0IGludG8gdGhlbS5cXG4rXFx0ICogYWNjb21tb2RhdGUsIHRoZXJlZm9yZSBkZW55IGFsbG9jYXRpb25zIHRoYXQgd29uJ3QgZml0IGludG8gdGhlbS5cXG4gXFx0ICovXFxuIFxcdGlmIChsZW4gXFx1MDAzYyAwIHx8IGxlbiBcXHUwMDNlIG1heF9sZW4pXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2J0Zi5jIGIvdG9vbHMvbGliL2JwZi9idGYuY1xcbmluZGV4IDg0MTdkZTkyZDAyODIuLmMxNzQ1YmVlMzdjMGEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xcbisrKyBiL3Rvb2xzL2xpYi9icGYvYnRmLmNcXG5AQCAtMzg0Myw3ICszODQzLDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVtYXBfdHlwZXMoc3RydWN0IGJ0Zl9kZWR1cCAqZCk7XFxuICAqIHR5cGVzLCBpbiBnZW5lcmFsLCBjYW4gZm9ybSBncmFwaHMgY29udGFpbmluZyBjeWNsZXMsIG5vdCBqdXN0IERBR3MuXFxuICAqXFxuICAqIFdoaWxlIGFsZ29yaXRobSBkb2VzIGRlZHVwbGljYXRpb24sIGl0IGFsc28gbWVyZ2VzIGFuZCByZXNvbHZlcyB0eXBlXFxuLSAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaHQgYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cXG4rICogaW5mb3JtYXRpb24gKHVubGVzcyBkaXNhYmxlZCB0aHJvdWdoIGBzdHJ1Y3QgYnRmX29wdHNgKSwgd2hlbmV2ZXIgcG9zc2libGUuXFxuICAqIEUuZy4sIGluIHRoZSBleGFtcGxlIGFib3ZlIHdpdGggdHdvIGNvbXBpbGF0aW9uIHVuaXRzIGhhdmluZyBwYXJ0aWFsIHR5cGVcXG4gICogaW5mb3JtYXRpb24gZm9yIHN0cnVjdHMgYEFgIGFuZCBgQmAsIHRoZSBvdXRwdXQgb2YgYWxnb3JpdGhtIHdpbGwgZW1pdFxcbiAgKiBhIHNpbmdsZSBjb3B5IG9mIGVhY2ggQlRGIHR5cGUgdGhhdCBkZXNjcmliZXMgc3RydWN0cyBgQWAsIGBCYCwgYW5kIGBTYFxcbkBAIC01NjQ0LDcgKzU2NDQsNyBAQCBzdGF0aWMgaW50IGJ0Zl9kZWR1cF9yZXNvbHZlX2Z3ZHMoc3RydWN0IGJ0Zl9kZWR1cCAqZClcXG4gICpcXG4gICogQWZ0ZXIgd2UgZXN0YWJsaXNoZWQgZm9yIGVhY2ggdHlwZSBpdHMgY29ycmVzcG9uZGluZyBjYW5vbmljYWwgcmVwcmVzZW50YXRpdmVcXG4gICogdHlwZSwgd2Ugbm93IGNhbiBlbGltaW5hdGUgdHlwZXMgdGhhdCBhcmUgbm90IGNhbm9uaWNhbCBhbmQgbGVhdmUgb25seVxcbi0gKiBjYW5vbmljYWwgb25lcyBsYXllZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlclxcbisgKiBjYW5vbmljYWwgb25lcyBsYWlkIG91dCBzZXF1ZW50aWFsbHkgaW4gbWVtb3J5IGJ5IGNvcHlpbmcgdGhlbSBvdmVyXFxuICAqIGR1cGxpY2F0ZXMuIER1cmluZyBjb21wYWN0aW9uIGJ0Zl9kZWR1cC1cXHUwMDNlaHlwb3RfbWFwIGFycmF5IGlzIHJldXNlZCB0byBzdG9yZVxcbiAgKiBhIG1hcCBmcm9tIG9yaWdpbmFsIHR5cGUgSUQgdG8gYSBuZXcgY29tcGFjdGVkIHR5cGUgSUQsIHdoaWNoIHdpbGwgYmUgdXNlZFxcbiAgKiBkdXJpbmcgbmV4dCBwaGFzZSB0byBcXFwiZml4IHVwXFxcIiB0eXBlIElEcywgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdC91bmlvbiBhbmRcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi91c2R0LmMgYi90b29scy9saWIvYnBmL3VzZHQuY1xcbmluZGV4IDJlNTZlM2FiNWI2Y2MuLmMwOTMzNTgwOTMwYmMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbGliL2JwZi91c2R0LmNcXG4rKysgYi90b29scy9saWIvYnBmL3VzZHQuY1xcbkBAIC0xNDQsNyArMTQ0LDcgQEBcXG4gICogYWJvdXQuIFRoaXMgc3RhdGUgaGFzIHRvIGJlIG1haW50YWluZWQgcGVyLUJQRiBvYmplY3QgYW5kIGNvb3JkaW5hdGVcXG4gICogYmV0d2VlbiBkaWZmZXJlbnQgVVNEVCBhdHRhY2htZW50cyB3aXRoaW4gdGhlIHNhbWUgQlBGIG9iamVjdC5cXG4gICpcXG4tICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGF5ZWQgb3V0XFxuKyAqIFNwZWMgSUQgaXMgdGhlIGtleSBpbiBzcGVjIEJQRiBtYXAsIHZhbHVlIGlzIHRoZSBhY3R1YWwgVVNEVCBzcGVjIGxhaWQgb3V0XFxuICAqIGFzIHN0cnVjdCB1c2R0X3NwZWMuIEVhY2ggaW52b2NhdGlvbiBvZiBCUEYgcHJvZ3JhbSBhdCBydW50aW1lIG5lZWRzIHRvXFxuICAqIGtub3cgaXRzIGFzc29jaWF0ZWQgc3BlYyBJRC4gSXQgZ2V0cyBpdCBlaXRoZXIgdGhyb3VnaCBCUEYgY29va2llLCB3aGljaFxcbiAgKiBsaWJicGYgc2V0cyB0byBzcGVjIElEIGR1cmluZyBhdHRhY2ggdGltZSwgb3IsIGlmIGtlcm5lbCBpcyB0b28gb2xkIHRvXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xcbmluZGV4IDUxMzVkNWM3MmE0NmQuLjE1OGQ5NWMyNTIwYmYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jXFxuQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2hlY2tfYXNhbl9hcmdzKHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzaXplLFxcbiBcXHRcXHRnb3RvIGNvbmZpcm1lZF92YWxpZDtcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIFdyYXBhcm91bmQgaXMgcG9zc2libGUgZm9yIHZhbHVlcyBjbG9zZSB0byB0aGUgdGhlIGVkZ2Ugb2YgdGhlXFxuK1xcdCAqIFdyYXBhcm91bmQgaXMgcG9zc2libGUgZm9yIHZhbHVlcyBjbG9zZSB0byB0aGUgZWRnZSBvZiB0aGVcXG4gXFx0ICogNEdpQiBib3VuZGFyeSBvZiB0aGUgYXJlbmEgKGxhc3QgdmFsaWQgYWRkcmVzcyBpcyAxVUwgXFx1MDAzY1xcdTAwM2MgMzIgLSAxKS5cXG4gXFx0ICpcXG4gXFx0ICpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbHd0X3NlZzZsb2NhbC5jXFxuaW5kZXggMWIyNWQ1YzVmOGZiOC4uOGI5NmZiODYxMzY4OCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcXG5AQCAtMTMsNyArMTMsNyBAQFxcbiAgKiBJUHY2IGhlYWRlciB3aXRoIGEgU2VnbWVudCBSb3V0aW5nIEhlYWRlciwgd2l0aCBzZWdtZW50cyA6XFxuICAqXFx0ZmQwMDo6MSAtXFx1MDAzZSBmZDAwOjoyIC1cXHUwMDNlIGZkMDA6OjMgLVxcdTAwM2UgZmQwMDo6NFxcbiAgKlxcbi0gKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYmluZGVkIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxcbisgKiAzIGZkMDA6Oi8xNiBJUHY2IGFkZHJlc3NlcyBhcmUgYm91bmQgdG8gc2VnNmxvY2FsIEVuZC5CUEYgYWN0aW9ucyA6XFxuICAqIC0gZmQwMDo6MSA6IGFkZCBhIFRMViwgY2hhbmdlIHRoZSBmbGFncyBhbmQgYXBwbHkgYSBFbmQuWCBhY3Rpb24gdG8gZmM0Mjo6MVxcbiAgKiAtIGZkMDA6OjIgOiByZW1vdmUgdGhlIFRMViwgY2hhbmdlIHRoZSBmbGFncywgYWRkIGEgdGFnXFxuICAqIC0gZmQwMDo6MyA6IGFwcGx5IGFuIEVuZC5UIGFjdGlvbiB0byBmZDAwOjo0LCB0aHJvdWdoIHJvdXRpbmcgdGFibGUgMTE3XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcXG5pbmRleCA4YWU0ZmIyMDI3ZjczLi45ZjI5NzFmYzdjZDU0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcXG5AQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyB0bGRfa2V5X3QgX190bGRfY3JlYXRlX2tleShjb25zdCBjaGFyICpuYW1lLCBzaXplX3Qgc2l6ZSwgYm9vbCBkeW5fZGF0YSlcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0LypcXG4tXFx0XFx0ICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXB0byBhIHBhZ2Ugd2hpbGUgYXQgbW9zdFxcbitcXHRcXHQgKiBUTERfREVGSU5FX0tFWSgpIGlzIGdpdmVuIG1lbW9yeSB1cCB0byBhIHBhZ2Ugd2hpbGUgYXQgbW9zdFxcbiBcXHRcXHQgKiBUTERfRFlOX0RBVEFfU0laRSBpcyBhbGxvY2F0ZWQgZm9yIHRsZF9jcmVhdGVfa2V5KClcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChkeW5fZGF0YSkge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcXG5pbmRleCA2MjQwNzhhYmYzZGVhLi5kN2UzMGVlNTc2YzkzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xcbkBAIC03LDcgKzcsNyBAQFxcbiBcXG4gU0VDKFxcXCJmcmVwbGFjZS9idGZfdW5yZWxpYWJsZV9rcHJvYmVcXFwiKVxcbiAvKiBjb250ZXh0IHR5cGUgaXMgd2hhdCBCUEYgdmVyaWZpZXIgZXhwZWN0cyBmb3Iga3Byb2JlIGNvbnRleHQsIGJ1dCB0YXJnZXRcXG4tICogcHJvZ3JhbSBoYXMgYHN0dWN0IHdoYXRldmVyICpjdHhgIGFyZ3VtZW50LCBzbyBmcmVwbGFjZSBvcGVyYXRpb24gd2lsbCBiZVxcbisgKiBwcm9ncmFtIGhhcyBgc3RydWN0IHdoYXRldmVyICpjdHhgIGFyZ3VtZW50LCBzbyBmcmVwbGFjZSBvcGVyYXRpb24gd2lsbCBiZVxcbiAgKiByZWplY3RlZCB3aXRoIHRoZSBmb2xsb3dpbmcgbWVzc2FnZTpcXG4gICpcXG4gICogYXJnMCByZXBsYWNlX2J0Zl91bnJlbGlhYmxlX2twcm9iZShzdHJ1Y3QgcHRfcmVncyAqKSBkb2Vzbid0IG1hdGNoIGJ0Zl91bnJlbGlhYmxlX2twcm9iZShzdHJ1Y3Qgd2hhdGV2ZXIgKilcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xcbmluZGV4IDYyZDdkZjllODBiZWIuLjM0MDY3MGU4OWJhOTIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xcbkBAIC0xNTExLDcgKzE1MTEsNyBAQCBfX25ha2VkIGludCBjaGVja3BvaW50X3N0YXRlc19kZWxldGlvbih2b2lkKVxcbiBcXHQgKiB3b3VsZCBnZXQgZXF1YWwgdG8gb25lIG9mIHRoZSBleHBsb3JlZCBzdGF0ZXMgYW5kIHRodXMgbG9vcFxcbiBcXHQgKiBleHBsb3JhdGlvbiB3b3VsZCBiZSBmaW5pc2hlZCAoYXQtbGVhc3QgZm9yIGEgc3BlY2lmaWMgcGF0aCkuXFxuIFxcdCAqIFZlcmlmaWVyIGV2aWN0cyBleHBsb3JlZCBzdGF0ZXMgd2l0aCBoaWdoIG1pc3MgdG8gaGl0IHJhdGlvXFxuLVxcdCAqIHRvIHRvIGF2b2lkIGNvbXBhcmluZyBjdXJyZW50IHN0YXRlIHdpdGggdG9vIG1hbnkgZXhwbG9yZWRcXG4rXFx0ICogdG8gYXZvaWQgY29tcGFyaW5nIGN1cnJlbnQgc3RhdGUgd2l0aCB0b28gbWFueSBleHBsb3JlZFxcbiBcXHQgKiBzdGF0ZXMgcGVyIGluc3RydWN0aW9uLlxcbiBcXHQgKiBUaGlzIHRlc3QgaXMgZGVzaWduZWQgdG8gXFxcInN0cmVzcyB0ZXN0XFxcIiBldmljdGlvbiBwb2xpY3kgZGVmaW5lZCB1c2luZyBmb3JtdWxhOlxcbiBcXHQgKlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xcbmluZGV4IGE2M2UzMzY3NTA5MTguLjIyN2RlYTBkYTNhMDUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcXG5AQCAtMjI1LDcgKzIyNSw3IEBAIF9fbmFrZWQgdm9pZCBzdGFja193cml0ZV9wcml2X3ZzX3VucHJpdih2b2lkKVxcbiB9XFxuIFxcbiAvKiBTaW1pbGFyIHRvIHRoZSBwcmV2aW91cyB0ZXN0LCBidXQgdGhpcyB0aW1lIGFsc28gcGVyZm9ybSBhIHJlYWQgZnJvbSB0aGVcXG4tICogYWRkcmVzcyB3cml0dGVuIHRvIHdpdGggYSB2YXJpYWJsZSBvZmZldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxcbisgKiBhZGRyZXNzIHdyaXR0ZW4gdG8gd2l0aCBhIHZhcmlhYmxlIG9mZnNldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxcbiAgKiBhZnRlciBhIHZhcmlhYmxlLW9mZnNldCB3cml0ZSwgYSBwcml2aWxlZ2VkIHByb2dyYW0gY2FuIHJlYWQgdGhlIHNsb3RzIHRoYXRcXG4gICogd2VyZSBpbiB0aGUgcmFuZ2Ugb2YgdGhhdCB3cml0ZSAoZXZlbiBpZiB0aGUgdmVyaWZpZXIgZG9lc24ndCBhY3R1YWxseSBrbm93IGlmXFxuICAqIHRoZSBzbG90IGJlaW5nIHJlYWQgd2FzIHJlYWxseSB3cml0dGVuIHRvIG9yIG5vdC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMjM6MDA6NDAuMjM5NzUyMTg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0NDMwMjY5OTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgc29sZWx5IG9mIGNvbW1lbnQgc3BlbGxpbmcgZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGhlYWRlciBmaWxlcywgYW5kIHRvb2xzL3NlbGZ0ZXN0cy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBkYXRhIHN0cnVjdHVyZXMsIGNvbnRyb2wgZmxvdywgb3IgcnVudGltZSBhc3NlcnRpb25zIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGQ0ZDM0YWQ5MTFlNWI3ZWZkYzMzZjdmY2VlMmY0YTc1YjIwZjIzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMjM6MDA6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuY1xuaW5kZXggOWVkZTgxYWZiYzUwZS4uYjFjMjFjMDE0YzljZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbisrKyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmNcbkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9sZHN4X3IoY29uc3QgczggZHN0W10sIGNvbnN0IHM4IHNyYyxcbiBcdGFybV9icGZfcHV0X3JlZzY0KGRzdCwgcmQsIGN0eCk7XG4gfVxuIFxuLS8qIEFyaXRobWF0aWMgT3BlcmF0aW9uICovXG4rLyogQXJpdGhtZXRpYyBPcGVyYXRpb24gKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdF9hcl9yKGNvbnN0IHU4IHJkLCBjb25zdCB1OCBydCwgY29uc3QgdTggcm0sXG4gXHRcdFx0ICAgICBjb25zdCB1OCBybiwgc3RydWN0IGppdF9jdHggKmN0eCwgdTggb3AsXG4gXHRcdFx0ICAgICBib29sIGlzX2ptcDY0KSB7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCBiZmRjNTA3NDBkYThlLi5jZjhjMWI0OWRhMjU3IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAzMi5jXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC0yMyw3ICsyMyw3IEBAXG4gICpcbiAgKlx0XHRbXHRwcmV2IHNwXHRcdF0gXHUwMDNjLS0tLS0tLS0tLS0tLVxuICAqXHRcdFsgICBudiBncHIgc2F2ZSBhcmVhXHRdIDE2ICogNFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuKyAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cCB0byA1MTJcdHxcbiAgKlx0XHRbICAgICBmcmFtZSBoZWFkZXJcdF0gMTZcdFx0fFxuICAqIHNwIChyMSkgLS0tXHUwMDNlXHRbICAgIHN0YWNrIHBvaW50ZXJcdF0gLS0tLS0tLS0tLS0tLS1cbiAgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGZjOWRiNjkxZTgyMDMuLjhhMWEwMDAyNmM2OWYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTIzLDcgKzIzLDcgQEBcbiAgKiBTdGFjayBsYXlvdXQgd2l0aCBmcmFtZTpcbiAgKiBMYXlvdXQgd2hlbiBzZXR0aW5nIHVwIG91ciBvd24gc3RhY2sgZnJhbWUuXG4gICogTm90ZTogcjEgYXQgYm90dG9tLCBjb21wb25lbnQgb2Zmc2V0cyBwb3NpdGl2ZSB3cnQgcjEuXG4tICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXB0byBsb2NhbF90bXBfdmFyKSBzdGF5cyBjb25zaXN0ZW50XG4rICogRW5zdXJlIHRoZSB0b3AgaGFsZiAodXAgdG8gbG9jYWxfdG1wX3Zhcikgc3RheXMgY29uc2lzdGVudFxuICAqIHdpdGggb3VyIHJlZHpvbmUgdXNhZ2UuXG4gICpcbiAgKiB0YWlsX2NhbGxfaW5mbyAtIHN0b3JlcyB0YWlsY2FsbCBjb3VudCB2YWx1ZSBpbiBtYWluIHByb2dyYW0nc1xuQEAgLTM1LDcgKzM1LDcgQEBcbiAgKlx0XHRbICAgbnYgZ3ByIHNhdmUgYXJlYVx0XSAoNiAqIDgpXHR8XG4gICpcdFx0WyBhZGRsLiBudiBncHIgc2F2ZSBhcmVhXSAoMTIgKiA4KVx0fCBcdTAwM2MtLS0gZXhjZXB0aW9uIGJvdW5kYXJ5L2NhbGxiYWNrIHByb2dyYW1cbiAgKlx0XHRbICAgIGxvY2FsX3RtcF92YXJcdF0gMjRcdFx0fFxuLSAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cHRvIDUxMlx0fFxuKyAqIGZwIChyMzEpIC0tXHUwMDNlXHRbICAgZWJwZiBzdGFjayBzcGFjZVx0XSB1cCB0byA1MTJcdHxcbiAgKlx0XHRbICAgICBmcmFtZSBoZWFkZXJcdF0gMzIvMTEyXHR8XG4gICogc3AgKHIxKSAtLS1cdTAwM2VcdFsgICAgc3RhY2sgcG9pbnRlclx0XSAtLS0tLS0tLS0tLS0tLVxuICAqXG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9hc21fMzIuUyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfYXNtXzMyLlNcbmluZGV4IGEyZTI4ZTA0NjRhMzMuLjgxNDMwZjA2NWFjOTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG4rKysgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2FzbV8zMi5TXG5AQCAtMTk1LDcgKzE5NSw3IEBAIGJwZl9lcnJvcjpcbiBcdC8qIE1ha2UgdGhlIEpJVCBwcm9ncmFtIHJldHVybiB6ZXJvLiAgVGhlIEpJVCBlcGlsb2d1ZVxuIFx0ICogc3RvcmVzIGF3YXkgdGhlIG9yaWdpbmFsICVvNyBpbnRvIHJfc2F2ZWRfTzcuICBUaGVcbiBcdCAqIG5vcm1hbCBsZWFmIGZ1bmN0aW9uIHJldHVybiBpcyB0byB1c2UgXCJyZXRsXCIgd2hpY2hcbi1cdCAqIHdvdWxkIGV2YWx1dGUgdG8gXCJqbXBsICVvNyArIDgsICVnMFwiIGJ1dCB3ZSB3YW50IHRvXG4rXHQgKiB3b3VsZCBldmFsdWF0ZSB0byBcImptcGwgJW83ICsgOCwgJWcwXCIgYnV0IHdlIHdhbnQgdG9cbiBcdCAqIHVzZSB0aGUgc2F2ZWQgdmFsdWUgdGh1cyB0aGUgc2VxdWVuY2UgeW91IHNlZSBoZXJlLlxuIFx0ICovXG4gXHRqbXBsXHRyX3NhdmVkX083ICsgOCwgJWcwXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbmluZGV4IDRhOWJjNmE4NDhmMmUuLjBhMDY3YzJlOTIzZGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXG5AQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyO1xuICNkZWZpbmUgQlBGX0FMVTMyX0lNTShPUCwgRFNULCBJTU0pXHRcdFx0XHRcXFxuIFx0QlBGX0FMVTMyX0lNTV9PRkYoT1AsIERTVCwgSU1NLCAwKVxuIFxuLS8qIEVuZGlhbmVzcyBjb252ZXJzaW9uLCBjcHVfdG9fe2wsYn1lKCksIHtsLGJ9ZV90b19jcHUoKSAqL1xuKy8qIEVuZGlhbm5lc3MgY29udmVyc2lvbiwgY3B1X3RvX3tsLGJ9ZSgpLCB7bCxifWVfdG9fY3B1KCkgKi9cbiBcbiAjZGVmaW5lIEJQRl9FTkRJQU4oVFlQRSwgRFNULCBMRU4pXHRcdFx0XHRcXFxuIFx0KChzdHJ1Y3QgYnBmX2luc24pIHtcdFx0XHRcdFx0XFxcbkBAIC0xMDI5LDcgKzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIHU4ICpicGZfc2tiX2NiKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4gXHQgKlxuIFx0ICogSW4gc29tZSBzb2NrZXQgZmlsdGVyIGNhc2VzLCB0aGUgY2IgdW5mb3J0dW5hdGVseSBuZWVkcyB0byBiZVxuIFx0ICogc2F2ZWQvcmVzdG9yZWQgc28gdGhhdCBwcm90b2NvbCBzcGVjaWZpYyBza2ItXHUwMDNlY2JbXSBkYXRhIHdvbid0XG4tXHQgKiBiZSBsb3N0LiBJbiBhbnkgY2FzZSwgZHVlIHRvIHVucHJpdmlsZWRnZWQgZUJQRiBwcm9ncmFtc1xuK1x0ICogYmUgbG9zdC4gSW4gYW55IGNhc2UsIGR1ZSB0byB1bnByaXZpbGVnZWQgZUJQRiBwcm9ncmFtc1xuIFx0ICogYXR0YWNoZWQgdG8gc29ja2V0cywgd2UgbmVlZCB0byBjbGVhciB0aGUgYnBmX3NrYl9jYigpIGFyZWFcbiBcdCAqIHRvIG5vdCBsZWFrIHByZXZpb3VzIGNvbnRlbnRzIHRvIHVzZXIgc3BhY2UuXG4gXHQgKi9cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3JldXNlcG9ydF9hcnJheS5jIGIva2VybmVsL2JwZi9yZXVzZXBvcnRfYXJyYXkuY1xuaW5kZXggNDliOGU1YTBjNmI0Zi4uNGRlMDhhYmZkOTRlZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmNcbisrKyBiL2tlcm5lbC9icGYvcmV1c2Vwb3J0X2FycmF5LmNcbkBAIC0yMDcsNyArMjA3LDcgQEAgcmV1c2Vwb3J0X2FycmF5X3VwZGF0ZV9jaGVjayhjb25zdCBzdHJ1Y3QgcmV1c2Vwb3J0X2FycmF5ICphcnJheSxcbiBcdFx0cmV0dXJuIC1FTk9UU1VQUDtcbiBcbiBcdC8qXG4tXHQgKiBzayBtdXN0IGJlIGhhc2hlZCAoaS5lLiBsaXN0ZW5pbmcgaW4gdGhlIFRDUCBjYXNlIG9yIGJpbmRlZFxuK1x0ICogc2sgbXVzdCBiZSBoYXNoZWQgKGkuZS4gbGlzdGVuaW5nIGluIHRoZSBUQ1AgY2FzZSBvciBib3VuZFxuIFx0ICogaW4gdGhlIFVEUCBjYXNlKSBhbmRcbiBcdCAqIGl0IG11c3QgYWxzbyBiZSBhIFNPX1JFVVNFUE9SVCBzayAoaS5lLiByZXVzZSBjYW5ub3QgYmUgTlVMTCkuXG4gXHQgKlxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvc3RyZWFtLmMgYi9rZXJuZWwvYnBmL3N0cmVhbS5jXG5pbmRleCBiZTljZTk4ZTk0NjkyLi41NGY1YmUxMjg5ZDJiIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9zdHJlYW0uY1xuKysrIGIva2VybmVsL2JwZi9zdHJlYW0uY1xuQEAgLTI0LDcgKzI0LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfc3RyZWFtX2VsZW0gKmJwZl9zdHJlYW1fZWxlbV9hbGxvYyhpbnQgbGVuKVxuIFx0LypcbiBcdCAqIExlbmd0aCBkZW5vdGVzIHRoZSBhbW91bnQgb2YgZGF0YSB0byBiZSB3cml0dGVuIGFzIHBhcnQgb2Ygc3RyZWFtIGVsZW1lbnQsXG4gXHQgKiB0aHVzIGluY2x1ZGVzICdcXDAnIGJ5dGUuIFdlJ3JlIGNhcHBlZCBieSBob3cgbXVjaCBicGZfYnByaW50Zl9idWZmZXJzIGNhblxuLVx0ICogYWNjb21vZGF0ZSwgdGhlcmVmb3JlIGRlbnkgYWxsb2NhdGlvbnMgdGhhdCB3b24ndCBmaXQgaW50byB0aGVtLlxuK1x0ICogYWNjb21tb2RhdGUsIHRoZXJlZm9yZSBkZW55IGFsbG9jYXRpb25zIHRoYXQgd29uJ3QgZml0IGludG8gdGhlbS5cbiBcdCAqL1xuIFx0aWYgKGxlbiBcdTAwM2MgMCB8fCBsZW4gXHUwMDNlIG1heF9sZW4pXG4gXHRcdHJldHVybiBOVUxMO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvYnRmLmMgYi90b29scy9saWIvYnBmL2J0Zi5jXG5pbmRleCA4NDE3ZGU5MmQwMjgyLi5jMTc0NWJlZTM3YzBhIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi9idGYuY1xuKysrIGIvdG9vbHMvbGliL2JwZi9idGYuY1xuQEAgLTM4NDMsNyArMzg0Myw3IEBAIHN0YXRpYyBpbnQgYnRmX2RlZHVwX3JlbWFwX3R5cGVzKHN0cnVjdCBidGZfZGVkdXAgKmQpO1xuICAqIHR5cGVzLCBpbiBnZW5lcmFsLCBjYW4gZm9ybSBncmFwaHMgY29udGFpbmluZyBjeWNsZXMsIG5vdCBqdXN0IERBR3MuXG4gICpcbiAgKiBXaGlsZSBhbGdvcml0aG0gZG9lcyBkZWR1cGxpY2F0aW9uLCBpdCBhbHNvIG1lcmdlcyBhbmQgcmVzb2x2ZXMgdHlwZVxuLSAqIGluZm9ybWF0aW9uICh1bmxlc3MgZGlzYWJsZWQgdGhyb3VnaHQgYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cbisgKiBpbmZvcm1hdGlvbiAodW5sZXNzIGRpc2FibGVkIHRocm91Z2ggYHN0cnVjdCBidGZfb3B0c2ApLCB3aGVuZXZlciBwb3NzaWJsZS5cbiAgKiBFLmcuLCBpbiB0aGUgZXhhbXBsZSBhYm92ZSB3aXRoIHR3byBjb21waWxhdGlvbiB1bml0cyBoYXZpbmcgcGFydGlhbCB0eXBlXG4gICogaW5mb3JtYXRpb24gZm9yIHN0cnVjdHMgYEFgIGFuZCBgQmAsIHRoZSBvdXRwdXQgb2YgYWxnb3JpdGhtIHdpbGwgZW1pdFxuICAqIGEgc2luZ2xlIGNvcHkgb2YgZWFjaCBCVEYgdHlwZSB0aGF0IGRlc2NyaWJlcyBzdHJ1Y3RzIGBBYCwgYEJgLCBhbmQgYFNgXG5AQCAtNTY0NCw3ICs1NjQ0LDcgQEAgc3RhdGljIGludCBidGZfZGVkdXBfcmVzb2x2ZV9md2RzKHN0cnVjdCBidGZfZGVkdXAgKmQpXG4gICpcbiAgKiBBZnRlciB3ZSBlc3RhYmxpc2hlZCBmb3IgZWFjaCB0eXBlIGl0cyBjb3JyZXNwb25kaW5nIGNhbm9uaWNhbCByZXByZXNlbnRhdGl2ZVxuICAqIHR5cGUsIHdlIG5vdyBjYW4gZWxpbWluYXRlIHR5cGVzIHRoYXQgYXJlIG5vdCBjYW5vbmljYWwgYW5kIGxlYXZlIG9ubHlcbi0gKiBjYW5vbmljYWwgb25lcyBsYXllZCBvdXQgc2VxdWVudGlhbGx5IGluIG1lbW9yeSBieSBjb3B5aW5nIHRoZW0gb3ZlclxuKyAqIGNhbm9uaWNhbCBvbmVzIGxhaWQgb3V0IHNlcXVlbnRpYWxseSBpbiBtZW1vcnkgYnkgY29weWluZyB0aGVtIG92ZXJcbiAgKiBkdXBsaWNhdGVzLiBEdXJpbmcgY29tcGFjdGlvbiBidGZfZGVkdXAtXHUwMDNlaHlwb3RfbWFwIGFycmF5IGlzIHJldXNlZCB0byBzdG9yZVxuICAqIGEgbWFwIGZyb20gb3JpZ2luYWwgdHlwZSBJRCB0byBhIG5ldyBjb21wYWN0ZWQgdHlwZSBJRCwgd2hpY2ggd2lsbCBiZSB1c2VkXG4gICogZHVyaW5nIG5leHQgcGhhc2UgdG8gXCJmaXggdXBcIiB0eXBlIElEcywgcmVmZXJlbmNlZCBmcm9tIHN0cnVjdC91bmlvbiBhbmRcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL3VzZHQuYyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5pbmRleCAyZTU2ZTNhYjViNmNjLi5jMDkzMzU4MDkzMGJjIDEwMDY0NFxuLS0tIGEvdG9vbHMvbGliL2JwZi91c2R0LmNcbisrKyBiL3Rvb2xzL2xpYi9icGYvdXNkdC5jXG5AQCAtMTQ0LDcgKzE0NCw3IEBAXG4gICogYWJvdXQuIFRoaXMgc3RhdGUgaGFzIHRvIGJlIG1haW50YWluZWQgcGVyLUJQRiBvYmplY3QgYW5kIGNvb3JkaW5hdGVcbiAgKiBiZXR3ZWVuIGRpZmZlcmVudCBVU0RUIGF0dGFjaG1lbnRzIHdpdGhpbiB0aGUgc2FtZSBCUEYgb2JqZWN0LlxuICAqXG4tICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGF5ZWQgb3V0XG4rICogU3BlYyBJRCBpcyB0aGUga2V5IGluIHNwZWMgQlBGIG1hcCwgdmFsdWUgaXMgdGhlIGFjdHVhbCBVU0RUIHNwZWMgbGFpZCBvdXRcbiAgKiBhcyBzdHJ1Y3QgdXNkdF9zcGVjLiBFYWNoIGludm9jYXRpb24gb2YgQlBGIHByb2dyYW0gYXQgcnVudGltZSBuZWVkcyB0b1xuICAqIGtub3cgaXRzIGFzc29jaWF0ZWQgc3BlYyBJRC4gSXQgZ2V0cyBpdCBlaXRoZXIgdGhyb3VnaCBCUEYgY29va2llLCB3aGljaFxuICAqIGxpYmJwZiBzZXRzIHRvIHNwZWMgSUQgZHVyaW5nIGF0dGFjaCB0aW1lLCBvciwgaWYga2VybmVsIGlzIHRvbyBvbGQgdG9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcbmluZGV4IDUxMzVkNWM3MmE0NmQuLjE1OGQ5NWMyNTIwYmYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuY1xuQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2hlY2tfYXNhbl9hcmdzKHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzaXplLFxuIFx0XHRnb3RvIGNvbmZpcm1lZF92YWxpZDtcbiBcbiBcdC8qXG4tXHQgKiBXcmFwYXJvdW5kIGlzIHBvc3NpYmxlIGZvciB2YWx1ZXMgY2xvc2UgdG8gdGhlIHRoZSBlZGdlIG9mIHRoZVxuK1x0ICogV3JhcGFyb3VuZCBpcyBwb3NzaWJsZSBmb3IgdmFsdWVzIGNsb3NlIHRvIHRoZSBlZGdlIG9mIHRoZVxuIFx0ICogNEdpQiBib3VuZGFyeSBvZiB0aGUgYXJlbmEgKGxhc3QgdmFsaWQgYWRkcmVzcyBpcyAxVUwgXHUwMDNjXHUwMDNjIDMyIC0gMSkuXG4gXHQgKlxuIFx0ICpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbmluZGV4IDFiMjVkNWM1ZjhmYjguLjhiOTZmYjg2MTM2ODggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9sd3Rfc2VnNmxvY2FsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2x3dF9zZWc2bG9jYWwuY1xuQEAgLTEzLDcgKzEzLDcgQEBcbiAgKiBJUHY2IGhlYWRlciB3aXRoIGEgU2VnbWVudCBSb3V0aW5nIEhlYWRlciwgd2l0aCBzZWdtZW50cyA6XG4gICpcdGZkMDA6OjEgLVx1MDAzZSBmZDAwOjoyIC1cdTAwM2UgZmQwMDo6MyAtXHUwMDNlIGZkMDA6OjRcbiAgKlxuLSAqIDMgZmQwMDo6LzE2IElQdjYgYWRkcmVzc2VzIGFyZSBiaW5kZWQgdG8gc2VnNmxvY2FsIEVuZC5CUEYgYWN0aW9ucyA6XG4rICogMyBmZDAwOjovMTYgSVB2NiBhZGRyZXNzZXMgYXJlIGJvdW5kIHRvIHNlZzZsb2NhbCBFbmQuQlBGIGFjdGlvbnMgOlxuICAqIC0gZmQwMDo6MSA6IGFkZCBhIFRMViwgY2hhbmdlIHRoZSBmbGFncyBhbmQgYXBwbHkgYSBFbmQuWCBhY3Rpb24gdG8gZmM0Mjo6MVxuICAqIC0gZmQwMDo6MiA6IHJlbW92ZSB0aGUgVExWLCBjaGFuZ2UgdGhlIGZsYWdzLCBhZGQgYSB0YWdcbiAgKiAtIGZkMDA6OjMgOiBhcHBseSBhbiBFbmQuVCBhY3Rpb24gdG8gZmQwMDo6NCwgdGhyb3VnaCByb3V0aW5nIHRhYmxlIDExN1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rhc2tfbG9jYWxfZGF0YS5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbmluZGV4IDhhZTRmYjIwMjdmNzMuLjlmMjk3MWZjN2NkNTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YXNrX2xvY2FsX2RhdGEuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFza19sb2NhbF9kYXRhLmhcbkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHRsZF9rZXlfdCBfX3RsZF9jcmVhdGVfa2V5KGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLCBib29sIGR5bl9kYXRhKVxuIFx0XHR9XG4gXG4gXHRcdC8qXG4tXHRcdCAqIFRMRF9ERUZJTkVfS0VZKCkgaXMgZ2l2ZW4gbWVtb3J5IHVwdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcbitcdFx0ICogVExEX0RFRklORV9LRVkoKSBpcyBnaXZlbiBtZW1vcnkgdXAgdG8gYSBwYWdlIHdoaWxlIGF0IG1vc3RcbiBcdFx0ICogVExEX0RZTl9EQVRBX1NJWkUgaXMgYWxsb2NhdGVkIGZvciB0bGRfY3JlYXRlX2tleSgpXG4gXHRcdCAqL1xuIFx0XHRpZiAoZHluX2RhdGEpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcbmluZGV4IDYyNDA3OGFiZjNkZWEuLmQ3ZTMwZWU1NzZjOTMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZnJlcGxhY2VfdW5yZWxpYWJsZV9wcm9nLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mcmVwbGFjZV91bnJlbGlhYmxlX3Byb2cuY1xuQEAgLTcsNyArNyw3IEBAXG4gXG4gU0VDKFwiZnJlcGxhY2UvYnRmX3VucmVsaWFibGVfa3Byb2JlXCIpXG4gLyogY29udGV4dCB0eXBlIGlzIHdoYXQgQlBGIHZlcmlmaWVyIGV4cGVjdHMgZm9yIGtwcm9iZSBjb250ZXh0LCBidXQgdGFyZ2V0XG4tICogcHJvZ3JhbSBoYXMgYHN0dWN0IHdoYXRldmVyICpjdHhgIGFyZ3VtZW50LCBzbyBmcmVwbGFjZSBvcGVyYXRpb24gd2lsbCBiZVxuKyAqIHByb2dyYW0gaGFzIGBzdHJ1Y3Qgd2hhdGV2ZXIgKmN0eGAgYXJndW1lbnQsIHNvIGZyZXBsYWNlIG9wZXJhdGlvbiB3aWxsIGJlXG4gICogcmVqZWN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6XG4gICpcbiAgKiBhcmcwIHJlcGxhY2VfYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCBwdF9yZWdzICopIGRvZXNuJ3QgbWF0Y2ggYnRmX3VucmVsaWFibGVfa3Byb2JlKHN0cnVjdCB3aGF0ZXZlciAqKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbmluZGV4IDYyZDdkZjllODBiZWIuLjM0MDY3MGU4OWJhOTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbkBAIC0xNTExLDcgKzE1MTEsNyBAQCBfX25ha2VkIGludCBjaGVja3BvaW50X3N0YXRlc19kZWxldGlvbih2b2lkKVxuIFx0ICogd291bGQgZ2V0IGVxdWFsIHRvIG9uZSBvZiB0aGUgZXhwbG9yZWQgc3RhdGVzIGFuZCB0aHVzIGxvb3BcbiBcdCAqIGV4cGxvcmF0aW9uIHdvdWxkIGJlIGZpbmlzaGVkIChhdC1sZWFzdCBmb3IgYSBzcGVjaWZpYyBwYXRoKS5cbiBcdCAqIFZlcmlmaWVyIGV2aWN0cyBleHBsb3JlZCBzdGF0ZXMgd2l0aCBoaWdoIG1pc3MgdG8gaGl0IHJhdGlvXG4tXHQgKiB0byB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXG4rXHQgKiB0byBhdm9pZCBjb21wYXJpbmcgY3VycmVudCBzdGF0ZSB3aXRoIHRvbyBtYW55IGV4cGxvcmVkXG4gXHQgKiBzdGF0ZXMgcGVyIGluc3RydWN0aW9uLlxuIFx0ICogVGhpcyB0ZXN0IGlzIGRlc2lnbmVkIHRvIFwic3RyZXNzIHRlc3RcIiBldmljdGlvbiBwb2xpY3kgZGVmaW5lZCB1c2luZyBmb3JtdWxhOlxuIFx0ICpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfdmFyX29mZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3Zhcl9vZmYuY1xuaW5kZXggYTYzZTMzNjc1MDkxOC4uMjI3ZGVhMGRhM2EwNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl92YXJfb2ZmLmNcbkBAIC0yMjUsNyArMjI1LDcgQEAgX19uYWtlZCB2b2lkIHN0YWNrX3dyaXRlX3ByaXZfdnNfdW5wcml2KHZvaWQpXG4gfVxuIFxuIC8qIFNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHRlc3QsIGJ1dCB0aGlzIHRpbWUgYWxzbyBwZXJmb3JtIGEgcmVhZCBmcm9tIHRoZVxuLSAqIGFkZHJlc3Mgd3JpdHRlbiB0byB3aXRoIGEgdmFyaWFibGUgb2ZmZXQuIFRoZSByZWFkIGlzIGFsbG93ZWQsIHNob3dpbmcgdGhhdCxcbisgKiBhZGRyZXNzIHdyaXR0ZW4gdG8gd2l0aCBhIHZhcmlhYmxlIG9mZnNldC4gVGhlIHJlYWQgaXMgYWxsb3dlZCwgc2hvd2luZyB0aGF0LFxuICAqIGFmdGVyIGEgdmFyaWFibGUtb2Zmc2V0IHdyaXRlLCBhIHByaXZpbGVnZWQgcHJvZ3JhbSBjYW4gcmVhZCB0aGUgc2xvdHMgdGhhdFxuICAqIHdlcmUgaW4gdGhlIHJhbmdlIG9mIHRoYXQgd3JpdGUgKGV2ZW4gaWYgdGhlIHZlcmlmaWVyIGRvZXNuJ3QgYWN0dWFsbHkga25vdyBpZlxuICAqIHRoZSBzbG90IGJlaW5nIHJlYWQgd2FzIHJlYWxseSB3cml0dGVuIHRvIG9yIG5vdC5cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDIzOjAwOjQwLjIzOTc1MzcxOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0MzAyNDcwNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXMgYW5kIERldGVybWluYXRpb24gb2YgV29ydGhGdXp6aW5nIFN0YXR1cyoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2guIE15IGluaXRpYWwgc2NhbiBvZiB0aGUgZGlmZiByZXZlYWxzIHRoYXQgKmV2ZXJ5IHNpbmdsZSogY2hhbmdlIGlzIGEgY29tbWVudCBzcGVsbGluZyBmaXguIFdlJ3JlIHRhbGtpbmcgYWJvdXQgY29ycmVjdGlvbnMgdG8gY29tbWVudHMgYWNyb3NzIGEgdmFyaWV0eSBvZiBmaWxlczogYGFyY2gvYXJtYCwgYGFyY2gvcG93ZXJwY2AsIGBhcmNoL3NwYXJjYCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSwgdGhlIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCBoZWFkZXIsIHRoZSBga2VybmVsL2JwZmAgZGlyZWN0b3J5LCBhbmQgZXZlbiB0aGUgYHRvb2xzL2xpYi9icGZgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmYCBkaXJlY3Rvcmllcy4gTm90aGluZyB0b3VjaGVzIGFjdHVhbCBleGVjdXRhYmxlIGNvZGUsIHJ1bnRpbWUgY2hlY2tzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHRoZSB1bmRlcmx5aW5nIGxvZ2ljLiBJdCdzIGFsbCBhYm91dCBpbXByb3ZpbmcgdGhlIHJlYWRhYmlsaXR5IG9mIHRoZSBjb21tZW50cy5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZnJvbSB0aGUgaW5zdHJ1Y3Rpb25zIHRvIHRoaXMgcGF0Y2guIFRoZSBpbnN0cnVjdGlvbnMgZGVmaW5lIHNwZWNpZmljIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggXCJXb3J0aEZ1enppbmdcIiBzaG91bGQgYmUgc2V0IHRvIGZhbHNlLiBDb25kaXRpb24gbnVtYmVyIHR3byBpcyBjbGVhcmx5IHJlbGV2YW50IGhlcmU6IGl0IGxpc3RzIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGFuZCBzcGVsbGluZyBmaXhlcyBhcyBmYWxsaW5nIHVuZGVyIHRoZSBcIldvcnRoRnV6emluZz1mYWxzZVwiIGNhdGVnb3J5LiBUaGlzIHBhdGNoJ3MgZW50aXJldHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBXZSdyZSAqb25seSogZGVhbGluZyB3aXRoIGNvbW1lbnQgY29ycmVjdGlvbnMsIGluY2x1ZGluZyBpbiBzZWxmdGVzdHMuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIHN0cmljdGx5IGNvbW1lbnQgc3BlbGxpbmcgZml4ZXMgYWNyb3NzIHRoZSBrZXJuZWwsIGhlYWRlcnMsIHNvdXJjZSBmaWxlcywgdG9vbHMgYW5kIHNlbGZ0ZXN0cywgSSBjb25jbHVkZSB0aGF0IGBXb3J0aEZ1enppbmdgIGFic29sdXRlbHkgbXVzdCBiZSBmYWxzZSBpbiB0aGlzIHNjZW5hcmlvLiBDb25zZXF1ZW50bHksIHRoZSBgRm9jdXNTeW1ib2xzYCBzZXQgc2hvdWxkIGFsc28gYmUgZW1wdHksIGFzIHRoZXJlIGFyZSBubyBzeW1ib2xzIHRvIGZvY3VzIG9uLiBTaW1pbGFybHksIHRoZSBgRW5hYmxlQ29uZmlnc2Agc2V0IHNob3VsZCBhbHNvIGJlIGVtcHR5LiBXZSBoYXZlIG5vdGhpbmcgaGVyZSB0aGF0IHdhcnJhbnRzIGZ1enppbmcgb3IgZW5hYmxpbmcgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuSSdsbCBwcm9jZWVkIHRvIHZlcmlmeSB0aGVzZSBzZXR0aW5ncyB1c2luZyB0aGUgcHJvcGVyIHNldC1yZXN1bHRzIHRvb2wgY2FsbCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDU0LCJPdXRwdXRUb2tlbnMiOjcxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMjM6MDA6NDQuNjcwMDAzMzY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgc29sZWx5IG9mIGNvbW1lbnQgc3BlbGxpbmcgZml4ZXMgYWNyb3NzIGtlcm5lbCBzb3VyY2UgZmlsZXMsIGhlYWRlciBmaWxlcywgYW5kIHRvb2xzL3NlbGZ0ZXN0cy4gTm8gZXhlY3V0YWJsZSBjb2RlLCBkYXRhIHN0cnVjdHVyZXMsIGNvbnRyb2wgZmxvdywgb3IgcnVudGltZSBhc3NlcnRpb25zIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBzb2xlbHkgb2YgY29tbWVudCBzcGVsbGluZyBmaXhlcyBhY3Jvc3Mga2VybmVsIHNvdXJjZSBmaWxlcywgaGVhZGVyIGZpbGVzLCBhbmQgdG9vbHMvc2VsZnRlc3RzLiBObyBleGVjdXRhYmxlIGNvZGUsIGRhdGEgc3RydWN0dXJlcywgY29udHJvbCBmbG93LCBvciBydW50aW1lIGFzc2VydGlvbnMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMjM6MDA6NDQuNjcwMDIzNTk2WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowf7s94[1] Phase: Running StartedAt: 2026-09-05 23:00:55 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf7s94[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-05 23:00:55 +0000 UTC FinishedAt: 2026-09-05 23:00:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}