Name: series-workflowvkbvt Phase: Failed StartedAt: 2026-09-02 01:06:46 +0000 UTC FinishedAt: 2026-09-02 01:09:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkbvt[0] Phase: Succeeded StartedAt: 2026-09-02 01:06:46 +0000 UTC FinishedAt: 2026-09-02 01:09:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkbvt[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 01:06:46 +0000 UTC FinishedAt: 2026-09-02 01:09:05 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBOSUMgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZWQ1MmQ2NDRjZGFjMzAyYzYzZTQ4ZmNjNWZkMGI4YTY2N2RlNTFiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAwMTowODozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5pbmRleCA5YzJjYzUwMjc2YTU5Li4xZTllODY5MzQwZWYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5AQCAtMTM3OTEsNiAmIzQzOzEzNzkxLDE2IEBAIHN0YXRpYyBib29sIGJueHRfdWNfbGlzdF91cGRhdGVkKHN0cnVjdCBibnh0ICpicCxcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4gXHRpbnQgb2ZmID0gMDtcbiBcbiYjNDM7XHQvKiBJbiB0aGUgb3ZlcmZsb3cgc3RhdGUgbm8gc2Vjb25kYXJ5IEwyIGZpbHRlcnMgYXJlIHByb2dyYW1tZWRcbiYjNDM7XHQgKiBhbmQgdW5pY2FzdCBSWCByZWxpZXMgb24gdGhlIHByb21pc2N1b3VzIG1hc2ssIHNvIHRoZSBsaXN0XG4mIzQzO1x0ICogb25seSBuZWVkcyByZXByb2dyYW1taW5nIG9uY2UgaXQgZml0cyB0aGUgYXZhaWxhYmxlIGZpbHRlcnNcbiYjNDM7XHQgKiBhZ2Fpbi4gIFJlcG9ydGluZyBhbiB1cGRhdGUgaGVyZSB3b3VsZCByZXNlbmQgYW4gaWRlbnRpY2FsXG4mIzQzO1x0ICogU0VUX1JYX01BU0sgb24gZXZlcnkgY2FsbGJhY2ssIHdoaWNoIGNhdXNlcyBicmllZiBSWCBwYWNrZXRcbiYjNDM7XHQgKiBsb3NzIG9uIHNvbWUgY2hpcHMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpXG4mIzQzO1x0XHRyZXR1cm4gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgXHUwMDNjPSAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKTtcbiYjNDM7XG4gXHRpZiAobmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgIT0gKHZuaWMtXHUwMDNldWNfZmlsdGVyX2NvdW50IC0gMSkpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuQEAgLTEzODI2LDYgJiM0MzsxMzgzNiwxMyBAQCBzdGF0aWMgaW50IGJueHRfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9QUk9NSVNDKVxuIFx0XHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbiBcbiYjNDM7XHQvKiBLZWVwIHRoZSBwcm9taXNjdW91cyBiaXQgd2hpbGUgdGhlIFVDIGxpc3QgaXMgbG9uZ2VyIHRoYW4gdGhlXG4mIzQzO1x0ICogYXZhaWxhYmxlIEwyIGZpbHRlcnMsIHNvIHRoYXQgYW4gdW5jaGFuZ2VkIHJ4IG1vZGUgaXMgbm90XG4mIzQzO1x0ICogdHJlYXRlZCBhcyBhIG1hc2sgY2hhbmdlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICgodm5pYy1cdTAwM2VmbGFncyBcdTAwMjYgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRykgXHUwMDI2XHUwMDI2IGJueHRfcHJvbWlzY19vayhicCkpXG4mIzQzO1x0XHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbiYjNDM7XG4gXHR1Y191cGRhdGUgPSBibnh0X3VjX2xpc3RfdXBkYXRlZChicCwgdWMpO1xuIFxuIFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0JST0FEQ0FTVClcbkBAIC0xMzg1Myw2ICYjNDM7MTM4NzAsOSBAQCBzdGF0aWMgaW50IGJueHRfY2ZnX3J4X21vZGUoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsXG4gXHRzdHJ1Y3QgYm54dF92bmljX2luZm8gKnZuaWMgPSBcdTAwMjZicC1cdTAwM2V2bmljX2luZm9bQk5YVF9WTklDX0RFRkFVTFRdO1xuIFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcbiBcdGludCBpLCBvZmYgPSAwLCByYztcbiYjNDM7XHRib29sIHVjX3Byb21pc2M7XG4mIzQzO1xuJiM0MztcdHVjX3Byb21pc2MgPSAhISh2bmljLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKTtcbiBcbiBcdGlmICghdWNfdXBkYXRlKVxuIFx0XHRnb3RvIHNraXBfdWM7XG5AQCAtMTM4NjksNyAmIzQzOzEzODg5LDEyIEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiBcdG5ldGlmX2FkZHJfbG9ja19iaChkZXYpO1xuIFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFx1MDAzZSAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKSkge1xuIFx0XHR2bmljLVx1MDAzZXJ4X21hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xuJiM0MztcdFx0dWNfcHJvbWlzYyA9IHRydWU7XG4gXHR9IGVsc2Uge1xuJiM0MztcdFx0dWNfcHJvbWlzYyA9IGZhbHNlO1xuJiM0MztcdFx0aWYgKCEoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQykpXG4mIzQzO1x0XHRcdHZuaWMtXHUwMDNlcnhfbWFzayBcdTAwMjY9XG4mIzQzO1x0XHRcdFx0fkNGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbiBcdFx0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgdWMpIHtcbiBcdFx0XHRtZW1jcHkodm5pYy1cdTAwM2V1Y19saXN0ICYjNDM7IG9mZiwgaGEtXHUwMDNlYWRkciwgRVRIX0FMRU4pO1xuIFx0XHRcdG9mZiAmIzQzOz0gRVRIX0FMRU47XG5AQCAtMTM5MDcsMTEgJiM0MzsxMzkzMiwyNCBAQCBzdGF0aWMgaW50IGJueHRfY2ZnX3J4X21vZGUoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsXG4gXHRcdHZuaWMtXHUwMDNlbWNfbGlzdF9jb3VudCA9IDA7XG4gXHRcdHJjID0gYm54dF9od3JtX2NmYV9sMl9zZXRfcnhfbWFzayhicCwgMCk7XG4gXHR9XG4tXHRpZiAocmMpXG4mIzQzO1x0aWYgKHJjKSB7XG4gXHRcdG5ldGRldl9lcnIoYnAtXHUwMDNlZGV2LCBcJiMzNDtIV1JNIGNmYSBsMiByeCBtYXNrIGZhaWx1cmUgcmM6ICVkXFxuXCYjMzQ7LFxuIFx0XHRcdCAgIHJjKTtcbiYjNDM7XHRcdHJldHVybiByYztcbiYjNDM7XHR9XG4gXG4tXHRyZXR1cm4gcmM7XG4mIzQzO1x0LyogQ29tbWl0IHRoZSBvdmVyZmxvdyBzdGF0ZSBvbmx5IG9uY2UgdGhlIG1hc2sgaXMgaW5zdGFsbGVkLCBzb1xuJiM0MztcdCAqIHRoYXQgYSBmYWlsZWQgYXR0ZW1wdCBrZWVwcyB0aGUgc3RhdGUgbWFya2VkIGFzIGNoYW5nZWQgYW5kIHRoZVxuJiM0MztcdCAqIG5leHQgcmV0cnkgb3IgcngtbW9kZSBjYWxsYmFjayBwcm9ncmFtcyB0aGUgbWFzayBhZ2Fpbi5cbiYjNDM7XHQgKi9cbiYjNDM7XHRuZXRpZl9hZGRyX2xvY2tfYmgoZGV2KTtcbiYjNDM7XHRpZiAodWNfcHJvbWlzYylcbiYjNDM7XHRcdHZuaWMtXHUwMDNlZmxhZ3MgfD0gQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRztcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHR2bmljLVx1MDAzZWZsYWdzIFx1MDAyNj0gfkJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUc7XG4mIzQzO1x0bmV0aWZfYWRkcl91bmxvY2tfYmgoZGV2KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBib29sIGJueHRfY2FuX3Jlc2VydmVfcmluZ3Moc3RydWN0IGJueHQgKmJwKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbmluZGV4IGFiODk0ZjhhZGRlZjUuLjUzYWQzOWY0NDQxZDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbkBAIC0xMzMyLDYgJiM0MzsxMzMyLDcgQEAgc3RydWN0IGJueHRfdm5pY19pbmZvIHtcbiAjZGVmaW5lIEJOWFRfVk5JQ19SRlNfTkVXX1JTU19GTEFHXHQweDEwXG4gI2RlZmluZSBCTlhUX1ZOSUNfTlRVUExFX0ZMQUdcdFx0MHgyMFxuICNkZWZpbmUgQk5YVF9WTklDX1JTU0NUWF9GTEFHXHRcdDB4NDBcbiYjNDM7I2RlZmluZSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHXHQweDgwXG4gXHRzdHJ1Y3QgZXRodG9vbF9yeGZoX2NvbnRleHQgKnJzc19jdHg7XG4gXHR1MzJcdFx0dm5pY19pZDtcbiBcdHUxNlx0XHRkZWZhdWx0X3J4X3Jpbmc7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBOSUMgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZWQ1MmQ2NDRjZGFjMzAyYzYzZTQ4ZmNjNWZkMGI4YTY2N2RlNTFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAwMTowODozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMKaW5kZXggOWMyY2M1MDI3NmE1OS4uMWU5ZTg2OTM0MGVmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMKQEAgLTEzNzkxLDYgJiM0MzsxMzc5MSwxNiBAQCBzdGF0aWMgYm9vbCBibnh0X3VjX2xpc3RfdXBkYXRlZChzdHJ1Y3QgYm54dCAqYnAsCiAJc3RydWN0IG5ldGRldl9od19hZGRyICpoYTsKIAlpbnQgb2ZmID0gMDsKIAomIzQzOwkvKiBJbiB0aGUgb3ZlcmZsb3cgc3RhdGUgbm8gc2Vjb25kYXJ5IEwyIGZpbHRlcnMgYXJlIHByb2dyYW1tZWQKJiM0MzsJICogYW5kIHVuaWNhc3QgUlggcmVsaWVzIG9uIHRoZSBwcm9taXNjdW91cyBtYXNrLCBzbyB0aGUgbGlzdAomIzQzOwkgKiBvbmx5IG5lZWRzIHJlcHJvZ3JhbW1pbmcgb25jZSBpdCBmaXRzIHRoZSBhdmFpbGFibGUgZmlsdGVycwomIzQzOwkgKiBhZ2Fpbi4gIFJlcG9ydGluZyBhbiB1cGRhdGUgaGVyZSB3b3VsZCByZXNlbmQgYW4gaWRlbnRpY2FsCiYjNDM7CSAqIFNFVF9SWF9NQVNLIG9uIGV2ZXJ5IGNhbGxiYWNrLCB3aGljaCBjYXVzZXMgYnJpZWYgUlggcGFja2V0CiYjNDM7CSAqIGxvc3Mgb24gc29tZSBjaGlwcy4KJiM0MzsJICovCiYjNDM7CWlmICh2bmljLSZndDtmbGFncyAmYW1wOyBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKQomIzQzOwkJcmV0dXJuIG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpICZsdDs9IChCTlhUX01BWF9VQ19BRERSUyAtIDEpOwomIzQzOwogCWlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSAhPSAodm5pYy0mZ3Q7dWNfZmlsdGVyX2NvdW50IC0gMSkpCiAJCXJldHVybiB0cnVlOwogCkBAIC0xMzgyNiw2ICYjNDM7MTM4MzYsMTMgQEAgc3RhdGljIGludCBibnh0X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWYgKGRldi0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX1BST01JU0MpCiAJCW1hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTOwogCiYjNDM7CS8qIEtlZXAgdGhlIHByb21pc2N1b3VzIGJpdCB3aGlsZSB0aGUgVUMgbGlzdCBpcyBsb25nZXIgdGhhbiB0aGUKJiM0MzsJICogYXZhaWxhYmxlIEwyIGZpbHRlcnMsIHNvIHRoYXQgYW4gdW5jaGFuZ2VkIHJ4IG1vZGUgaXMgbm90CiYjNDM7CSAqIHRyZWF0ZWQgYXMgYSBtYXNrIGNoYW5nZS4KJiM0MzsJICovCiYjNDM7CWlmICgodm5pYy0mZ3Q7ZmxhZ3MgJmFtcDsgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRykgJmFtcDsmYW1wOyBibnh0X3Byb21pc2Nfb2soYnApKQomIzQzOwkJbWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7CiYjNDM7CiAJdWNfdXBkYXRlID0gYm54dF91Y19saXN0X3VwZGF0ZWQoYnAsIHVjKTsKIAogCWlmIChkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9CUk9BRENBU1QpCkBAIC0xMzg1Myw2ICYjNDM7MTM4NzAsOSBAQCBzdGF0aWMgaW50IGJueHRfY2ZnX3J4X21vZGUoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsCiAJc3RydWN0IGJueHRfdm5pY19pbmZvICp2bmljID0gJmFtcDticC0mZ3Q7dm5pY19pbmZvW0JOWFRfVk5JQ19ERUZBVUxUXTsKIAlzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhOwogCWludCBpLCBvZmYgPSAwLCByYzsKJiM0MzsJYm9vbCB1Y19wcm9taXNjOwomIzQzOwomIzQzOwl1Y19wcm9taXNjID0gISEodm5pYy0mZ3Q7ZmxhZ3MgJmFtcDsgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRyk7CiAKIAlpZiAoIXVjX3VwZGF0ZSkKIAkJZ290byBza2lwX3VjOwpAQCAtMTM4NjksNyAmIzQzOzEzODg5LDEyIEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YywKIAluZXRpZl9hZGRyX2xvY2tfYmgoZGV2KTsKIAlpZiAobmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgJmd0OyAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKSkgewogCQl2bmljLSZndDtyeF9tYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUzsKJiM0MzsJCXVjX3Byb21pc2MgPSB0cnVlOwogCX0gZWxzZSB7CiYjNDM7CQl1Y19wcm9taXNjID0gZmFsc2U7CiYjNDM7CQlpZiAoIShkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9QUk9NSVNDKSkKJiM0MzsJCQl2bmljLSZndDtyeF9tYXNrICZhbXA7PQomIzQzOwkJCQl+Q0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTOwogCQluZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1YykgewogCQkJbWVtY3B5KHZuaWMtJmd0O3VjX2xpc3QgJiM0Mzsgb2ZmLCBoYS0mZ3Q7YWRkciwgRVRIX0FMRU4pOwogCQkJb2ZmICYjNDM7PSBFVEhfQUxFTjsKQEAgLTEzOTA3LDExICYjNDM7MTM5MzIsMjQgQEAgc3RhdGljIGludCBibnh0X2NmZ19yeF9tb2RlKHN0cnVjdCBibnh0ICpicCwgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLAogCQl2bmljLSZndDttY19saXN0X2NvdW50ID0gMDsKIAkJcmMgPSBibnh0X2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKGJwLCAwKTsKIAl9Ci0JaWYgKHJjKQomIzQzOwlpZiAocmMpIHsKIAkJbmV0ZGV2X2VycihicC0mZ3Q7ZGV2LCAmIzM0O0hXUk0gY2ZhIGwyIHJ4IG1hc2sgZmFpbHVyZSByYzogJWRcbiYjMzQ7LAogCQkJICAgcmMpOwomIzQzOwkJcmV0dXJuIHJjOwomIzQzOwl9CiAKLQlyZXR1cm4gcmM7CiYjNDM7CS8qIENvbW1pdCB0aGUgb3ZlcmZsb3cgc3RhdGUgb25seSBvbmNlIHRoZSBtYXNrIGlzIGluc3RhbGxlZCwgc28KJiM0MzsJICogdGhhdCBhIGZhaWxlZCBhdHRlbXB0IGtlZXBzIHRoZSBzdGF0ZSBtYXJrZWQgYXMgY2hhbmdlZCBhbmQgdGhlCiYjNDM7CSAqIG5leHQgcmV0cnkgb3IgcngtbW9kZSBjYWxsYmFjayBwcm9ncmFtcyB0aGUgbWFzayBhZ2Fpbi4KJiM0MzsJICovCiYjNDM7CW5ldGlmX2FkZHJfbG9ja19iaChkZXYpOwomIzQzOwlpZiAodWNfcHJvbWlzYykKJiM0MzsJCXZuaWMtJmd0O2ZsYWdzIHw9IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUc7CiYjNDM7CWVsc2UKJiM0MzsJCXZuaWMtJmd0O2ZsYWdzICZhbXA7PSB+Qk5YVF9WTklDX1VDX1BST01JU0NfRkxBRzsKJiM0MzsJbmV0aWZfYWRkcl91bmxvY2tfYmgoZGV2KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBib29sIGJueHRfY2FuX3Jlc2VydmVfcmluZ3Moc3RydWN0IGJueHQgKmJwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaAppbmRleCBhYjg5NGY4YWRkZWY1Li41M2FkMzlmNDQ0MWQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaApAQCAtMTMzMiw2ICYjNDM7MTMzMiw3IEBAIHN0cnVjdCBibnh0X3ZuaWNfaW5mbyB7CiAjZGVmaW5lIEJOWFRfVk5JQ19SRlNfTkVXX1JTU19GTEFHCTB4MTAKICNkZWZpbmUgQk5YVF9WTklDX05UVVBMRV9GTEFHCQkweDIwCiAjZGVmaW5lIEJOWFRfVk5JQ19SU1NDVFhfRkxBRwkJMHg0MAomIzQzOyNkZWZpbmUgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRwkweDgwCiAJc3RydWN0IGV0aHRvb2xfcnhmaF9jb250ZXh0ICpyc3NfY3R4OwogCXUzMgkJdm5pY19pZDsKIAl1MTYJCWRlZmF1bHRfcnhfcmluZzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ4OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBibnh0YCBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IGlzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY2AgYW5kIGBibnh0LmhgLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyByZWZyZXNoIG15IG1lbW9yeTogYGJueHRgIGlzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIEJDTTU3M3h4L0JDTTU3NHh4L0JDTTU3NXh4IGRyaXZlci4gSXQgaGFuZGxlcyB0aG9zZSBoaWdoLXNwZWVkIDEwLzI1LzQwLzUwLzEwMC8yMDAvNDAwIEdicHMgUENJZSBFdGhlcm5ldCBOSUNzLiBSaWdodC4KCk5vdywgbGV0JiMzOTtzIGdvIG92ZXIgdGhlIGluc3RydWN0aW9ucyBhZ2FpbjogV2Ugd2FudCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyBzdWl0YWJsZSBmb3IgZnV6emluZywgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBldmFsdWF0ZSBpZiBpdCYjMzk7cyBwb3RlbnRpYWxseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGluc3RydWN0aW9ucyBzYXkgd2Ugc2hvdWxkIG1hcmsgaXQgYXMgbm90IHN1aXRhYmxlIGlmIGl0IG9ubHkgY29udGFpbnMgY29kZSB0aGF0OiBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgb3IgaXMgc3BlY2lmaWMgdG8gaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gUUVNVSAodmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyksIG9yIGlzIGNvZGUgdGhhdCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdGVhcmRvd24sIFBDSSBob3QtdW5wbHVnLCBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpTbywgdGhlIGtleSBxdWVzdGlvbiBiZWNvbWVzOiBpcyBgYm54dF9lbmAgc3VwcG9ydGVkIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IEkgYmVsaWV2ZSBJIGNhbiBhbnN3ZXIgdGhpcyBhbHJlYWR5IGJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8gdmVyaWZ5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIEJyb2FkY29tIE5ldFh0cmVtZS1FIChibnh0KSBpcyBhIHBoeXNpY2FsIFBDSWUgMTBHLzI1Ry8xMDBHIE5JQyBoYXJkd2FyZSBkcml2ZXIgKEJyb2FkY29tIFRob3IgLyBDdW11bHVzIC8gTmV0WHRyZW1lLUMvRSkuIFN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgYm54dCBOSUNzLiBJdCBlbXVsYXRlcyB0aGUgZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCB2aXJ0aW8tbmV0LCB2bXhuZXQzLCBuZTJrX3BjaSwgcGNuZXQsIGV0Yy4gZHJpdmVycy4gU28gSSBzaG91bGQgYmUgYWJsZSB0byBjb25maXJtIHRoaXMgYnkgY2hlY2tpbmcgdGhlIGBLY29uZmlnYCBmaWxlIHVuZGVyIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L0tjb25maWdgLiBJJiMzOTtsbCB1c2UgdG9vbHMgdG8gbWFrZSBzdXJlLgoKSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXNuJiMzOTt0IHN1aXRhYmxlLCBnaXZlbiB0aGF0IEkgZG9uJiMzOTt0IGJlbGlldmUgYm54dCBoYXJkd2FyZSBpcyBlbXVsYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQk5YVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTE5NT1jb25maWcgU1lTVEVNUE9SVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMDc6Y29uZmlnIEJOWFRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjA4LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gTmV0WHRyZW1lLUMvRSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIyMjpjb25maWcgQk5YVF9TUklPVlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O0Jyb2FkY29tIE5ldFh0cmVtZS1DL0UgU1ItSU9WIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjMxOmNvbmZpZyBCTlhUX0ZMT1dFUl9PRkZMT0FEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIzMi1cdGJvb2wgXCYjMzQ7VEMgRmxvd2VyIG9mZmxvYWQgc3VwcG9ydCBmb3IgTmV0WHRyZW1lLUMvRVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNDA6Y29uZmlnIEJOWFRfRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI0MS1cdGJvb2wgXCYjMzQ7RGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNTA6Y29uZmlnIEJOWFRfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjUxLVx0Ym9vbCBcJiMzNDtCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIEhXTU9OIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipCTlhUIEtjb25maWcgSW5xdWlyeSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIEtjb25maWcgZW50cnkgZm9yIHRoZSBCTlhUIGRyaXZlci4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVudGFsIG1hcCBvZiBob3cgdGhlIGJ1aWxkIHN5c3RlbSBoYW5kbGVzIGl0cyBjb25maWd1cmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgbG9vayBmb3IgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBhbmQgc2VjdGlvbiB0byBzZWUgd2hhdCB2YXJpYWJsZXMgYW5kIGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGluZ3MgbGlrZTogSXMgQk5YVCBldmVuIGVuYWJsZWQgYnkgZGVmYXVsdD8gV2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgZm9yIGl0cyB2YXJpb3VzIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIEkgc2hvdWxkIGxvb2sgb3V0IGZvciB0aGF0IG1pZ2h0IGFmZmVjdCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXImIzM5O3MgYmVoYXZpb3IsIHBhcnRpY3VsYXJseSBhcm91bmQgcGVyZm9ybWFuY2Ugb3Igc3BlY2lmaWMgaGFyZHdhcmUgdmFyaWFudHM/IEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSByZWxhdGVkIHRvIEJOWFQgdG8gaW5mb3JtIG15IG5leHQgc3RlcHMsIHdoZXRoZXIgdGhhdCYjMzk7cyBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIHR1bmluZywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMDU6XHRcdCAgRXRoZXJuZXQgc3dpdGNoLlxuIDIwNjpcdFxuIDIwNzpcdGNvbmZpZyBCTlhUXG4gMjA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIHN1cHBvcnRcJiMzNDtcbiAyMDk6XHRcdGRlcGVuZHMgb24gUENJXG4gMjEwOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gMjExOlx0XHRzZWxlY3QgRldfTE9BREVSXG4gMjEyOlx0XHRzZWxlY3QgQ1JDMzJcbiAyMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuIDIxNDpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuIDIxNTpcdFx0c2VsZWN0IERJTUxJQlxuIDIxNjpcdFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbiAyMTc6XHRcdGhlbHBcbiAyMTg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAxMC8yNS80MC81MCBnaWdhYml0XG4gMjE5Olx0XHQgIEV0aGVybmV0IGNhcmRzLiAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTpcbiAyMjA6XHRcdCAgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBibnh0X2VuLiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cbiAyMjE6XHRcbiAyMjI6XHRjb25maWcgQk5YVF9TUklPVlxuIDIyMzpcdFx0Ym9vbCBcJiMzNDtCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIFNSLUlPViBzdXBwb3J0XCYjMzQ7XG4gMjI0Olx0XHRkZXBlbmRzIG9uIEJOWFQgXHUwMDI2XHUwMDI2IFBDSV9JT1ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDU5CgkJCQkJCQlvdXRwdXQ6IDc5CgkJCQkJCQl0aG91Z2h0czogMzc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYEJOWFRgKSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSSBzZWUgYSBwYXRjaCB0b3VjaGluZyBgYm54dC5jYCBhbmQgYGJueHQuaGAsIHdoaWNoIGltbWVkaWF0ZWx5IHBvaW50cyBtZSB0byB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSBOSUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSBmb3VuZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9gLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBkcml2ZXIgb3BlcmF0ZXMgd2l0aCAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUgY2FyZHMsIHRoZSAxMC8yNS80MC81MEdiRSBraW5kLCB3aGljaCBJIGtub3cgYXJlbiYjMzk7dCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB0aG9zZSB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgR0NFL1FFTVUuCgpOb3csIGxldCYjMzk7cyBnbyBiYWNrIGFuZCBzZWUgaWYgdGhlIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgY2hhbmdlcyBuZWNlc3NpdGF0ZSBhIHBoeXNpY2FsIGhhcmR3YXJlIGNhcmQsIGFuZCBhcmVuJiMzOTt0IGFjY2Vzc2libGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMsIGl0JiMzOTtzIGEgJiMzNDtuby1nbyYjMzQ7IGZvciBmdXp6aW5nLiBHaXZlbiB0aGF0IHRoaXMgaXMgdGhlIGBCTlhUYCBkcml2ZXIsIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gdGhhdCBpdCBkb2VzLCBpbmRlZWQsIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4KClNvLCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZSwgYmVjYXVzZSB0aGVzZSBwYXRjaGVzIHRhcmdldCBhIGRyaXZlciB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsbHkgZGVwZW5kZW50IG9uIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBub3QgcmVhZGlseSBhY2Nlc3NpYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uLCB0aGlzIHBhdGNoIGlzICoqbm90Kiogd29ydGggZnV6emluZy4gSSYjMzk7bGwgZmxhZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIGFyZSBpbiB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYm54dCkgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIEV0aGVybmV0IE5JQyBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBOSUMgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjA4OjM5LjY2NzE2MTYwM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjU2ODU2MzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBOSUMgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjA4OjM5LjY2NzE2NzAwM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk5Mzg5ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWVkNTJkNjQ0Y2RhYzMwMmM2M2U0OGZjYzVmZDBiOGE2NjdkZTUxYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDAxOjA4OjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcXG5pbmRleCA5YzJjYzUwMjc2YTU5Li4xZTllODY5MzQwZWYzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcXG5AQCAtMTM3OTEsNiArMTM3OTEsMTYgQEAgc3RhdGljIGJvb2wgYm54dF91Y19saXN0X3VwZGF0ZWQoc3RydWN0IGJueHQgKmJwLFxcbiBcXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xcbiBcXHRpbnQgb2ZmID0gMDtcXG4gXFxuK1xcdC8qIEluIHRoZSBvdmVyZmxvdyBzdGF0ZSBubyBzZWNvbmRhcnkgTDIgZmlsdGVycyBhcmUgcHJvZ3JhbW1lZFxcbitcXHQgKiBhbmQgdW5pY2FzdCBSWCByZWxpZXMgb24gdGhlIHByb21pc2N1b3VzIG1hc2ssIHNvIHRoZSBsaXN0XFxuK1xcdCAqIG9ubHkgbmVlZHMgcmVwcm9ncmFtbWluZyBvbmNlIGl0IGZpdHMgdGhlIGF2YWlsYWJsZSBmaWx0ZXJzXFxuK1xcdCAqIGFnYWluLiAgUmVwb3J0aW5nIGFuIHVwZGF0ZSBoZXJlIHdvdWxkIHJlc2VuZCBhbiBpZGVudGljYWxcXG4rXFx0ICogU0VUX1JYX01BU0sgb24gZXZlcnkgY2FsbGJhY2ssIHdoaWNoIGNhdXNlcyBicmllZiBSWCBwYWNrZXRcXG4rXFx0ICogbG9zcyBvbiBzb21lIGNoaXBzLlxcbitcXHQgKi9cXG4rXFx0aWYgKHZuaWMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRylcXG4rXFx0XFx0cmV0dXJuIG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFxcdTAwM2M9IChCTlhUX01BWF9VQ19BRERSUyAtIDEpO1xcbitcXG4gXFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpICE9ICh2bmljLVxcdTAwM2V1Y19maWx0ZXJfY291bnQgLSAxKSlcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcbkBAIC0xMzgyNiw2ICsxMzgzNiwxMyBAQCBzdGF0aWMgaW50IGJueHRfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0aWYgKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfUFJPTUlTQylcXG4gXFx0XFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XFxuIFxcbitcXHQvKiBLZWVwIHRoZSBwcm9taXNjdW91cyBiaXQgd2hpbGUgdGhlIFVDIGxpc3QgaXMgbG9uZ2VyIHRoYW4gdGhlXFxuK1xcdCAqIGF2YWlsYWJsZSBMMiBmaWx0ZXJzLCBzbyB0aGF0IGFuIHVuY2hhbmdlZCByeCBtb2RlIGlzIG5vdFxcbitcXHQgKiB0cmVhdGVkIGFzIGEgbWFzayBjaGFuZ2UuXFxuK1xcdCAqL1xcbitcXHRpZiAoKHZuaWMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRykgXFx1MDAyNlxcdTAwMjYgYm54dF9wcm9taXNjX29rKGJwKSlcXG4rXFx0XFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XFxuK1xcbiBcXHR1Y191cGRhdGUgPSBibnh0X3VjX2xpc3RfdXBkYXRlZChicCwgdWMpO1xcbiBcXG4gXFx0aWYgKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfQlJPQURDQVNUKVxcbkBAIC0xMzg1Myw2ICsxMzg3MCw5IEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcXG4gXFx0c3RydWN0IGJueHRfdm5pY19pbmZvICp2bmljID0gXFx1MDAyNmJwLVxcdTAwM2V2bmljX2luZm9bQk5YVF9WTklDX0RFRkFVTFRdO1xcbiBcXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xcbiBcXHRpbnQgaSwgb2ZmID0gMCwgcmM7XFxuK1xcdGJvb2wgdWNfcHJvbWlzYztcXG4rXFxuK1xcdHVjX3Byb21pc2MgPSAhISh2bmljLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpO1xcbiBcXG4gXFx0aWYgKCF1Y191cGRhdGUpXFxuIFxcdFxcdGdvdG8gc2tpcF91YztcXG5AQCAtMTM4NjksNyArMTM4ODksMTIgQEAgc3RhdGljIGludCBibnh0X2NmZ19yeF9tb2RlKHN0cnVjdCBibnh0ICpicCwgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLFxcbiBcXHRuZXRpZl9hZGRyX2xvY2tfYmgoZGV2KTtcXG4gXFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFxcdTAwM2UgKEJOWFRfTUFYX1VDX0FERFJTIC0gMSkpIHtcXG4gXFx0XFx0dm5pYy1cXHUwMDNlcnhfbWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XFxuK1xcdFxcdHVjX3Byb21pc2MgPSB0cnVlO1xcbiBcXHR9IGVsc2Uge1xcbitcXHRcXHR1Y19wcm9taXNjID0gZmFsc2U7XFxuK1xcdFxcdGlmICghKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfUFJPTUlTQykpXFxuK1xcdFxcdFxcdHZuaWMtXFx1MDAzZXJ4X21hc2sgXFx1MDAyNj1cXG4rXFx0XFx0XFx0XFx0fkNGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcXG4gXFx0XFx0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgdWMpIHtcXG4gXFx0XFx0XFx0bWVtY3B5KHZuaWMtXFx1MDAzZXVjX2xpc3QgKyBvZmYsIGhhLVxcdTAwM2VhZGRyLCBFVEhfQUxFTik7XFxuIFxcdFxcdFxcdG9mZiArPSBFVEhfQUxFTjtcXG5AQCAtMTM5MDcsMTEgKzEzOTMyLDI0IEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcXG4gXFx0XFx0dm5pYy1cXHUwMDNlbWNfbGlzdF9jb3VudCA9IDA7XFxuIFxcdFxcdHJjID0gYm54dF9od3JtX2NmYV9sMl9zZXRfcnhfbWFzayhicCwgMCk7XFxuIFxcdH1cXG4tXFx0aWYgKHJjKVxcbitcXHRpZiAocmMpIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihicC1cXHUwMDNlZGV2LCBcXFwiSFdSTSBjZmEgbDIgcnggbWFzayBmYWlsdXJlIHJjOiAlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICAgcmMpO1xcbitcXHRcXHRyZXR1cm4gcmM7XFxuK1xcdH1cXG4gXFxuLVxcdHJldHVybiByYztcXG4rXFx0LyogQ29tbWl0IHRoZSBvdmVyZmxvdyBzdGF0ZSBvbmx5IG9uY2UgdGhlIG1hc2sgaXMgaW5zdGFsbGVkLCBzb1xcbitcXHQgKiB0aGF0IGEgZmFpbGVkIGF0dGVtcHQga2VlcHMgdGhlIHN0YXRlIG1hcmtlZCBhcyBjaGFuZ2VkIGFuZCB0aGVcXG4rXFx0ICogbmV4dCByZXRyeSBvciByeC1tb2RlIGNhbGxiYWNrIHByb2dyYW1zIHRoZSBtYXNrIGFnYWluLlxcbitcXHQgKi9cXG4rXFx0bmV0aWZfYWRkcl9sb2NrX2JoKGRldik7XFxuK1xcdGlmICh1Y19wcm9taXNjKVxcbitcXHRcXHR2bmljLVxcdTAwM2VmbGFncyB8PSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHO1xcbitcXHRlbHNlXFxuK1xcdFxcdHZuaWMtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5CTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHO1xcbitcXHRuZXRpZl9hZGRyX3VubG9ja19iaChkZXYpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIGJueHRfY2FuX3Jlc2VydmVfcmluZ3Moc3RydWN0IGJueHQgKmJwKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXFxuaW5kZXggYWI4OTRmOGFkZGVmNS4uNTNhZDM5ZjQ0NDFkNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXFxuQEAgLTEzMzIsNiArMTMzMiw3IEBAIHN0cnVjdCBibnh0X3ZuaWNfaW5mbyB7XFxuICNkZWZpbmUgQk5YVF9WTklDX1JGU19ORVdfUlNTX0ZMQUdcXHQweDEwXFxuICNkZWZpbmUgQk5YVF9WTklDX05UVVBMRV9GTEFHXFx0XFx0MHgyMFxcbiAjZGVmaW5lIEJOWFRfVk5JQ19SU1NDVFhfRkxBR1xcdFxcdDB4NDBcXG4rI2RlZmluZSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHXFx0MHg4MFxcbiBcXHRzdHJ1Y3QgZXRodG9vbF9yeGZoX2NvbnRleHQgKnJzc19jdHg7XFxuIFxcdHUzMlxcdFxcdHZuaWNfaWQ7XFxuIFxcdHUxNlxcdFxcdGRlZmF1bHRfcnhfcmluZztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MDg6NDAuMTY3MTU5NzIyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxNDE1Njg0MzY0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBOSUMgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVlZDUyZDY0NGNkYWMzMDJjNjNlNDhmY2M1ZmQwYjhhNjY3ZGU1MWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDAxOjA4OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xuaW5kZXggOWMyY2M1MDI3NmE1OS4uMWU5ZTg2OTM0MGVmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xuQEAgLTEzNzkxLDYgKzEzNzkxLDE2IEBAIHN0YXRpYyBib29sIGJueHRfdWNfbGlzdF91cGRhdGVkKHN0cnVjdCBibnh0ICpicCxcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4gXHRpbnQgb2ZmID0gMDtcbiBcbitcdC8qIEluIHRoZSBvdmVyZmxvdyBzdGF0ZSBubyBzZWNvbmRhcnkgTDIgZmlsdGVycyBhcmUgcHJvZ3JhbW1lZFxuK1x0ICogYW5kIHVuaWNhc3QgUlggcmVsaWVzIG9uIHRoZSBwcm9taXNjdW91cyBtYXNrLCBzbyB0aGUgbGlzdFxuK1x0ICogb25seSBuZWVkcyByZXByb2dyYW1taW5nIG9uY2UgaXQgZml0cyB0aGUgYXZhaWxhYmxlIGZpbHRlcnNcbitcdCAqIGFnYWluLiAgUmVwb3J0aW5nIGFuIHVwZGF0ZSBoZXJlIHdvdWxkIHJlc2VuZCBhbiBpZGVudGljYWxcbitcdCAqIFNFVF9SWF9NQVNLIG9uIGV2ZXJ5IGNhbGxiYWNrLCB3aGljaCBjYXVzZXMgYnJpZWYgUlggcGFja2V0XG4rXHQgKiBsb3NzIG9uIHNvbWUgY2hpcHMuXG4rXHQgKi9cbitcdGlmICh2bmljLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKVxuK1x0XHRyZXR1cm4gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgXHUwMDNjPSAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKTtcbitcbiBcdGlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSAhPSAodm5pYy1cdTAwM2V1Y19maWx0ZXJfY291bnQgLSAxKSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG5AQCAtMTM4MjYsNiArMTM4MzYsMTMgQEAgc3RhdGljIGludCBibnh0X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQylcbiBcdFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XG4gXG4rXHQvKiBLZWVwIHRoZSBwcm9taXNjdW91cyBiaXQgd2hpbGUgdGhlIFVDIGxpc3QgaXMgbG9uZ2VyIHRoYW4gdGhlXG4rXHQgKiBhdmFpbGFibGUgTDIgZmlsdGVycywgc28gdGhhdCBhbiB1bmNoYW5nZWQgcnggbW9kZSBpcyBub3RcbitcdCAqIHRyZWF0ZWQgYXMgYSBtYXNrIGNoYW5nZS5cbitcdCAqL1xuK1x0aWYgKCh2bmljLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKSBcdTAwMjZcdTAwMjYgYm54dF9wcm9taXNjX29rKGJwKSlcbitcdFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XG4rXG4gXHR1Y191cGRhdGUgPSBibnh0X3VjX2xpc3RfdXBkYXRlZChicCwgdWMpO1xuIFxuIFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0JST0FEQ0FTVClcbkBAIC0xMzg1Myw2ICsxMzg3MCw5IEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiBcdHN0cnVjdCBibnh0X3ZuaWNfaW5mbyAqdm5pYyA9IFx1MDAyNmJwLVx1MDAzZXZuaWNfaW5mb1tCTlhUX1ZOSUNfREVGQVVMVF07XG4gXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuIFx0aW50IGksIG9mZiA9IDAsIHJjO1xuK1x0Ym9vbCB1Y19wcm9taXNjO1xuK1xuK1x0dWNfcHJvbWlzYyA9ICEhKHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpO1xuIFxuIFx0aWYgKCF1Y191cGRhdGUpXG4gXHRcdGdvdG8gc2tpcF91YztcbkBAIC0xMzg2OSw3ICsxMzg4OSwxMiBAQCBzdGF0aWMgaW50IGJueHRfY2ZnX3J4X21vZGUoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsXG4gXHRuZXRpZl9hZGRyX2xvY2tfYmgoZGV2KTtcbiBcdGlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSBcdTAwM2UgKEJOWFRfTUFYX1VDX0FERFJTIC0gMSkpIHtcbiBcdFx0dm5pYy1cdTAwM2VyeF9tYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbitcdFx0dWNfcHJvbWlzYyA9IHRydWU7XG4gXHR9IGVsc2Uge1xuK1x0XHR1Y19wcm9taXNjID0gZmFsc2U7XG4rXHRcdGlmICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpKVxuK1x0XHRcdHZuaWMtXHUwMDNlcnhfbWFzayBcdTAwMjY9XG4rXHRcdFx0XHR+Q0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xuIFx0XHRuZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1Yykge1xuIFx0XHRcdG1lbWNweSh2bmljLVx1MDAzZXVjX2xpc3QgKyBvZmYsIGhhLVx1MDAzZWFkZHIsIEVUSF9BTEVOKTtcbiBcdFx0XHRvZmYgKz0gRVRIX0FMRU47XG5AQCAtMTM5MDcsMTEgKzEzOTMyLDI0IEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiBcdFx0dm5pYy1cdTAwM2VtY19saXN0X2NvdW50ID0gMDtcbiBcdFx0cmMgPSBibnh0X2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKGJwLCAwKTtcbiBcdH1cbi1cdGlmIChyYylcbitcdGlmIChyYykge1xuIFx0XHRuZXRkZXZfZXJyKGJwLVx1MDAzZWRldiwgXCJIV1JNIGNmYSBsMiByeCBtYXNrIGZhaWx1cmUgcmM6ICVkXFxuXCIsXG4gXHRcdFx0ICAgcmMpO1xuK1x0XHRyZXR1cm4gcmM7XG4rXHR9XG4gXG4tXHRyZXR1cm4gcmM7XG4rXHQvKiBDb21taXQgdGhlIG92ZXJmbG93IHN0YXRlIG9ubHkgb25jZSB0aGUgbWFzayBpcyBpbnN0YWxsZWQsIHNvXG4rXHQgKiB0aGF0IGEgZmFpbGVkIGF0dGVtcHQga2VlcHMgdGhlIHN0YXRlIG1hcmtlZCBhcyBjaGFuZ2VkIGFuZCB0aGVcbitcdCAqIG5leHQgcmV0cnkgb3IgcngtbW9kZSBjYWxsYmFjayBwcm9ncmFtcyB0aGUgbWFzayBhZ2Fpbi5cbitcdCAqL1xuK1x0bmV0aWZfYWRkcl9sb2NrX2JoKGRldik7XG4rXHRpZiAodWNfcHJvbWlzYylcbitcdFx0dm5pYy1cdTAwM2VmbGFncyB8PSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHO1xuK1x0ZWxzZVxuK1x0XHR2bmljLVx1MDAzZWZsYWdzIFx1MDAyNj0gfkJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUc7XG4rXHRuZXRpZl9hZGRyX3VubG9ja19iaChkZXYpO1xuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBib29sIGJueHRfY2FuX3Jlc2VydmVfcmluZ3Moc3RydWN0IGJueHQgKmJwKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbmluZGV4IGFiODk0ZjhhZGRlZjUuLjUzYWQzOWY0NDQxZDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbkBAIC0xMzMyLDYgKzEzMzIsNyBAQCBzdHJ1Y3QgYm54dF92bmljX2luZm8ge1xuICNkZWZpbmUgQk5YVF9WTklDX1JGU19ORVdfUlNTX0ZMQUdcdDB4MTBcbiAjZGVmaW5lIEJOWFRfVk5JQ19OVFVQTEVfRkxBR1x0XHQweDIwXG4gI2RlZmluZSBCTlhUX1ZOSUNfUlNTQ1RYX0ZMQUdcdFx0MHg0MFxuKyNkZWZpbmUgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBR1x0MHg4MFxuIFx0c3RydWN0IGV0aHRvb2xfcnhmaF9jb250ZXh0ICpyc3NfY3R4O1xuIFx0dTMyXHRcdHZuaWNfaWQ7XG4gXHR1MTZcdFx0ZGVmYXVsdF9yeF9yaW5nO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MDg6NDAuMTY3MTYxMzgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzIwNzcxNzA0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBibnh0YCBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNgIGFuZCBgYm54dC5oYC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyByZWZyZXNoIG15IG1lbW9yeTogYGJueHRgIGlzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIEJDTTU3M3h4L0JDTTU3NHh4L0JDTTU3NXh4IGRyaXZlci4gSXQgaGFuZGxlcyB0aG9zZSBoaWdoLXNwZWVkIDEwLzI1LzQwLzUwLzEwMC8yMDAvNDAwIEdicHMgUENJZSBFdGhlcm5ldCBOSUNzLiBSaWdodC5cblxuTm93LCBsZXQncyBnbyBvdmVyIHRoZSBpbnN0cnVjdGlvbnMgYWdhaW46IFdlIHdhbnQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgc3VpdGFibGUgZm9yIGZ1enppbmcsIHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8gZXZhbHVhdGUgaWYgaXQncyBwb3RlbnRpYWxseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGluc3RydWN0aW9ucyBzYXkgd2Ugc2hvdWxkIG1hcmsgaXQgYXMgbm90IHN1aXRhYmxlIGlmIGl0IG9ubHkgY29udGFpbnMgY29kZSB0aGF0OiBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgb3IgaXMgc3BlY2lmaWMgdG8gaGFyZHdhcmUgdGhhdCdzIG5vdCBlbXVsYXRlZCBpbiBRRU1VICh2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggZHJpdmVycywgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzKSwgb3IgaXMgY29kZSB0aGF0IGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGRyaXZlciB0ZWFyZG93biwgUENJIGhvdC11bnBsdWcsIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuU28sIHRoZSBrZXkgcXVlc3Rpb24gYmVjb21lczogaXMgYGJueHRfZW5gIHN1cHBvcnRlZCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBJIGJlbGlldmUgSSBjYW4gYW5zd2VyIHRoaXMgYWxyZWFkeSBiYXNlZCBvbiBteSBleHBlcmllbmNlLCBidXQgaXQncyBpbXBvcnRhbnQgdG8gdmVyaWZ5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIEJyb2FkY29tIE5ldFh0cmVtZS1FIChibnh0KSBpcyBhIHBoeXNpY2FsIFBDSWUgMTBHLzI1Ry8xMDBHIE5JQyBoYXJkd2FyZSBkcml2ZXIgKEJyb2FkY29tIFRob3IgLyBDdW11bHVzIC8gTmV0WHRyZW1lLUMvRSkuIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBibnh0IE5JQ3MuIEl0IGVtdWxhdGVzIHRoZSBlMTAwMCwgZTEwMDBlLCBpZ2IsIHJ0bDgxMzksIHZpcnRpby1uZXQsIHZteG5ldDMsIG5lMmtfcGNpLCBwY25ldCwgZXRjLiBkcml2ZXJzLiBTbyBJIHNob3VsZCBiZSBhYmxlIHRvIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyB0aGUgYEtjb25maWdgIGZpbGUgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvS2NvbmZpZ2AuIEknbGwgdXNlIHRvb2xzIHRvIG1ha2Ugc3VyZS5cblxuSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXNuJ3Qgc3VpdGFibGUsIGdpdmVuIHRoYXQgSSBkb24ndCBiZWxpZXZlIGJueHQgaGFyZHdhcmUgaXMgZW11bGF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMTowODo0Ny4zNzQ4ODEwNTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM0NjMzODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJOWFRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MTk1PWNvbmZpZyBTWVNURU1QT1JUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIwNzpjb25maWcgQk5YVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjA4LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIyMjpjb25maWcgQk5YVF9TUklPVlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIkJyb2FkY29tIE5ldFh0cmVtZS1DL0UgU1ItSU9WIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIzMTpjb25maWcgQk5YVF9GTE9XRVJfT0ZGTE9BRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjMyLVxcdGJvb2wgXFxcIlRDIEZsb3dlciBvZmZsb2FkIHN1cHBvcnQgZm9yIE5ldFh0cmVtZS1DL0VcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI0MDpjb25maWcgQk5YVF9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI0MS1cXHRib29sIFxcXCJEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNTA6Y29uZmlnIEJOWFRfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI1MS1cXHRib29sIFxcXCJCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIEhXTU9OIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjA4OjQ3LjQyODM0OTE5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNDU1OTA4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQk5YVCBLY29uZmlnIElucXVpcnkqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgdGhlIEJOWFQgZHJpdmVyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbWFwIG9mIGhvdyB0aGUgYnVpbGQgc3lzdGVtIGhhbmRsZXMgaXRzIGNvbmZpZ3VyYXRpb24uIEknbSBnb2luZyB0byBxdWlja2x5IGxvb2sgZm9yIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgYW5kIHNlY3Rpb24gdG8gc2VlIHdoYXQgdmFyaWFibGVzIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYXkuIEknbSB0aGlua2luZyBhYm91dCB0aGluZ3MgbGlrZTogSXMgQk5YVCBldmVuIGVuYWJsZWQgYnkgZGVmYXVsdD8gV2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgZm9yIGl0cyB2YXJpb3VzIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIEkgc2hvdWxkIGxvb2sgb3V0IGZvciB0aGF0IG1pZ2h0IGFmZmVjdCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXIncyBiZWhhdmlvciwgcGFydGljdWxhcmx5IGFyb3VuZCBwZXJmb3JtYW5jZSBvciBzcGVjaWZpYyBoYXJkd2FyZSB2YXJpYW50cz8gSSdtIGhvcGluZyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgcmVsYXRlZCB0byBCTlhUIHRvIGluZm9ybSBteSBuZXh0IHN0ZXBzLCB3aGV0aGVyIHRoYXQncyBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIHR1bmluZywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4OTUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMTowODo0OS43NzM5NDE3MDFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwNTpcXHRcXHQgIEV0aGVybmV0IHN3aXRjaC5cXG4gMjA2OlxcdFxcbiAyMDc6XFx0Y29uZmlnIEJOWFRcXG4gMjA4OlxcdFxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIHN1cHBvcnRcXFwiXFxuIDIwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAyMTA6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAyMTE6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAyMTI6XFx0XFx0c2VsZWN0IENSQzMyXFxuIDIxMzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gMjE0OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gMjE1OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gMjE2OlxcdFxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuIDIxNzpcXHRcXHRoZWxwXFxuIDIxODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgMTAvMjUvNDAvNTAgZ2lnYWJpdFxcbiAyMTk6XFx0XFx0ICBFdGhlcm5ldCBjYXJkcy4gIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6XFxuIDIyMDpcXHRcXHQgIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYm54dF9lbi4gIFRoaXMgaXMgcmVjb21tZW5kZWQuXFxuIDIyMTpcXHRcXG4gMjIyOlxcdGNvbmZpZyBCTlhUX1NSSU9WXFxuIDIyMzpcXHRcXHRib29sIFxcXCJCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIFNSLUlPViBzdXBwb3J0XFxcIlxcbiAyMjQ6XFx0XFx0ZGVwZW5kcyBvbiBCTlhUIFxcdTAwMjZcXHUwMDI2IFBDSV9JT1ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MDg6NDkuNzc0MDA2MTQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU0OTk3MTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGBCTlhUYCkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSSBzZWUgYSBwYXRjaCB0b3VjaGluZyBgYm54dC5jYCBhbmQgYGJueHQuaGAsIHdoaWNoIGltbWVkaWF0ZWx5IHBvaW50cyBtZSB0byB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSBOSUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSBmb3VuZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9gLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBkcml2ZXIgb3BlcmF0ZXMgd2l0aCAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUgY2FyZHMsIHRoZSAxMC8yNS80MC81MEdiRSBraW5kLCB3aGljaCBJIGtub3cgYXJlbid0IHR5cGljYWxseSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHRob3NlIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBHQ0UvUUVNVS5cblxuTm93LCBsZXQncyBnbyBiYWNrIGFuZCBzZWUgaWYgdGhlIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgY2hhbmdlcyBuZWNlc3NpdGF0ZSBhIHBoeXNpY2FsIGhhcmR3YXJlIGNhcmQsIGFuZCBhcmVuJ3QgYWNjZXNzaWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cywgaXQncyBhIFwibm8tZ29cIiBmb3IgZnV6emluZy4gR2l2ZW4gdGhhdCB0aGlzIGlzIHRoZSBgQk5YVGAgZHJpdmVyLCBJJ20gcHJldHR5IGNlcnRhaW4gdGhhdCBpdCBkb2VzLCBpbmRlZWQsIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS5cblxuU28sIGFjY29yZGluZyB0byB0aGUgZ3VpZGVsaW5lLCBiZWNhdXNlIHRoZXNlIHBhdGNoZXMgdGFyZ2V0IGEgZHJpdmVyIHRoYXQncyBmdW5kYW1lbnRhbGx5IGRlcGVuZGVudCBvbiBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgbm90IHJlYWRpbHkgYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiwgdGhpcyBwYXRjaCBpcyAqKm5vdCoqIHdvcnRoIGZ1enppbmcuIEknbGwgZmxhZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTksIk91dHB1dFRva2VucyI6NzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMTowODo1NC4zMjM5ODAyOTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIGluIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgRXRoZXJuZXQgTklDIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIGFyZSBpbiB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYm54dCkgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIEV0aGVybmV0IE5JQyBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MDg6NTQuMzI0MDA1NTYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowvkbvt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 01:06:46 +0000 UTC FinishedAt: 2026-09-02 01:08:56 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBOSUMgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZWQ1MmQ2NDRjZGFjMzAyYzYzZTQ4ZmNjNWZkMGI4YTY2N2RlNTFiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAwMTowODozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5pbmRleCA5YzJjYzUwMjc2YTU5Li4xZTllODY5MzQwZWYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5AQCAtMTM3OTEsNiAmIzQzOzEzNzkxLDE2IEBAIHN0YXRpYyBib29sIGJueHRfdWNfbGlzdF91cGRhdGVkKHN0cnVjdCBibnh0ICpicCxcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4gXHRpbnQgb2ZmID0gMDtcbiBcbiYjNDM7XHQvKiBJbiB0aGUgb3ZlcmZsb3cgc3RhdGUgbm8gc2Vjb25kYXJ5IEwyIGZpbHRlcnMgYXJlIHByb2dyYW1tZWRcbiYjNDM7XHQgKiBhbmQgdW5pY2FzdCBSWCByZWxpZXMgb24gdGhlIHByb21pc2N1b3VzIG1hc2ssIHNvIHRoZSBsaXN0XG4mIzQzO1x0ICogb25seSBuZWVkcyByZXByb2dyYW1taW5nIG9uY2UgaXQgZml0cyB0aGUgYXZhaWxhYmxlIGZpbHRlcnNcbiYjNDM7XHQgKiBhZ2Fpbi4gIFJlcG9ydGluZyBhbiB1cGRhdGUgaGVyZSB3b3VsZCByZXNlbmQgYW4gaWRlbnRpY2FsXG4mIzQzO1x0ICogU0VUX1JYX01BU0sgb24gZXZlcnkgY2FsbGJhY2ssIHdoaWNoIGNhdXNlcyBicmllZiBSWCBwYWNrZXRcbiYjNDM7XHQgKiBsb3NzIG9uIHNvbWUgY2hpcHMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpXG4mIzQzO1x0XHRyZXR1cm4gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgXHUwMDNjPSAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKTtcbiYjNDM7XG4gXHRpZiAobmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgIT0gKHZuaWMtXHUwMDNldWNfZmlsdGVyX2NvdW50IC0gMSkpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuQEAgLTEzODI2LDYgJiM0MzsxMzgzNiwxMyBAQCBzdGF0aWMgaW50IGJueHRfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9QUk9NSVNDKVxuIFx0XHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbiBcbiYjNDM7XHQvKiBLZWVwIHRoZSBwcm9taXNjdW91cyBiaXQgd2hpbGUgdGhlIFVDIGxpc3QgaXMgbG9uZ2VyIHRoYW4gdGhlXG4mIzQzO1x0ICogYXZhaWxhYmxlIEwyIGZpbHRlcnMsIHNvIHRoYXQgYW4gdW5jaGFuZ2VkIHJ4IG1vZGUgaXMgbm90XG4mIzQzO1x0ICogdHJlYXRlZCBhcyBhIG1hc2sgY2hhbmdlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICgodm5pYy1cdTAwM2VmbGFncyBcdTAwMjYgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRykgXHUwMDI2XHUwMDI2IGJueHRfcHJvbWlzY19vayhicCkpXG4mIzQzO1x0XHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbiYjNDM7XG4gXHR1Y191cGRhdGUgPSBibnh0X3VjX2xpc3RfdXBkYXRlZChicCwgdWMpO1xuIFxuIFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0JST0FEQ0FTVClcbkBAIC0xMzg1Myw2ICYjNDM7MTM4NzAsOSBAQCBzdGF0aWMgaW50IGJueHRfY2ZnX3J4X21vZGUoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsXG4gXHRzdHJ1Y3QgYm54dF92bmljX2luZm8gKnZuaWMgPSBcdTAwMjZicC1cdTAwM2V2bmljX2luZm9bQk5YVF9WTklDX0RFRkFVTFRdO1xuIFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcbiBcdGludCBpLCBvZmYgPSAwLCByYztcbiYjNDM7XHRib29sIHVjX3Byb21pc2M7XG4mIzQzO1xuJiM0MztcdHVjX3Byb21pc2MgPSAhISh2bmljLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKTtcbiBcbiBcdGlmICghdWNfdXBkYXRlKVxuIFx0XHRnb3RvIHNraXBfdWM7XG5AQCAtMTM4NjksNyAmIzQzOzEzODg5LDEyIEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiBcdG5ldGlmX2FkZHJfbG9ja19iaChkZXYpO1xuIFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFx1MDAzZSAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKSkge1xuIFx0XHR2bmljLVx1MDAzZXJ4X21hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xuJiM0MztcdFx0dWNfcHJvbWlzYyA9IHRydWU7XG4gXHR9IGVsc2Uge1xuJiM0MztcdFx0dWNfcHJvbWlzYyA9IGZhbHNlO1xuJiM0MztcdFx0aWYgKCEoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQykpXG4mIzQzO1x0XHRcdHZuaWMtXHUwMDNlcnhfbWFzayBcdTAwMjY9XG4mIzQzO1x0XHRcdFx0fkNGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbiBcdFx0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgdWMpIHtcbiBcdFx0XHRtZW1jcHkodm5pYy1cdTAwM2V1Y19saXN0ICYjNDM7IG9mZiwgaGEtXHUwMDNlYWRkciwgRVRIX0FMRU4pO1xuIFx0XHRcdG9mZiAmIzQzOz0gRVRIX0FMRU47XG5AQCAtMTM5MDcsMTEgJiM0MzsxMzkzMiwyNCBAQCBzdGF0aWMgaW50IGJueHRfY2ZnX3J4X21vZGUoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsXG4gXHRcdHZuaWMtXHUwMDNlbWNfbGlzdF9jb3VudCA9IDA7XG4gXHRcdHJjID0gYm54dF9od3JtX2NmYV9sMl9zZXRfcnhfbWFzayhicCwgMCk7XG4gXHR9XG4tXHRpZiAocmMpXG4mIzQzO1x0aWYgKHJjKSB7XG4gXHRcdG5ldGRldl9lcnIoYnAtXHUwMDNlZGV2LCBcJiMzNDtIV1JNIGNmYSBsMiByeCBtYXNrIGZhaWx1cmUgcmM6ICVkXFxuXCYjMzQ7LFxuIFx0XHRcdCAgIHJjKTtcbiYjNDM7XHRcdHJldHVybiByYztcbiYjNDM7XHR9XG4gXG4tXHRyZXR1cm4gcmM7XG4mIzQzO1x0LyogQ29tbWl0IHRoZSBvdmVyZmxvdyBzdGF0ZSBvbmx5IG9uY2UgdGhlIG1hc2sgaXMgaW5zdGFsbGVkLCBzb1xuJiM0MztcdCAqIHRoYXQgYSBmYWlsZWQgYXR0ZW1wdCBrZWVwcyB0aGUgc3RhdGUgbWFya2VkIGFzIGNoYW5nZWQgYW5kIHRoZVxuJiM0MztcdCAqIG5leHQgcmV0cnkgb3IgcngtbW9kZSBjYWxsYmFjayBwcm9ncmFtcyB0aGUgbWFzayBhZ2Fpbi5cbiYjNDM7XHQgKi9cbiYjNDM7XHRuZXRpZl9hZGRyX2xvY2tfYmgoZGV2KTtcbiYjNDM7XHRpZiAodWNfcHJvbWlzYylcbiYjNDM7XHRcdHZuaWMtXHUwMDNlZmxhZ3MgfD0gQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRztcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHR2bmljLVx1MDAzZWZsYWdzIFx1MDAyNj0gfkJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUc7XG4mIzQzO1x0bmV0aWZfYWRkcl91bmxvY2tfYmgoZGV2KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBib29sIGJueHRfY2FuX3Jlc2VydmVfcmluZ3Moc3RydWN0IGJueHQgKmJwKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbmluZGV4IGFiODk0ZjhhZGRlZjUuLjUzYWQzOWY0NDQxZDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbkBAIC0xMzMyLDYgJiM0MzsxMzMyLDcgQEAgc3RydWN0IGJueHRfdm5pY19pbmZvIHtcbiAjZGVmaW5lIEJOWFRfVk5JQ19SRlNfTkVXX1JTU19GTEFHXHQweDEwXG4gI2RlZmluZSBCTlhUX1ZOSUNfTlRVUExFX0ZMQUdcdFx0MHgyMFxuICNkZWZpbmUgQk5YVF9WTklDX1JTU0NUWF9GTEFHXHRcdDB4NDBcbiYjNDM7I2RlZmluZSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHXHQweDgwXG4gXHRzdHJ1Y3QgZXRodG9vbF9yeGZoX2NvbnRleHQgKnJzc19jdHg7XG4gXHR1MzJcdFx0dm5pY19pZDtcbiBcdHUxNlx0XHRkZWZhdWx0X3J4X3Jpbmc7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBOSUMgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZWQ1MmQ2NDRjZGFjMzAyYzYzZTQ4ZmNjNWZkMGI4YTY2N2RlNTFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAwMTowODozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMKaW5kZXggOWMyY2M1MDI3NmE1OS4uMWU5ZTg2OTM0MGVmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMKQEAgLTEzNzkxLDYgJiM0MzsxMzc5MSwxNiBAQCBzdGF0aWMgYm9vbCBibnh0X3VjX2xpc3RfdXBkYXRlZChzdHJ1Y3QgYm54dCAqYnAsCiAJc3RydWN0IG5ldGRldl9od19hZGRyICpoYTsKIAlpbnQgb2ZmID0gMDsKIAomIzQzOwkvKiBJbiB0aGUgb3ZlcmZsb3cgc3RhdGUgbm8gc2Vjb25kYXJ5IEwyIGZpbHRlcnMgYXJlIHByb2dyYW1tZWQKJiM0MzsJICogYW5kIHVuaWNhc3QgUlggcmVsaWVzIG9uIHRoZSBwcm9taXNjdW91cyBtYXNrLCBzbyB0aGUgbGlzdAomIzQzOwkgKiBvbmx5IG5lZWRzIHJlcHJvZ3JhbW1pbmcgb25jZSBpdCBmaXRzIHRoZSBhdmFpbGFibGUgZmlsdGVycwomIzQzOwkgKiBhZ2Fpbi4gIFJlcG9ydGluZyBhbiB1cGRhdGUgaGVyZSB3b3VsZCByZXNlbmQgYW4gaWRlbnRpY2FsCiYjNDM7CSAqIFNFVF9SWF9NQVNLIG9uIGV2ZXJ5IGNhbGxiYWNrLCB3aGljaCBjYXVzZXMgYnJpZWYgUlggcGFja2V0CiYjNDM7CSAqIGxvc3Mgb24gc29tZSBjaGlwcy4KJiM0MzsJICovCiYjNDM7CWlmICh2bmljLSZndDtmbGFncyAmYW1wOyBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKQomIzQzOwkJcmV0dXJuIG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpICZsdDs9IChCTlhUX01BWF9VQ19BRERSUyAtIDEpOwomIzQzOwogCWlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSAhPSAodm5pYy0mZ3Q7dWNfZmlsdGVyX2NvdW50IC0gMSkpCiAJCXJldHVybiB0cnVlOwogCkBAIC0xMzgyNiw2ICYjNDM7MTM4MzYsMTMgQEAgc3RhdGljIGludCBibnh0X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWYgKGRldi0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX1BST01JU0MpCiAJCW1hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTOwogCiYjNDM7CS8qIEtlZXAgdGhlIHByb21pc2N1b3VzIGJpdCB3aGlsZSB0aGUgVUMgbGlzdCBpcyBsb25nZXIgdGhhbiB0aGUKJiM0MzsJICogYXZhaWxhYmxlIEwyIGZpbHRlcnMsIHNvIHRoYXQgYW4gdW5jaGFuZ2VkIHJ4IG1vZGUgaXMgbm90CiYjNDM7CSAqIHRyZWF0ZWQgYXMgYSBtYXNrIGNoYW5nZS4KJiM0MzsJICovCiYjNDM7CWlmICgodm5pYy0mZ3Q7ZmxhZ3MgJmFtcDsgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRykgJmFtcDsmYW1wOyBibnh0X3Byb21pc2Nfb2soYnApKQomIzQzOwkJbWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7CiYjNDM7CiAJdWNfdXBkYXRlID0gYm54dF91Y19saXN0X3VwZGF0ZWQoYnAsIHVjKTsKIAogCWlmIChkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9CUk9BRENBU1QpCkBAIC0xMzg1Myw2ICYjNDM7MTM4NzAsOSBAQCBzdGF0aWMgaW50IGJueHRfY2ZnX3J4X21vZGUoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsCiAJc3RydWN0IGJueHRfdm5pY19pbmZvICp2bmljID0gJmFtcDticC0mZ3Q7dm5pY19pbmZvW0JOWFRfVk5JQ19ERUZBVUxUXTsKIAlzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhOwogCWludCBpLCBvZmYgPSAwLCByYzsKJiM0MzsJYm9vbCB1Y19wcm9taXNjOwomIzQzOwomIzQzOwl1Y19wcm9taXNjID0gISEodm5pYy0mZ3Q7ZmxhZ3MgJmFtcDsgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRyk7CiAKIAlpZiAoIXVjX3VwZGF0ZSkKIAkJZ290byBza2lwX3VjOwpAQCAtMTM4NjksNyAmIzQzOzEzODg5LDEyIEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YywKIAluZXRpZl9hZGRyX2xvY2tfYmgoZGV2KTsKIAlpZiAobmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgJmd0OyAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKSkgewogCQl2bmljLSZndDtyeF9tYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUzsKJiM0MzsJCXVjX3Byb21pc2MgPSB0cnVlOwogCX0gZWxzZSB7CiYjNDM7CQl1Y19wcm9taXNjID0gZmFsc2U7CiYjNDM7CQlpZiAoIShkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9QUk9NSVNDKSkKJiM0MzsJCQl2bmljLSZndDtyeF9tYXNrICZhbXA7PQomIzQzOwkJCQl+Q0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTOwogCQluZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1YykgewogCQkJbWVtY3B5KHZuaWMtJmd0O3VjX2xpc3QgJiM0Mzsgb2ZmLCBoYS0mZ3Q7YWRkciwgRVRIX0FMRU4pOwogCQkJb2ZmICYjNDM7PSBFVEhfQUxFTjsKQEAgLTEzOTA3LDExICYjNDM7MTM5MzIsMjQgQEAgc3RhdGljIGludCBibnh0X2NmZ19yeF9tb2RlKHN0cnVjdCBibnh0ICpicCwgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLAogCQl2bmljLSZndDttY19saXN0X2NvdW50ID0gMDsKIAkJcmMgPSBibnh0X2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKGJwLCAwKTsKIAl9Ci0JaWYgKHJjKQomIzQzOwlpZiAocmMpIHsKIAkJbmV0ZGV2X2VycihicC0mZ3Q7ZGV2LCAmIzM0O0hXUk0gY2ZhIGwyIHJ4IG1hc2sgZmFpbHVyZSByYzogJWRcbiYjMzQ7LAogCQkJICAgcmMpOwomIzQzOwkJcmV0dXJuIHJjOwomIzQzOwl9CiAKLQlyZXR1cm4gcmM7CiYjNDM7CS8qIENvbW1pdCB0aGUgb3ZlcmZsb3cgc3RhdGUgb25seSBvbmNlIHRoZSBtYXNrIGlzIGluc3RhbGxlZCwgc28KJiM0MzsJICogdGhhdCBhIGZhaWxlZCBhdHRlbXB0IGtlZXBzIHRoZSBzdGF0ZSBtYXJrZWQgYXMgY2hhbmdlZCBhbmQgdGhlCiYjNDM7CSAqIG5leHQgcmV0cnkgb3IgcngtbW9kZSBjYWxsYmFjayBwcm9ncmFtcyB0aGUgbWFzayBhZ2Fpbi4KJiM0MzsJICovCiYjNDM7CW5ldGlmX2FkZHJfbG9ja19iaChkZXYpOwomIzQzOwlpZiAodWNfcHJvbWlzYykKJiM0MzsJCXZuaWMtJmd0O2ZsYWdzIHw9IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUc7CiYjNDM7CWVsc2UKJiM0MzsJCXZuaWMtJmd0O2ZsYWdzICZhbXA7PSB+Qk5YVF9WTklDX1VDX1BST01JU0NfRkxBRzsKJiM0MzsJbmV0aWZfYWRkcl91bmxvY2tfYmgoZGV2KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBib29sIGJueHRfY2FuX3Jlc2VydmVfcmluZ3Moc3RydWN0IGJueHQgKmJwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaAppbmRleCBhYjg5NGY4YWRkZWY1Li41M2FkMzlmNDQ0MWQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaApAQCAtMTMzMiw2ICYjNDM7MTMzMiw3IEBAIHN0cnVjdCBibnh0X3ZuaWNfaW5mbyB7CiAjZGVmaW5lIEJOWFRfVk5JQ19SRlNfTkVXX1JTU19GTEFHCTB4MTAKICNkZWZpbmUgQk5YVF9WTklDX05UVVBMRV9GTEFHCQkweDIwCiAjZGVmaW5lIEJOWFRfVk5JQ19SU1NDVFhfRkxBRwkJMHg0MAomIzQzOyNkZWZpbmUgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRwkweDgwCiAJc3RydWN0IGV0aHRvb2xfcnhmaF9jb250ZXh0ICpyc3NfY3R4OwogCXUzMgkJdm5pY19pZDsKIAl1MTYJCWRlZmF1bHRfcnhfcmluZzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ4OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBibnh0YCBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IGlzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY2AgYW5kIGBibnh0LmhgLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyByZWZyZXNoIG15IG1lbW9yeTogYGJueHRgIGlzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIEJDTTU3M3h4L0JDTTU3NHh4L0JDTTU3NXh4IGRyaXZlci4gSXQgaGFuZGxlcyB0aG9zZSBoaWdoLXNwZWVkIDEwLzI1LzQwLzUwLzEwMC8yMDAvNDAwIEdicHMgUENJZSBFdGhlcm5ldCBOSUNzLiBSaWdodC4KCk5vdywgbGV0JiMzOTtzIGdvIG92ZXIgdGhlIGluc3RydWN0aW9ucyBhZ2FpbjogV2Ugd2FudCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyBzdWl0YWJsZSBmb3IgZnV6emluZywgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBldmFsdWF0ZSBpZiBpdCYjMzk7cyBwb3RlbnRpYWxseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGluc3RydWN0aW9ucyBzYXkgd2Ugc2hvdWxkIG1hcmsgaXQgYXMgbm90IHN1aXRhYmxlIGlmIGl0IG9ubHkgY29udGFpbnMgY29kZSB0aGF0OiBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgb3IgaXMgc3BlY2lmaWMgdG8gaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gUUVNVSAodmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyksIG9yIGlzIGNvZGUgdGhhdCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBkcml2ZXIgdGVhcmRvd24sIFBDSSBob3QtdW5wbHVnLCBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpTbywgdGhlIGtleSBxdWVzdGlvbiBiZWNvbWVzOiBpcyBgYm54dF9lbmAgc3VwcG9ydGVkIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IEkgYmVsaWV2ZSBJIGNhbiBhbnN3ZXIgdGhpcyBhbHJlYWR5IGJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8gdmVyaWZ5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIEJyb2FkY29tIE5ldFh0cmVtZS1FIChibnh0KSBpcyBhIHBoeXNpY2FsIFBDSWUgMTBHLzI1Ry8xMDBHIE5JQyBoYXJkd2FyZSBkcml2ZXIgKEJyb2FkY29tIFRob3IgLyBDdW11bHVzIC8gTmV0WHRyZW1lLUMvRSkuIFN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgYm54dCBOSUNzLiBJdCBlbXVsYXRlcyB0aGUgZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCB2aXJ0aW8tbmV0LCB2bXhuZXQzLCBuZTJrX3BjaSwgcGNuZXQsIGV0Yy4gZHJpdmVycy4gU28gSSBzaG91bGQgYmUgYWJsZSB0byBjb25maXJtIHRoaXMgYnkgY2hlY2tpbmcgdGhlIGBLY29uZmlnYCBmaWxlIHVuZGVyIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L0tjb25maWdgLiBJJiMzOTtsbCB1c2UgdG9vbHMgdG8gbWFrZSBzdXJlLgoKSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXNuJiMzOTt0IHN1aXRhYmxlLCBnaXZlbiB0aGF0IEkgZG9uJiMzOTt0IGJlbGlldmUgYm54dCBoYXJkd2FyZSBpcyBlbXVsYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQk5YVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTE5NT1jb25maWcgU1lTVEVNUE9SVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMDc6Y29uZmlnIEJOWFRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjA4LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gTmV0WHRyZW1lLUMvRSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIyMjpjb25maWcgQk5YVF9TUklPVlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O0Jyb2FkY29tIE5ldFh0cmVtZS1DL0UgU1ItSU9WIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjMxOmNvbmZpZyBCTlhUX0ZMT1dFUl9PRkZMT0FEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIzMi1cdGJvb2wgXCYjMzQ7VEMgRmxvd2VyIG9mZmxvYWQgc3VwcG9ydCBmb3IgTmV0WHRyZW1lLUMvRVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNDA6Y29uZmlnIEJOWFRfRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI0MS1cdGJvb2wgXCYjMzQ7RGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNTA6Y29uZmlnIEJOWFRfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjUxLVx0Ym9vbCBcJiMzNDtCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIEhXTU9OIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipCTlhUIEtjb25maWcgSW5xdWlyeSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIEtjb25maWcgZW50cnkgZm9yIHRoZSBCTlhUIGRyaXZlci4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVudGFsIG1hcCBvZiBob3cgdGhlIGJ1aWxkIHN5c3RlbSBoYW5kbGVzIGl0cyBjb25maWd1cmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgbG9vayBmb3IgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBhbmQgc2VjdGlvbiB0byBzZWUgd2hhdCB2YXJpYWJsZXMgYW5kIGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGluZ3MgbGlrZTogSXMgQk5YVCBldmVuIGVuYWJsZWQgYnkgZGVmYXVsdD8gV2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgZm9yIGl0cyB2YXJpb3VzIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIEkgc2hvdWxkIGxvb2sgb3V0IGZvciB0aGF0IG1pZ2h0IGFmZmVjdCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXImIzM5O3MgYmVoYXZpb3IsIHBhcnRpY3VsYXJseSBhcm91bmQgcGVyZm9ybWFuY2Ugb3Igc3BlY2lmaWMgaGFyZHdhcmUgdmFyaWFudHM/IEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSByZWxhdGVkIHRvIEJOWFQgdG8gaW5mb3JtIG15IG5leHQgc3RlcHMsIHdoZXRoZXIgdGhhdCYjMzk7cyBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIHR1bmluZywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMDU6XHRcdCAgRXRoZXJuZXQgc3dpdGNoLlxuIDIwNjpcdFxuIDIwNzpcdGNvbmZpZyBCTlhUXG4gMjA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIHN1cHBvcnRcJiMzNDtcbiAyMDk6XHRcdGRlcGVuZHMgb24gUENJXG4gMjEwOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gMjExOlx0XHRzZWxlY3QgRldfTE9BREVSXG4gMjEyOlx0XHRzZWxlY3QgQ1JDMzJcbiAyMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuIDIxNDpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuIDIxNTpcdFx0c2VsZWN0IERJTUxJQlxuIDIxNjpcdFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbiAyMTc6XHRcdGhlbHBcbiAyMTg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAxMC8yNS80MC81MCBnaWdhYml0XG4gMjE5Olx0XHQgIEV0aGVybmV0IGNhcmRzLiAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTpcbiAyMjA6XHRcdCAgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBibnh0X2VuLiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cbiAyMjE6XHRcbiAyMjI6XHRjb25maWcgQk5YVF9TUklPVlxuIDIyMzpcdFx0Ym9vbCBcJiMzNDtCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIFNSLUlPViBzdXBwb3J0XCYjMzQ7XG4gMjI0Olx0XHRkZXBlbmRzIG9uIEJOWFQgXHUwMDI2XHUwMDI2IFBDSV9JT1ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDU5CgkJCQkJCQlvdXRwdXQ6IDc5CgkJCQkJCQl0aG91Z2h0czogMzc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYEJOWFRgKSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSSBzZWUgYSBwYXRjaCB0b3VjaGluZyBgYm54dC5jYCBhbmQgYGJueHQuaGAsIHdoaWNoIGltbWVkaWF0ZWx5IHBvaW50cyBtZSB0byB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSBOSUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSBmb3VuZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9gLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBkcml2ZXIgb3BlcmF0ZXMgd2l0aCAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUgY2FyZHMsIHRoZSAxMC8yNS80MC81MEdiRSBraW5kLCB3aGljaCBJIGtub3cgYXJlbiYjMzk7dCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB0aG9zZSB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgR0NFL1FFTVUuCgpOb3csIGxldCYjMzk7cyBnbyBiYWNrIGFuZCBzZWUgaWYgdGhlIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgY2hhbmdlcyBuZWNlc3NpdGF0ZSBhIHBoeXNpY2FsIGhhcmR3YXJlIGNhcmQsIGFuZCBhcmVuJiMzOTt0IGFjY2Vzc2libGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMsIGl0JiMzOTtzIGEgJiMzNDtuby1nbyYjMzQ7IGZvciBmdXp6aW5nLiBHaXZlbiB0aGF0IHRoaXMgaXMgdGhlIGBCTlhUYCBkcml2ZXIsIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gdGhhdCBpdCBkb2VzLCBpbmRlZWQsIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4KClNvLCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZSwgYmVjYXVzZSB0aGVzZSBwYXRjaGVzIHRhcmdldCBhIGRyaXZlciB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsbHkgZGVwZW5kZW50IG9uIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBub3QgcmVhZGlseSBhY2Nlc3NpYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uLCB0aGlzIHBhdGNoIGlzICoqbm90Kiogd29ydGggZnV6emluZy4gSSYjMzk7bGwgZmxhZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIGFyZSBpbiB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYm54dCkgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIEV0aGVybmV0IE5JQyBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBOSUMgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjA4OjM5LjY2NzE2MTYwM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjU2ODU2MzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBOSUMgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjA4OjM5LjY2NzE2NzAwM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk5Mzg5ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWVkNTJkNjQ0Y2RhYzMwMmM2M2U0OGZjYzVmZDBiOGE2NjdkZTUxYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDAxOjA4OjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcXG5pbmRleCA5YzJjYzUwMjc2YTU5Li4xZTllODY5MzQwZWYzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcXG5AQCAtMTM3OTEsNiArMTM3OTEsMTYgQEAgc3RhdGljIGJvb2wgYm54dF91Y19saXN0X3VwZGF0ZWQoc3RydWN0IGJueHQgKmJwLFxcbiBcXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xcbiBcXHRpbnQgb2ZmID0gMDtcXG4gXFxuK1xcdC8qIEluIHRoZSBvdmVyZmxvdyBzdGF0ZSBubyBzZWNvbmRhcnkgTDIgZmlsdGVycyBhcmUgcHJvZ3JhbW1lZFxcbitcXHQgKiBhbmQgdW5pY2FzdCBSWCByZWxpZXMgb24gdGhlIHByb21pc2N1b3VzIG1hc2ssIHNvIHRoZSBsaXN0XFxuK1xcdCAqIG9ubHkgbmVlZHMgcmVwcm9ncmFtbWluZyBvbmNlIGl0IGZpdHMgdGhlIGF2YWlsYWJsZSBmaWx0ZXJzXFxuK1xcdCAqIGFnYWluLiAgUmVwb3J0aW5nIGFuIHVwZGF0ZSBoZXJlIHdvdWxkIHJlc2VuZCBhbiBpZGVudGljYWxcXG4rXFx0ICogU0VUX1JYX01BU0sgb24gZXZlcnkgY2FsbGJhY2ssIHdoaWNoIGNhdXNlcyBicmllZiBSWCBwYWNrZXRcXG4rXFx0ICogbG9zcyBvbiBzb21lIGNoaXBzLlxcbitcXHQgKi9cXG4rXFx0aWYgKHZuaWMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRylcXG4rXFx0XFx0cmV0dXJuIG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFxcdTAwM2M9IChCTlhUX01BWF9VQ19BRERSUyAtIDEpO1xcbitcXG4gXFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpICE9ICh2bmljLVxcdTAwM2V1Y19maWx0ZXJfY291bnQgLSAxKSlcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcbkBAIC0xMzgyNiw2ICsxMzgzNiwxMyBAQCBzdGF0aWMgaW50IGJueHRfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0aWYgKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfUFJPTUlTQylcXG4gXFx0XFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XFxuIFxcbitcXHQvKiBLZWVwIHRoZSBwcm9taXNjdW91cyBiaXQgd2hpbGUgdGhlIFVDIGxpc3QgaXMgbG9uZ2VyIHRoYW4gdGhlXFxuK1xcdCAqIGF2YWlsYWJsZSBMMiBmaWx0ZXJzLCBzbyB0aGF0IGFuIHVuY2hhbmdlZCByeCBtb2RlIGlzIG5vdFxcbitcXHQgKiB0cmVhdGVkIGFzIGEgbWFzayBjaGFuZ2UuXFxuK1xcdCAqL1xcbitcXHRpZiAoKHZuaWMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRykgXFx1MDAyNlxcdTAwMjYgYm54dF9wcm9taXNjX29rKGJwKSlcXG4rXFx0XFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XFxuK1xcbiBcXHR1Y191cGRhdGUgPSBibnh0X3VjX2xpc3RfdXBkYXRlZChicCwgdWMpO1xcbiBcXG4gXFx0aWYgKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfQlJPQURDQVNUKVxcbkBAIC0xMzg1Myw2ICsxMzg3MCw5IEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcXG4gXFx0c3RydWN0IGJueHRfdm5pY19pbmZvICp2bmljID0gXFx1MDAyNmJwLVxcdTAwM2V2bmljX2luZm9bQk5YVF9WTklDX0RFRkFVTFRdO1xcbiBcXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xcbiBcXHRpbnQgaSwgb2ZmID0gMCwgcmM7XFxuK1xcdGJvb2wgdWNfcHJvbWlzYztcXG4rXFxuK1xcdHVjX3Byb21pc2MgPSAhISh2bmljLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpO1xcbiBcXG4gXFx0aWYgKCF1Y191cGRhdGUpXFxuIFxcdFxcdGdvdG8gc2tpcF91YztcXG5AQCAtMTM4NjksNyArMTM4ODksMTIgQEAgc3RhdGljIGludCBibnh0X2NmZ19yeF9tb2RlKHN0cnVjdCBibnh0ICpicCwgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLFxcbiBcXHRuZXRpZl9hZGRyX2xvY2tfYmgoZGV2KTtcXG4gXFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFxcdTAwM2UgKEJOWFRfTUFYX1VDX0FERFJTIC0gMSkpIHtcXG4gXFx0XFx0dm5pYy1cXHUwMDNlcnhfbWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XFxuK1xcdFxcdHVjX3Byb21pc2MgPSB0cnVlO1xcbiBcXHR9IGVsc2Uge1xcbitcXHRcXHR1Y19wcm9taXNjID0gZmFsc2U7XFxuK1xcdFxcdGlmICghKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfUFJPTUlTQykpXFxuK1xcdFxcdFxcdHZuaWMtXFx1MDAzZXJ4X21hc2sgXFx1MDAyNj1cXG4rXFx0XFx0XFx0XFx0fkNGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcXG4gXFx0XFx0bmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgdWMpIHtcXG4gXFx0XFx0XFx0bWVtY3B5KHZuaWMtXFx1MDAzZXVjX2xpc3QgKyBvZmYsIGhhLVxcdTAwM2VhZGRyLCBFVEhfQUxFTik7XFxuIFxcdFxcdFxcdG9mZiArPSBFVEhfQUxFTjtcXG5AQCAtMTM5MDcsMTEgKzEzOTMyLDI0IEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcXG4gXFx0XFx0dm5pYy1cXHUwMDNlbWNfbGlzdF9jb3VudCA9IDA7XFxuIFxcdFxcdHJjID0gYm54dF9od3JtX2NmYV9sMl9zZXRfcnhfbWFzayhicCwgMCk7XFxuIFxcdH1cXG4tXFx0aWYgKHJjKVxcbitcXHRpZiAocmMpIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihicC1cXHUwMDNlZGV2LCBcXFwiSFdSTSBjZmEgbDIgcnggbWFzayBmYWlsdXJlIHJjOiAlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICAgcmMpO1xcbitcXHRcXHRyZXR1cm4gcmM7XFxuK1xcdH1cXG4gXFxuLVxcdHJldHVybiByYztcXG4rXFx0LyogQ29tbWl0IHRoZSBvdmVyZmxvdyBzdGF0ZSBvbmx5IG9uY2UgdGhlIG1hc2sgaXMgaW5zdGFsbGVkLCBzb1xcbitcXHQgKiB0aGF0IGEgZmFpbGVkIGF0dGVtcHQga2VlcHMgdGhlIHN0YXRlIG1hcmtlZCBhcyBjaGFuZ2VkIGFuZCB0aGVcXG4rXFx0ICogbmV4dCByZXRyeSBvciByeC1tb2RlIGNhbGxiYWNrIHByb2dyYW1zIHRoZSBtYXNrIGFnYWluLlxcbitcXHQgKi9cXG4rXFx0bmV0aWZfYWRkcl9sb2NrX2JoKGRldik7XFxuK1xcdGlmICh1Y19wcm9taXNjKVxcbitcXHRcXHR2bmljLVxcdTAwM2VmbGFncyB8PSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHO1xcbitcXHRlbHNlXFxuK1xcdFxcdHZuaWMtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5CTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHO1xcbitcXHRuZXRpZl9hZGRyX3VubG9ja19iaChkZXYpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIGJueHRfY2FuX3Jlc2VydmVfcmluZ3Moc3RydWN0IGJueHQgKmJwKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXFxuaW5kZXggYWI4OTRmOGFkZGVmNS4uNTNhZDM5ZjQ0NDFkNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXFxuQEAgLTEzMzIsNiArMTMzMiw3IEBAIHN0cnVjdCBibnh0X3ZuaWNfaW5mbyB7XFxuICNkZWZpbmUgQk5YVF9WTklDX1JGU19ORVdfUlNTX0ZMQUdcXHQweDEwXFxuICNkZWZpbmUgQk5YVF9WTklDX05UVVBMRV9GTEFHXFx0XFx0MHgyMFxcbiAjZGVmaW5lIEJOWFRfVk5JQ19SU1NDVFhfRkxBR1xcdFxcdDB4NDBcXG4rI2RlZmluZSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHXFx0MHg4MFxcbiBcXHRzdHJ1Y3QgZXRodG9vbF9yeGZoX2NvbnRleHQgKnJzc19jdHg7XFxuIFxcdHUzMlxcdFxcdHZuaWNfaWQ7XFxuIFxcdHUxNlxcdFxcdGRlZmF1bHRfcnhfcmluZztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MDg6NDAuMTY3MTU5NzIyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxNDE1Njg0MzY0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBFdGhlcm5ldCBOSUMgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVlZDUyZDY0NGNkYWMzMDJjNjNlNDhmY2M1ZmQwYjhhNjY3ZGU1MWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDAxOjA4OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xuaW5kZXggOWMyY2M1MDI3NmE1OS4uMWU5ZTg2OTM0MGVmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xuQEAgLTEzNzkxLDYgKzEzNzkxLDE2IEBAIHN0YXRpYyBib29sIGJueHRfdWNfbGlzdF91cGRhdGVkKHN0cnVjdCBibnh0ICpicCxcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4gXHRpbnQgb2ZmID0gMDtcbiBcbitcdC8qIEluIHRoZSBvdmVyZmxvdyBzdGF0ZSBubyBzZWNvbmRhcnkgTDIgZmlsdGVycyBhcmUgcHJvZ3JhbW1lZFxuK1x0ICogYW5kIHVuaWNhc3QgUlggcmVsaWVzIG9uIHRoZSBwcm9taXNjdW91cyBtYXNrLCBzbyB0aGUgbGlzdFxuK1x0ICogb25seSBuZWVkcyByZXByb2dyYW1taW5nIG9uY2UgaXQgZml0cyB0aGUgYXZhaWxhYmxlIGZpbHRlcnNcbitcdCAqIGFnYWluLiAgUmVwb3J0aW5nIGFuIHVwZGF0ZSBoZXJlIHdvdWxkIHJlc2VuZCBhbiBpZGVudGljYWxcbitcdCAqIFNFVF9SWF9NQVNLIG9uIGV2ZXJ5IGNhbGxiYWNrLCB3aGljaCBjYXVzZXMgYnJpZWYgUlggcGFja2V0XG4rXHQgKiBsb3NzIG9uIHNvbWUgY2hpcHMuXG4rXHQgKi9cbitcdGlmICh2bmljLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKVxuK1x0XHRyZXR1cm4gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgXHUwMDNjPSAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKTtcbitcbiBcdGlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSAhPSAodm5pYy1cdTAwM2V1Y19maWx0ZXJfY291bnQgLSAxKSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG5AQCAtMTM4MjYsNiArMTM4MzYsMTMgQEAgc3RhdGljIGludCBibnh0X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQylcbiBcdFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XG4gXG4rXHQvKiBLZWVwIHRoZSBwcm9taXNjdW91cyBiaXQgd2hpbGUgdGhlIFVDIGxpc3QgaXMgbG9uZ2VyIHRoYW4gdGhlXG4rXHQgKiBhdmFpbGFibGUgTDIgZmlsdGVycywgc28gdGhhdCBhbiB1bmNoYW5nZWQgcnggbW9kZSBpcyBub3RcbitcdCAqIHRyZWF0ZWQgYXMgYSBtYXNrIGNoYW5nZS5cbitcdCAqL1xuK1x0aWYgKCh2bmljLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKSBcdTAwMjZcdTAwMjYgYm54dF9wcm9taXNjX29rKGJwKSlcbitcdFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XG4rXG4gXHR1Y191cGRhdGUgPSBibnh0X3VjX2xpc3RfdXBkYXRlZChicCwgdWMpO1xuIFxuIFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0JST0FEQ0FTVClcbkBAIC0xMzg1Myw2ICsxMzg3MCw5IEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiBcdHN0cnVjdCBibnh0X3ZuaWNfaW5mbyAqdm5pYyA9IFx1MDAyNmJwLVx1MDAzZXZuaWNfaW5mb1tCTlhUX1ZOSUNfREVGQVVMVF07XG4gXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuIFx0aW50IGksIG9mZiA9IDAsIHJjO1xuK1x0Ym9vbCB1Y19wcm9taXNjO1xuK1xuK1x0dWNfcHJvbWlzYyA9ICEhKHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpO1xuIFxuIFx0aWYgKCF1Y191cGRhdGUpXG4gXHRcdGdvdG8gc2tpcF91YztcbkBAIC0xMzg2OSw3ICsxMzg4OSwxMiBAQCBzdGF0aWMgaW50IGJueHRfY2ZnX3J4X21vZGUoc3RydWN0IGJueHQgKmJwLCBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsXG4gXHRuZXRpZl9hZGRyX2xvY2tfYmgoZGV2KTtcbiBcdGlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSBcdTAwM2UgKEJOWFRfTUFYX1VDX0FERFJTIC0gMSkpIHtcbiBcdFx0dm5pYy1cdTAwM2VyeF9tYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbitcdFx0dWNfcHJvbWlzYyA9IHRydWU7XG4gXHR9IGVsc2Uge1xuK1x0XHR1Y19wcm9taXNjID0gZmFsc2U7XG4rXHRcdGlmICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpKVxuK1x0XHRcdHZuaWMtXHUwMDNlcnhfbWFzayBcdTAwMjY9XG4rXHRcdFx0XHR+Q0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xuIFx0XHRuZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1Yykge1xuIFx0XHRcdG1lbWNweSh2bmljLVx1MDAzZXVjX2xpc3QgKyBvZmYsIGhhLVx1MDAzZWFkZHIsIEVUSF9BTEVOKTtcbiBcdFx0XHRvZmYgKz0gRVRIX0FMRU47XG5AQCAtMTM5MDcsMTEgKzEzOTMyLDI0IEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiBcdFx0dm5pYy1cdTAwM2VtY19saXN0X2NvdW50ID0gMDtcbiBcdFx0cmMgPSBibnh0X2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKGJwLCAwKTtcbiBcdH1cbi1cdGlmIChyYylcbitcdGlmIChyYykge1xuIFx0XHRuZXRkZXZfZXJyKGJwLVx1MDAzZWRldiwgXCJIV1JNIGNmYSBsMiByeCBtYXNrIGZhaWx1cmUgcmM6ICVkXFxuXCIsXG4gXHRcdFx0ICAgcmMpO1xuK1x0XHRyZXR1cm4gcmM7XG4rXHR9XG4gXG4tXHRyZXR1cm4gcmM7XG4rXHQvKiBDb21taXQgdGhlIG92ZXJmbG93IHN0YXRlIG9ubHkgb25jZSB0aGUgbWFzayBpcyBpbnN0YWxsZWQsIHNvXG4rXHQgKiB0aGF0IGEgZmFpbGVkIGF0dGVtcHQga2VlcHMgdGhlIHN0YXRlIG1hcmtlZCBhcyBjaGFuZ2VkIGFuZCB0aGVcbitcdCAqIG5leHQgcmV0cnkgb3IgcngtbW9kZSBjYWxsYmFjayBwcm9ncmFtcyB0aGUgbWFzayBhZ2Fpbi5cbitcdCAqL1xuK1x0bmV0aWZfYWRkcl9sb2NrX2JoKGRldik7XG4rXHRpZiAodWNfcHJvbWlzYylcbitcdFx0dm5pYy1cdTAwM2VmbGFncyB8PSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHO1xuK1x0ZWxzZVxuK1x0XHR2bmljLVx1MDAzZWZsYWdzIFx1MDAyNj0gfkJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUc7XG4rXHRuZXRpZl9hZGRyX3VubG9ja19iaChkZXYpO1xuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBib29sIGJueHRfY2FuX3Jlc2VydmVfcmluZ3Moc3RydWN0IGJueHQgKmJwKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbmluZGV4IGFiODk0ZjhhZGRlZjUuLjUzYWQzOWY0NDQxZDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbkBAIC0xMzMyLDYgKzEzMzIsNyBAQCBzdHJ1Y3QgYm54dF92bmljX2luZm8ge1xuICNkZWZpbmUgQk5YVF9WTklDX1JGU19ORVdfUlNTX0ZMQUdcdDB4MTBcbiAjZGVmaW5lIEJOWFRfVk5JQ19OVFVQTEVfRkxBR1x0XHQweDIwXG4gI2RlZmluZSBCTlhUX1ZOSUNfUlNTQ1RYX0ZMQUdcdFx0MHg0MFxuKyNkZWZpbmUgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBR1x0MHg4MFxuIFx0c3RydWN0IGV0aHRvb2xfcnhmaF9jb250ZXh0ICpyc3NfY3R4O1xuIFx0dTMyXHRcdHZuaWNfaWQ7XG4gXHR1MTZcdFx0ZGVmYXVsdF9yeF9yaW5nO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MDg6NDAuMTY3MTYxMzgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzIwNzcxNzA0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBibnh0YCBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNgIGFuZCBgYm54dC5oYC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyByZWZyZXNoIG15IG1lbW9yeTogYGJueHRgIGlzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIEJDTTU3M3h4L0JDTTU3NHh4L0JDTTU3NXh4IGRyaXZlci4gSXQgaGFuZGxlcyB0aG9zZSBoaWdoLXNwZWVkIDEwLzI1LzQwLzUwLzEwMC8yMDAvNDAwIEdicHMgUENJZSBFdGhlcm5ldCBOSUNzLiBSaWdodC5cblxuTm93LCBsZXQncyBnbyBvdmVyIHRoZSBpbnN0cnVjdGlvbnMgYWdhaW46IFdlIHdhbnQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgc3VpdGFibGUgZm9yIGZ1enppbmcsIHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8gZXZhbHVhdGUgaWYgaXQncyBwb3RlbnRpYWxseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGluc3RydWN0aW9ucyBzYXkgd2Ugc2hvdWxkIG1hcmsgaXQgYXMgbm90IHN1aXRhYmxlIGlmIGl0IG9ubHkgY29udGFpbnMgY29kZSB0aGF0OiBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgb3IgaXMgc3BlY2lmaWMgdG8gaGFyZHdhcmUgdGhhdCdzIG5vdCBlbXVsYXRlZCBpbiBRRU1VICh2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggZHJpdmVycywgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzKSwgb3IgaXMgY29kZSB0aGF0IGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGRyaXZlciB0ZWFyZG93biwgUENJIGhvdC11bnBsdWcsIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuU28sIHRoZSBrZXkgcXVlc3Rpb24gYmVjb21lczogaXMgYGJueHRfZW5gIHN1cHBvcnRlZCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBJIGJlbGlldmUgSSBjYW4gYW5zd2VyIHRoaXMgYWxyZWFkeSBiYXNlZCBvbiBteSBleHBlcmllbmNlLCBidXQgaXQncyBpbXBvcnRhbnQgdG8gdmVyaWZ5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIEJyb2FkY29tIE5ldFh0cmVtZS1FIChibnh0KSBpcyBhIHBoeXNpY2FsIFBDSWUgMTBHLzI1Ry8xMDBHIE5JQyBoYXJkd2FyZSBkcml2ZXIgKEJyb2FkY29tIFRob3IgLyBDdW11bHVzIC8gTmV0WHRyZW1lLUMvRSkuIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBibnh0IE5JQ3MuIEl0IGVtdWxhdGVzIHRoZSBlMTAwMCwgZTEwMDBlLCBpZ2IsIHJ0bDgxMzksIHZpcnRpby1uZXQsIHZteG5ldDMsIG5lMmtfcGNpLCBwY25ldCwgZXRjLiBkcml2ZXJzLiBTbyBJIHNob3VsZCBiZSBhYmxlIHRvIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyB0aGUgYEtjb25maWdgIGZpbGUgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvS2NvbmZpZ2AuIEknbGwgdXNlIHRvb2xzIHRvIG1ha2Ugc3VyZS5cblxuSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXNuJ3Qgc3VpdGFibGUsIGdpdmVuIHRoYXQgSSBkb24ndCBiZWxpZXZlIGJueHQgaGFyZHdhcmUgaXMgZW11bGF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMTowODo0Ny4zNzQ4ODEwNTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM0NjMzODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJOWFRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MTk1PWNvbmZpZyBTWVNURU1QT1JUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIwNzpjb25maWcgQk5YVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjA4LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIyMjpjb25maWcgQk5YVF9TUklPVlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIkJyb2FkY29tIE5ldFh0cmVtZS1DL0UgU1ItSU9WIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIzMTpjb25maWcgQk5YVF9GTE9XRVJfT0ZGTE9BRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjMyLVxcdGJvb2wgXFxcIlRDIEZsb3dlciBvZmZsb2FkIHN1cHBvcnQgZm9yIE5ldFh0cmVtZS1DL0VcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI0MDpjb25maWcgQk5YVF9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI0MS1cXHRib29sIFxcXCJEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNTA6Y29uZmlnIEJOWFRfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI1MS1cXHRib29sIFxcXCJCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIEhXTU9OIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjA4OjQ3LjQyODM0OTE5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNDU1OTA4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQk5YVCBLY29uZmlnIElucXVpcnkqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgdGhlIEJOWFQgZHJpdmVyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbWFwIG9mIGhvdyB0aGUgYnVpbGQgc3lzdGVtIGhhbmRsZXMgaXRzIGNvbmZpZ3VyYXRpb24uIEknbSBnb2luZyB0byBxdWlja2x5IGxvb2sgZm9yIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgYW5kIHNlY3Rpb24gdG8gc2VlIHdoYXQgdmFyaWFibGVzIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYXkuIEknbSB0aGlua2luZyBhYm91dCB0aGluZ3MgbGlrZTogSXMgQk5YVCBldmVuIGVuYWJsZWQgYnkgZGVmYXVsdD8gV2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgZm9yIGl0cyB2YXJpb3VzIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIEkgc2hvdWxkIGxvb2sgb3V0IGZvciB0aGF0IG1pZ2h0IGFmZmVjdCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXIncyBiZWhhdmlvciwgcGFydGljdWxhcmx5IGFyb3VuZCBwZXJmb3JtYW5jZSBvciBzcGVjaWZpYyBoYXJkd2FyZSB2YXJpYW50cz8gSSdtIGhvcGluZyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgcmVsYXRlZCB0byBCTlhUIHRvIGluZm9ybSBteSBuZXh0IHN0ZXBzLCB3aGV0aGVyIHRoYXQncyBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIHR1bmluZywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4OTUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMTowODo0OS43NzM5NDE3MDFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwNTpcXHRcXHQgIEV0aGVybmV0IHN3aXRjaC5cXG4gMjA2OlxcdFxcbiAyMDc6XFx0Y29uZmlnIEJOWFRcXG4gMjA4OlxcdFxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIHN1cHBvcnRcXFwiXFxuIDIwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAyMTA6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAyMTE6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAyMTI6XFx0XFx0c2VsZWN0IENSQzMyXFxuIDIxMzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gMjE0OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gMjE1OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gMjE2OlxcdFxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuIDIxNzpcXHRcXHRoZWxwXFxuIDIxODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgMTAvMjUvNDAvNTAgZ2lnYWJpdFxcbiAyMTk6XFx0XFx0ICBFdGhlcm5ldCBjYXJkcy4gIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6XFxuIDIyMDpcXHRcXHQgIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYm54dF9lbi4gIFRoaXMgaXMgcmVjb21tZW5kZWQuXFxuIDIyMTpcXHRcXG4gMjIyOlxcdGNvbmZpZyBCTlhUX1NSSU9WXFxuIDIyMzpcXHRcXHRib29sIFxcXCJCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIFNSLUlPViBzdXBwb3J0XFxcIlxcbiAyMjQ6XFx0XFx0ZGVwZW5kcyBvbiBCTlhUIFxcdTAwMjZcXHUwMDI2IFBDSV9JT1ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MDg6NDkuNzc0MDA2MTQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU0OTk3MTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGBCTlhUYCkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSSBzZWUgYSBwYXRjaCB0b3VjaGluZyBgYm54dC5jYCBhbmQgYGJueHQuaGAsIHdoaWNoIGltbWVkaWF0ZWx5IHBvaW50cyBtZSB0byB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSBOSUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSBmb3VuZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9gLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBkcml2ZXIgb3BlcmF0ZXMgd2l0aCAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUgY2FyZHMsIHRoZSAxMC8yNS80MC81MEdiRSBraW5kLCB3aGljaCBJIGtub3cgYXJlbid0IHR5cGljYWxseSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHRob3NlIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBHQ0UvUUVNVS5cblxuTm93LCBsZXQncyBnbyBiYWNrIGFuZCBzZWUgaWYgdGhlIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgY2hhbmdlcyBuZWNlc3NpdGF0ZSBhIHBoeXNpY2FsIGhhcmR3YXJlIGNhcmQsIGFuZCBhcmVuJ3QgYWNjZXNzaWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cywgaXQncyBhIFwibm8tZ29cIiBmb3IgZnV6emluZy4gR2l2ZW4gdGhhdCB0aGlzIGlzIHRoZSBgQk5YVGAgZHJpdmVyLCBJJ20gcHJldHR5IGNlcnRhaW4gdGhhdCBpdCBkb2VzLCBpbmRlZWQsIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS5cblxuU28sIGFjY29yZGluZyB0byB0aGUgZ3VpZGVsaW5lLCBiZWNhdXNlIHRoZXNlIHBhdGNoZXMgdGFyZ2V0IGEgZHJpdmVyIHRoYXQncyBmdW5kYW1lbnRhbGx5IGRlcGVuZGVudCBvbiBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgbm90IHJlYWRpbHkgYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiwgdGhpcyBwYXRjaCBpcyAqKm5vdCoqIHdvcnRoIGZ1enppbmcuIEknbGwgZmxhZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTksIk91dHB1dFRva2VucyI6NzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMTowODo1NC4zMjM5ODAyOTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgYXJlIGluIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgRXRoZXJuZXQgTklDIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIGFyZSBpbiB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYm54dCkgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIEV0aGVybmV0IE5JQyBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MDg6NTQuMzI0MDA1NTYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowvkbvt[1] Phase: Running StartedAt: 2026-09-02 01:09:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvkbvt[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 01:09:05 +0000 UTC FinishedAt: 2026-09-02 01:09:10 +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,}