Name: series-workflowp7xf8 Phase: Failed StartedAt: 2026-09-04 09:10:31 +0000 UTC FinishedAt: 2026-09-04 09:30:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7xf8[0] Phase: Succeeded StartedAt: 2026-09-04 09:10:31 +0000 UTC FinishedAt: 2026-09-04 09:29:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7xf8[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 09:10:31 +0000 UTC FinishedAt: 2026-09-04 09:29:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA5OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgKGBpY2VgKSBkcml2ZXIsIHNwZWNpZmljYWxseSBoYW5kbGluZyBGbG93IERpcmVjdG9yIGZpbHRlciBoYW5kbGUgY2xlYW51cCwgcmVidWlsZCBzZXJpYWxpemF0aW9uIHZpYSBhbiBhZGFwdGVyLWxldmVsIG11dGV4LCBhbmQgcmVjaXBlIHVwZGF0ZXMgb24gcmVzZXQuIFRoZSBgaWNlYCBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0tWTSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA5OjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODI5Mzk3YmI4M2Y0Y2YxZTJlMDMxMzI4OTlhYTlmNzJlZDA5ZDFkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDk6Mjk6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oXG5pbmRleCBkYjNjNzAxNWM1NmM0Li40NzM5ZmY4ODJiOWVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcbkBAIC0xMDI5LDYgJiM0MzsxMDI5LDcgQEAgaWNlX2dldF9mZGlyX2ZsdHJfaWRzKHN0cnVjdCBpY2VfaHcgKmh3LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLFxuIFx0XHQgICAgICB1MzIgKnJ1bGVfbG9jcyk7XG4gdm9pZCBpY2VfZmRpcl9yZW1fYWRxX2Nobmwoc3RydWN0IGljZV9odyAqaHcsIHUxNiB2c2lfaWR4KTtcbiB2b2lkIGljZV9mZGlyX3JlbGVhc2VfZmxvd3Moc3RydWN0IGljZV9odyAqaHcpO1xuJiM0Mzt2b2lkIGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gdm9pZCBpY2VfZmRpcl9yZXBsYXlfZmxvd3Moc3RydWN0IGljZV9odyAqaHcpO1xuIHZvaWQgaWNlX2ZkaXJfcmVwbGF5X2ZsdHJzKHN0cnVjdCBpY2VfcGYgKnBmKTtcbiBpbnQgaWNlX2ZkaXJfY3JlYXRlX2RmbHRfcnVsZXMoc3RydWN0IGljZV9wZiAqcGYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmNcbmluZGV4IDJkYzM2MjlkNmQwZjYuLjdkZTkyMjNlOTcxYTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmNcbkBAIC02NCw2ICYjNDM7NjQsNyBAQCBzdGF0aWMgc3RydWN0IGljZV9hZGFwdGVyICppY2VfYWRhcHRlcl9uZXcoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhZGFwdGVyLVx1MDAzZXR4cV9jdHhfbG9jayk7XG4gXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShhZGFwdGVyLVx1MDAzZWNwaV9waHlfbG9jayk7IGkmIzQzOyYjNDM7KVxuIFx0XHRtdXRleF9pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNlY3BpX3BoeV9sb2NrW2ldKTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNlcmVidWlsZF9sb2NrKTtcbiBcdHJlZmNvdW50X3NldChcdTAwMjZhZGFwdGVyLVx1MDAzZXJlZmNvdW50LCAxKTtcbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2Vwb3J0cy5sb2NrKTtcbkBAIC03Nyw2ICYjNDM7NzgsNyBAQCBzdGF0aWMgdm9pZCBpY2VfYWRhcHRlcl9mcmVlKHN0cnVjdCBpY2VfYWRhcHRlciAqYWRhcHRlcilcbiBcdFdBUk5fT04oIWxpc3RfZW1wdHkoXHUwMDI2YWRhcHRlci1cdTAwM2Vwb3J0cy5wb3J0cykpO1xuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoYWRhcHRlci1cdTAwM2VjcGlfcGh5X2xvY2spOyBpJiM0MzsmIzQzOylcbiBcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZWNwaV9waHlfbG9ja1tpXSk7XG4mIzQzO1x0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNmFkYXB0ZXItXHUwMDNlcG9ydHMubG9jayk7XG4gXG4gXHRrZnJlZShhZGFwdGVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oXG5pbmRleCA0ZjY5NWYzMmRhM2Q4Li5mOTI2NWRlOTczZWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oXG5AQCAtMzcsNiAmIzQzOzM3LDcgQEAgc3RydWN0IGljZV9wb3J0X2xpc3Qge1xuICAqIEBjcGlfcGh5X2xvY2s6IFBlci1QSFkgbXV0ZXggc2VyaWFsaXppbmcgQ1BJIFJFUS9BQ0sgdHJhbnNhY3Rpb25zLlxuICAqICAgICAgICAgICAgICAgSW5kZXggMCA9IFBIWTAsIGluZGV4IDEgPSBQSFkxLiBVc2VkIG9uIEU4MjVDIGRldmljZXMuXG4gICogQGN0cmxfcGY6IENvbnRyb2wgUEYgb2YgdGhlIGFkYXB0ZXJcbiYjNDM7ICogQHJlYnVpbGRfbG9jazogc2VyaWFsaXplIFBGUiByZWNvdmVyeSBhY3Jvc3MgUEZzIG9mIHRoZSBzYW1lIGFkYXB0ZXJcbiAgKiBAcG9ydHM6IFBvcnRzIGxpc3RcbiAgKiBAaW5kZXg6IDY0LWJpdCBpbmRleCBjYWNoZWQgZm9yIGNvbGxpc2lvbiBkZXRlY3Rpb24gb24gMzJiaXQgc3lzdGVtc1xuICAqL1xuQEAgLTQ4LDYgJiM0Mzs0OSw4IEBAIHN0cnVjdCBpY2VfYWRhcHRlciB7XG4gXHRzcGlubG9ja190IHR4cV9jdHhfbG9jaztcbiBcdC8qIFNlcmlhbGl6ZSBDUEkgUkVRL0FDSyB0cmFuc2FjdGlvbnMgcGVyIFBIWSAoRTgyNUMgb25seSkgKi9cbiBcdHN0cnVjdCBtdXRleCBjcGlfcGh5X2xvY2tbSUNFX0U4MjVfTUFYX1BIWVNdO1xuJiM0MztcdC8qIFNlcmlhbGl6ZSBQRlIgcmVjb3ZlcnkgdG91Y2hpbmcgc2hhcmVkIEZXIGdsb2JhbCBzdGF0ZSAqL1xuJiM0MztcdHN0cnVjdCBtdXRleCByZWJ1aWxkX2xvY2s7XG4gXG4gXHRzdHJ1Y3QgaWNlX3BmICpjdHJsX3BmO1xuIFx0c3RydWN0IGljZV9wb3J0X2xpc3QgcG9ydHM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sX2ZkaXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbF9mZGlyLmNcbmluZGV4IGFjZWVjMTg0ZTg5YjIuLmZhYTE2YjVhMTJjMGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jXG5AQCAtNDI4LDYgJiM0Mzs0MjgsMjcgQEAgdm9pZCBpY2VfZmRpcl9yZWxlYXNlX2Zsb3dzKHN0cnVjdCBpY2VfaHcgKmh3KVxuIFx0XHRpY2VfZmRpcl9lcmFzZV9mbG93X2Zyb21faHcoaHcsIElDRV9CTEtfRkQsIGZsb3cpO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyAtIGNsZWFyIGhhbmRsZXMgZnJlZWQgZHVyaW5nIHJlc2V0XG4mIzQzOyAqIEBodzogcG9pbnRlciB0byBIVyBpbnN0YW5jZVxuJiM0MzsgKi9cbiYjNDM7dm9pZCBpY2VfZmRpcl9jbGVhcl9mbG93X2hhbmRsZXMoc3RydWN0IGljZV9odyAqaHcpXG4mIzQzO3tcbiYjNDM7XHRpbnQgZmxvdztcbiYjNDM7XG4mIzQzO1x0Zm9yIChmbG93ID0gMDsgZmxvdyBcdTAwM2MgSUNFX0ZMVFJfUFRZUEVfTUFYOyBmbG93JiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IGljZV9mZF9od19wcm9mICpwcm9mID0gaHctXHUwMDNlZmRpcl9wcm9mW2Zsb3ddO1xuJiM0MztcdFx0aW50IHR1biwgaTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIXByb2YpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdGZvciAodHVuID0gMDsgdHVuIFx1MDAzYyBJQ0VfRkRfSFdfU0VHX01BWDsgdHVuJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJvZi1cdTAwM2VjbnQ7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRcdHByb2YtXHUwMDNlZW50cnlfaFtpXVt0dW5dID0gMDtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaWNlX2ZkaXJfcmVwbGF5X2Zsb3dzIC0gcmVwbGF5IEhXIEZsb3cgRGlyZWN0b3IgZmlsdGVyIGluZm9cbiAgKiBAaHc6IHBvaW50ZXIgdG8gSFcgaW5zdGFuY2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBkODg4MzU0ODJkM2FhLi43YWExMjM1NDQ3MzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5AQCAtNjAxLDYgJiM0Mzs2MDEsOCBAQCBpY2VfcHJlcGFyZV9mb3JfcmVzZXQoc3RydWN0IGljZV9wZiAqcGYsIGVudW0gaWNlX3Jlc2V0X3JlcSByZXNldF90eXBlKVxuIFx0XHRuZXRpZl9kZXZpY2VfZGV0YWNoKHZzaS1cdTAwM2VuZXRkZXYpO1xuIHNraXA6XG4gXG4mIzQzO1x0aWYgKGh3LVx1MDAzZWZkaXJfcHJvZilcbiYjNDM7XHRcdGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhodyk7XG4gXHQvKiBjbGVhciBTVyBmaWx0ZXJpbmcgREIgKi9cbiBcdGljZV9jbGVhcl9od190YmxzKGh3KTtcbiBcdC8qIGRpc2FibGUgdGhlIFZTSXMgYW5kIHRoZWlyIHF1ZXVlcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBET1dOICovXG5AQCAtNjU5LDcgJiM0Mzs2NjEsOSBAQCBzdGF0aWMgdm9pZCBpY2VfZG9fcmVzZXQoc3RydWN0IGljZV9wZiAqcGYsIGVudW0gaWNlX3Jlc2V0X3JlcSByZXNldF90eXBlKVxuIFx0ICovXG4gXHRpZiAocmVzZXRfdHlwZSA9PSBJQ0VfUkVTRVRfUEZSKSB7XG4gXHRcdHBmLVx1MDAzZXBmcl9jb3VudCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNnBmLVx1MDAzZWFkYXB0ZXItXHUwMDNlcmVidWlsZF9sb2NrKTtcbiBcdFx0aWNlX3JlYnVpbGQocGYsIHJlc2V0X3R5cGUpO1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBmLVx1MDAzZWFkYXB0ZXItXHUwMDNlcmVidWlsZF9sb2NrKTtcbiBcdFx0Y2xlYXJfYml0KElDRV9QUkVQQVJFRF9GT1JfUkVTRVQsIHBmLVx1MDAzZXN0YXRlKTtcbiBcdFx0Y2xlYXJfYml0KElDRV9QRlJfUkVRLCBwZi1cdTAwM2VzdGF0ZSk7XG4gXHRcdHdha2VfdXAoXHUwMDI2cGYtXHUwMDNlcmVzZXRfd2FpdF9xdWV1ZSk7XG5AQCAtNzA0LDcgJiM0Mzs3MDgsOSBAQCBzdGF0aWMgdm9pZCBpY2VfcmVzZXRfc3VidGFzayhzdHJ1Y3QgaWNlX3BmICpwZilcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHQvKiBkb25lIHdpdGggcmVzZXQuIHN0YXJ0IHJlYnVpbGQgKi9cbiBcdFx0XHRwZi1cdTAwM2Vody5yZXNldF9vbmdvaW5nID0gZmFsc2U7XG4mIzQzO1x0XHRcdG11dGV4X2xvY2soXHUwMDI2cGYtXHUwMDNlYWRhcHRlci1cdTAwM2VyZWJ1aWxkX2xvY2spO1xuIFx0XHRcdGljZV9yZWJ1aWxkKHBmLCByZXNldF90eXBlKTtcbiYjNDM7XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBmLVx1MDAzZWFkYXB0ZXItXHUwMDNlcmVidWlsZF9sb2NrKTtcbiBcdFx0XHQvKiBjbGVhciBiaXQgdG8gcmVzdW1lIG5vcm1hbCBvcGVyYXRpb25zLCBidXRcbiBcdFx0XHQgKiBJQ0VfTkVFRFNfUkVTVEFSVCBiaXQgaXMgc2V0IGluIGNhc2UgcmVidWlsZCBmYWlsZWRcbiBcdFx0XHQgKi9cbkBAIC03Njc0LDE0ICYjNDM7NzY4MCwyNyBAQCBzdGF0aWMgdm9pZCBpY2VfcmVidWlsZChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpXG4gXHRcdGdvdG8gZXJyX2luaXRfY3RybHE7XG4gXHR9XG4gXG4tXHQvKiBpZiBERFAgd2FzIHByZXZpb3VzbHkgbG9hZGVkIHN1Y2Nlc3NmdWxseSAqL1xuLVx0aWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSkge1xuLVx0XHQvKiByZWxvYWQgdGhlIFNXIERCIG9mIGZpbHRlciB0YWJsZXMgKi9cbi1cdFx0aWYgKHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUilcbi1cdFx0XHRpY2VfZmlsbF9ibGtfdGJscyhodyk7XG4tXHRcdGVsc2Vcbi1cdFx0XHQvKiBSZWxvYWQgRERQIFBhY2thZ2UgYWZ0ZXIgQ09SRVIvR0xPQlIgcmVzZXQgKi9cbi1cdFx0XHRpY2VfbG9hZF9wa2coTlVMTCwgcGYpO1xuJiM0MztcdGlmICghaWNlX2lzX3NhZmVfbW9kZShwZikgXHUwMDI2XHUwMDI2IHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUikge1xuJiM0MztcdFx0ZW51bSBpY2VfZGRwX3N0YXRlIHN0YXRlO1xuJiM0MztcbiYjNDM7XHRcdHN0YXRlID0gaWNlX2luaXRfcGtnKGh3LCBody1cdTAwM2Vwa2dfY29weSwgaHctXHUwMDNlcGtnX3NpemUpO1xuJiM0MztcdFx0aWNlX2xvZ19wa2dfaW5pdChodywgc3RhdGUpO1xuJiM0MztcdFx0aWYgKCFpY2VfaXNfaW5pdF9wa2dfc3VjY2Vzc2Z1bChzdGF0ZSkpXG4mIzQzO1x0XHRcdGdvdG8gZXJyX2luaXRfY3RybHE7XG4mIzQzO1x0fSBlbHNlIGlmICghaWNlX2lzX3NhZmVfbW9kZShwZikpIHtcbiYjNDM7XHRcdC8qIFJlbG9hZCBERFAgUGFja2FnZSBhZnRlciBDT1JFUi9HTE9CUiByZXNldCAqL1xuJiM0MztcdFx0aWNlX2xvYWRfcGtnKE5VTEwsIHBmKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIFBGUiBjYW4gbG9zZSBEVk0gcmVjaXBlcyBhZnRlciBzeXN0ZW0gc3VzcGVuZC4gKi9cbiYjNDM7XHRpZiAoIWljZV9pc19zYWZlX21vZGUocGYpIFx1MDAyNlx1MDAyNiByZXNldF90eXBlID09IElDRV9SRVNFVF9QRlIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGljZV9pc19kdm1fZW5hKGh3KSkge1xuJiM0MztcdFx0ZXJyID0gaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKGh3KTtcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2ZhaWxlZCB0byByZXN0b3JlIGRlZmF1bHQgRFZNIHJlY2lwZXM6ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdGVycik7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX2luaXRfY3RybHE7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRlcnIgPSBpY2VfY2xlYXJfcGZfY2ZnKGh3KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuY1xuaW5kZXggZmI1MjZjYjg0Nzc2NC4uNThmYjE5MTkwM2E3NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmNcbkBAIC0yNDAsNyAmIzQzOzI0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWNlX3VwZGF0ZV9yZWNpcGVfbGt1cF9pZHhfcGFyYW1zIGljZV9kdm1fZGZsdF9yZWNpcGVzW10gPSB7XG4gICogaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzIC0gdXBkYXRlIGRlZmF1bHQgc3dpdGNoIHJlY2lwZXMgaW4gRFZNXG4gICogQGh3OiBoYXJkd2FyZSBzdHJ1Y3R1cmUgdXNlZCB0byB1cGRhdGUgdGhlIHJlY2lwZXNcbiAgKi9cbi1zdGF0aWMgaW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodylcbiYjNDM7aW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodylcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmhcbmluZGV4IGEwZmI3NDNkMDhlMjAuLjVkYzcwNTQzNWY1NmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oXG5AQCAtOCw2ICYjNDM7OCw3IEBAIHN0cnVjdCBpY2VfaHc7XG4gXG4gYm9vbCBpY2VfaXNfZHZtX2VuYShzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gaW50IGljZV9zZXRfdmxhbl9tb2RlKHN0cnVjdCBpY2VfaHcgKmh3KTtcbiYjNDM7aW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gdm9pZCBpY2VfcG9zdF9wa2dfZHdubGRfdmxhbl9tb2RlX2NmZyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gXG4gI2VuZGlmIC8qIF9JQ0VfVkxBTl9NT0RFX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwOToyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODAwIFNlcmllcyAoYGljZWApIGRyaXZlciwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIEZsb3cgRGlyZWN0b3IgZmlsdGVyIGhhbmRsZSBjbGVhbnVwLCByZWJ1aWxkIHNlcmlhbGl6YXRpb24gdmlhIGFuIGFkYXB0ZXItbGV2ZWwgbXV0ZXgsIGFuZCByZWNpcGUgdXBkYXRlcyBvbiByZXNldC4gVGhlIGBpY2VgIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvS1ZNIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MjkzOTdiYjgzZjRjZjFlMmUwMzEzMjg5OWFhOWY3MmVkMDlkMWRjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAwOToyOToyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaAppbmRleCBkYjNjNzAxNWM1NmM0Li40NzM5ZmY4ODJiOWVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oCkBAIC0xMDI5LDYgJiM0MzsxMDI5LDcgQEAgaWNlX2dldF9mZGlyX2ZsdHJfaWRzKHN0cnVjdCBpY2VfaHcgKmh3LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLAogCQkgICAgICB1MzIgKnJ1bGVfbG9jcyk7CiB2b2lkIGljZV9mZGlyX3JlbV9hZHFfY2hubChzdHJ1Y3QgaWNlX2h3ICpodywgdTE2IHZzaV9pZHgpOwogdm9pZCBpY2VfZmRpcl9yZWxlYXNlX2Zsb3dzKHN0cnVjdCBpY2VfaHcgKmh3KTsKJiM0Mzt2b2lkIGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhzdHJ1Y3QgaWNlX2h3ICpodyk7CiB2b2lkIGljZV9mZGlyX3JlcGxheV9mbG93cyhzdHJ1Y3QgaWNlX2h3ICpodyk7CiB2b2lkIGljZV9mZGlyX3JlcGxheV9mbHRycyhzdHJ1Y3QgaWNlX3BmICpwZik7CiBpbnQgaWNlX2ZkaXJfY3JlYXRlX2RmbHRfcnVsZXMoc3RydWN0IGljZV9wZiAqcGYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYwppbmRleCAyZGMzNjI5ZDZkMGY2Li43ZGU5MjIzZTk3MWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYwpAQCAtNjQsNiAmIzQzOzY0LDcgQEAgc3RhdGljIHN0cnVjdCBpY2VfYWRhcHRlciAqaWNlX2FkYXB0ZXJfbmV3KHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCXNwaW5fbG9ja19pbml0KCZhbXA7YWRhcHRlci0mZ3Q7dHhxX2N0eF9sb2NrKTsKIAlmb3IgKGludCBpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoYWRhcHRlci0mZ3Q7Y3BpX3BoeV9sb2NrKTsgaSYjNDM7JiM0MzspCiAJCW11dGV4X2luaXQoJmFtcDthZGFwdGVyLSZndDtjcGlfcGh5X2xvY2tbaV0pOwomIzQzOwltdXRleF9pbml0KCZhbXA7YWRhcHRlci0mZ3Q7cmVidWlsZF9sb2NrKTsKIAlyZWZjb3VudF9zZXQoJmFtcDthZGFwdGVyLSZndDtyZWZjb3VudCwgMSk7CiAKIAltdXRleF9pbml0KCZhbXA7YWRhcHRlci0mZ3Q7cG9ydHMubG9jayk7CkBAIC03Nyw2ICYjNDM7NzgsNyBAQCBzdGF0aWMgdm9pZCBpY2VfYWRhcHRlcl9mcmVlKHN0cnVjdCBpY2VfYWRhcHRlciAqYWRhcHRlcikKIAlXQVJOX09OKCFsaXN0X2VtcHR5KCZhbXA7YWRhcHRlci0mZ3Q7cG9ydHMucG9ydHMpKTsKIAlmb3IgKGludCBpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoYWRhcHRlci0mZ3Q7Y3BpX3BoeV9sb2NrKTsgaSYjNDM7JiM0MzspCiAJCW11dGV4X2Rlc3Ryb3koJmFtcDthZGFwdGVyLSZndDtjcGlfcGh5X2xvY2tbaV0pOwomIzQzOwltdXRleF9kZXN0cm95KCZhbXA7YWRhcHRlci0mZ3Q7cmVidWlsZF9sb2NrKTsKIAltdXRleF9kZXN0cm95KCZhbXA7YWRhcHRlci0mZ3Q7cG9ydHMubG9jayk7CiAKIAlrZnJlZShhZGFwdGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmgKaW5kZXggNGY2OTVmMzJkYTNkOC4uZjkyNjVkZTk3M2VmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmgKQEAgLTM3LDYgJiM0MzszNyw3IEBAIHN0cnVjdCBpY2VfcG9ydF9saXN0IHsKICAqIEBjcGlfcGh5X2xvY2s6IFBlci1QSFkgbXV0ZXggc2VyaWFsaXppbmcgQ1BJIFJFUS9BQ0sgdHJhbnNhY3Rpb25zLgogICogICAgICAgICAgICAgICBJbmRleCAwID0gUEhZMCwgaW5kZXggMSA9IFBIWTEuIFVzZWQgb24gRTgyNUMgZGV2aWNlcy4KICAqIEBjdHJsX3BmOiBDb250cm9sIFBGIG9mIHRoZSBhZGFwdGVyCiYjNDM7ICogQHJlYnVpbGRfbG9jazogc2VyaWFsaXplIFBGUiByZWNvdmVyeSBhY3Jvc3MgUEZzIG9mIHRoZSBzYW1lIGFkYXB0ZXIKICAqIEBwb3J0czogUG9ydHMgbGlzdAogICogQGluZGV4OiA2NC1iaXQgaW5kZXggY2FjaGVkIGZvciBjb2xsaXNpb24gZGV0ZWN0aW9uIG9uIDMyYml0IHN5c3RlbXMKICAqLwpAQCAtNDgsNiAmIzQzOzQ5LDggQEAgc3RydWN0IGljZV9hZGFwdGVyIHsKIAlzcGlubG9ja190IHR4cV9jdHhfbG9jazsKIAkvKiBTZXJpYWxpemUgQ1BJIFJFUS9BQ0sgdHJhbnNhY3Rpb25zIHBlciBQSFkgKEU4MjVDIG9ubHkpICovCiAJc3RydWN0IG11dGV4IGNwaV9waHlfbG9ja1tJQ0VfRTgyNV9NQVhfUEhZU107CiYjNDM7CS8qIFNlcmlhbGl6ZSBQRlIgcmVjb3ZlcnkgdG91Y2hpbmcgc2hhcmVkIEZXIGdsb2JhbCBzdGF0ZSAqLwomIzQzOwlzdHJ1Y3QgbXV0ZXggcmVidWlsZF9sb2NrOwogCiAJc3RydWN0IGljZV9wZiAqY3RybF9wZjsKIAlzdHJ1Y3QgaWNlX3BvcnRfbGlzdCBwb3J0czsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbF9mZGlyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jCmluZGV4IGFjZWVjMTg0ZTg5YjIuLmZhYTE2YjVhMTJjMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbF9mZGlyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sX2ZkaXIuYwpAQCAtNDI4LDYgJiM0Mzs0MjgsMjcgQEAgdm9pZCBpY2VfZmRpcl9yZWxlYXNlX2Zsb3dzKHN0cnVjdCBpY2VfaHcgKmh3KQogCQlpY2VfZmRpcl9lcmFzZV9mbG93X2Zyb21faHcoaHcsIElDRV9CTEtfRkQsIGZsb3cpOwogfQogCiYjNDM7LyoqCiYjNDM7ICogaWNlX2ZkaXJfY2xlYXJfZmxvd19oYW5kbGVzIC0gY2xlYXIgaGFuZGxlcyBmcmVlZCBkdXJpbmcgcmVzZXQKJiM0MzsgKiBAaHc6IHBvaW50ZXIgdG8gSFcgaW5zdGFuY2UKJiM0MzsgKi8KJiM0Mzt2b2lkIGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhzdHJ1Y3QgaWNlX2h3ICpodykKJiM0Mzt7CiYjNDM7CWludCBmbG93OwomIzQzOwomIzQzOwlmb3IgKGZsb3cgPSAwOyBmbG93ICZsdDsgSUNFX0ZMVFJfUFRZUEVfTUFYOyBmbG93JiM0MzsmIzQzOykgewomIzQzOwkJc3RydWN0IGljZV9mZF9od19wcm9mICpwcm9mID0gaHctJmd0O2ZkaXJfcHJvZltmbG93XTsKJiM0MzsJCWludCB0dW4sIGk7CiYjNDM7CiYjNDM7CQlpZiAoIXByb2YpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlmb3IgKHR1biA9IDA7IHR1biAmbHQ7IElDRV9GRF9IV19TRUdfTUFYOyB0dW4mIzQzOyYjNDM7KQomIzQzOwkJCWZvciAoaSA9IDA7IGkgJmx0OyBwcm9mLSZndDtjbnQ7IGkmIzQzOyYjNDM7KQomIzQzOwkJCQlwcm9mLSZndDtlbnRyeV9oW2ldW3R1bl0gPSAwOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyoqCiAgKiBpY2VfZmRpcl9yZXBsYXlfZmxvd3MgLSByZXBsYXkgSFcgRmxvdyBEaXJlY3RvciBmaWx0ZXIgaW5mbwogICogQGh3OiBwb2ludGVyIHRvIEhXIGluc3RhbmNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCmluZGV4IGQ4ODgzNTQ4MmQzYWEuLjdhYTEyMzU0NDczMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCkBAIC02MDEsNiAmIzQzOzYwMSw4IEBAIGljZV9wcmVwYXJlX2Zvcl9yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpCiAJCW5ldGlmX2RldmljZV9kZXRhY2godnNpLSZndDtuZXRkZXYpOwogc2tpcDoKIAomIzQzOwlpZiAoaHctJmd0O2ZkaXJfcHJvZikKJiM0MzsJCWljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhodyk7CiAJLyogY2xlYXIgU1cgZmlsdGVyaW5nIERCICovCiAJaWNlX2NsZWFyX2h3X3RibHMoaHcpOwogCS8qIGRpc2FibGUgdGhlIFZTSXMgYW5kIHRoZWlyIHF1ZXVlcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBET1dOICovCkBAIC02NTksNyAmIzQzOzY2MSw5IEBAIHN0YXRpYyB2b2lkIGljZV9kb19yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpCiAJICovCiAJaWYgKHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUikgewogCQlwZi0mZ3Q7cGZyX2NvdW50JiM0MzsmIzQzOzsKJiM0MzsJCW11dGV4X2xvY2soJmFtcDtwZi0mZ3Q7YWRhcHRlci0mZ3Q7cmVidWlsZF9sb2NrKTsKIAkJaWNlX3JlYnVpbGQocGYsIHJlc2V0X3R5cGUpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7cGYtJmd0O2FkYXB0ZXItJmd0O3JlYnVpbGRfbG9jayk7CiAJCWNsZWFyX2JpdChJQ0VfUFJFUEFSRURfRk9SX1JFU0VULCBwZi0mZ3Q7c3RhdGUpOwogCQljbGVhcl9iaXQoSUNFX1BGUl9SRVEsIHBmLSZndDtzdGF0ZSk7CiAJCXdha2VfdXAoJmFtcDtwZi0mZ3Q7cmVzZXRfd2FpdF9xdWV1ZSk7CkBAIC03MDQsNyAmIzQzOzcwOCw5IEBAIHN0YXRpYyB2b2lkIGljZV9yZXNldF9zdWJ0YXNrKHN0cnVjdCBpY2VfcGYgKnBmKQogCQl9IGVsc2UgewogCQkJLyogZG9uZSB3aXRoIHJlc2V0LiBzdGFydCByZWJ1aWxkICovCiAJCQlwZi0mZ3Q7aHcucmVzZXRfb25nb2luZyA9IGZhbHNlOwomIzQzOwkJCW11dGV4X2xvY2soJmFtcDtwZi0mZ3Q7YWRhcHRlci0mZ3Q7cmVidWlsZF9sb2NrKTsKIAkJCWljZV9yZWJ1aWxkKHBmLCByZXNldF90eXBlKTsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDtwZi0mZ3Q7YWRhcHRlci0mZ3Q7cmVidWlsZF9sb2NrKTsKIAkJCS8qIGNsZWFyIGJpdCB0byByZXN1bWUgbm9ybWFsIG9wZXJhdGlvbnMsIGJ1dAogCQkJICogSUNFX05FRURTX1JFU1RBUlQgYml0IGlzIHNldCBpbiBjYXNlIHJlYnVpbGQgZmFpbGVkCiAJCQkgKi8KQEAgLTc2NzQsMTQgJiM0Mzs3NjgwLDI3IEBAIHN0YXRpYyB2b2lkIGljZV9yZWJ1aWxkKHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9yZXNldF9yZXEgcmVzZXRfdHlwZSkKIAkJZ290byBlcnJfaW5pdF9jdHJscTsKIAl9CiAKLQkvKiBpZiBERFAgd2FzIHByZXZpb3VzbHkgbG9hZGVkIHN1Y2Nlc3NmdWxseSAqLwotCWlmICghaWNlX2lzX3NhZmVfbW9kZShwZikpIHsKLQkJLyogcmVsb2FkIHRoZSBTVyBEQiBvZiBmaWx0ZXIgdGFibGVzICovCi0JCWlmIChyZXNldF90eXBlID09IElDRV9SRVNFVF9QRlIpCi0JCQlpY2VfZmlsbF9ibGtfdGJscyhodyk7Ci0JCWVsc2UKLQkJCS8qIFJlbG9hZCBERFAgUGFja2FnZSBhZnRlciBDT1JFUi9HTE9CUiByZXNldCAqLwotCQkJaWNlX2xvYWRfcGtnKE5VTEwsIHBmKTsKJiM0MzsJaWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSAmYW1wOyZhbXA7IHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUikgewomIzQzOwkJZW51bSBpY2VfZGRwX3N0YXRlIHN0YXRlOwomIzQzOwomIzQzOwkJc3RhdGUgPSBpY2VfaW5pdF9wa2coaHcsIGh3LSZndDtwa2dfY29weSwgaHctJmd0O3BrZ19zaXplKTsKJiM0MzsJCWljZV9sb2dfcGtnX2luaXQoaHcsIHN0YXRlKTsKJiM0MzsJCWlmICghaWNlX2lzX2luaXRfcGtnX3N1Y2Nlc3NmdWwoc3RhdGUpKQomIzQzOwkJCWdvdG8gZXJyX2luaXRfY3RybHE7CiYjNDM7CX0gZWxzZSBpZiAoIWljZV9pc19zYWZlX21vZGUocGYpKSB7CiYjNDM7CQkvKiBSZWxvYWQgRERQIFBhY2thZ2UgYWZ0ZXIgQ09SRVIvR0xPQlIgcmVzZXQgKi8KJiM0MzsJCWljZV9sb2FkX3BrZyhOVUxMLCBwZik7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogUEZSIGNhbiBsb3NlIERWTSByZWNpcGVzIGFmdGVyIHN5c3RlbSBzdXNwZW5kLiAqLwomIzQzOwlpZiAoIWljZV9pc19zYWZlX21vZGUocGYpICZhbXA7JmFtcDsgcmVzZXRfdHlwZSA9PSBJQ0VfUkVTRVRfUEZSICZhbXA7JmFtcDsKJiM0MzsJICAgIGljZV9pc19kdm1fZW5hKGh3KSkgewomIzQzOwkJZXJyID0gaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKGh3KTsKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsJCQlkZXZfZXJyKGRldiwgJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBkZWZhdWx0IERWTSByZWNpcGVzOiAlZFxuJiMzNDssCiYjNDM7CQkJCWVycik7CiYjNDM7CQkJZ290byBlcnJfaW5pdF9jdHJscTsKJiM0MzsJCX0KIAl9CiAKIAllcnIgPSBpY2VfY2xlYXJfcGZfY2ZnKGh3KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5jCmluZGV4IGZiNTI2Y2I4NDc3NjQuLjU4ZmIxOTE5MDNhNzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuYwpAQCAtMjQwLDcgJiM0MzsyNDAsNyBAQCBzdGF0aWMgc3RydWN0IGljZV91cGRhdGVfcmVjaXBlX2xrdXBfaWR4X3BhcmFtcyBpY2VfZHZtX2RmbHRfcmVjaXBlc1tdID0gewogICogaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzIC0gdXBkYXRlIGRlZmF1bHQgc3dpdGNoIHJlY2lwZXMgaW4gRFZNCiAgKiBAaHc6IGhhcmR3YXJlIHN0cnVjdHVyZSB1c2VkIHRvIHVwZGF0ZSB0aGUgcmVjaXBlcwogICovCi1zdGF0aWMgaW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodykKJiM0MztpbnQgaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKHN0cnVjdCBpY2VfaHcgKmh3KQogewogCXVuc2lnbmVkIGxvbmcgaTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmgKaW5kZXggYTBmYjc0M2QwOGUyMC4uNWRjNzA1NDM1ZjU2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oCkBAIC04LDYgJiM0Mzs4LDcgQEAgc3RydWN0IGljZV9odzsKIAogYm9vbCBpY2VfaXNfZHZtX2VuYShzdHJ1Y3QgaWNlX2h3ICpodyk7CiBpbnQgaWNlX3NldF92bGFuX21vZGUoc3RydWN0IGljZV9odyAqaHcpOwomIzQzO2ludCBpY2VfZHZtX3VwZGF0ZV9kZmx0X3JlY2lwZXMoc3RydWN0IGljZV9odyAqaHcpOwogdm9pZCBpY2VfcG9zdF9wa2dfZHdubGRfdmxhbl9tb2RlX2NmZyhzdHJ1Y3QgaWNlX2h3ICpodyk7CiAKICNlbmRpZiAvKiBfSUNFX1ZMQU5fTU9ERV9IICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1ODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJpYWdlIFRpbWU6IEFzc2Vzc2luZyB0aGUgYGljZWAgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIGl0JiMzOTtzIGZ1enotd29ydGh5LCBrZWVwaW5nIHRoZSB0cmlhZ2UgY3JpdGVyaWEgZnJvbnQgYW5kIGNlbnRlci4gRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBjb2RlIGlzIGJlaW5nIHRvdWNoZWQuIE9rYXksIEkmIzM5O3ZlIGdvdDogYGljZS5oYCwgYGljZV9hZGFwdGVyLmMvaGAsIGBpY2VfZXRodG9vbF9mZGlyLmNgLCBgaWNlX21haW4uY2AsIGFuZCBgaWNlX3ZsYW5fbW9kZS5jL2hgLiBTdGFuZGFyZCBzdHVmZiwgYWxsIHdpdGhpbiB0aGUgSW50ZWwgRXRoZXJuZXQgQ29udHJvbGxlciBFODAwIHNlcmllcyBkcml2ZXIsIG9yIGBpY2VgLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogaXMgdGhpcyBhIGhhcmR3YXJlLWRlcGVuZGVudCBkcml2ZXI/IERvZXMgaXQgcmVseSBvbiBzcGVjaWZpYyBQQ0llIGhhcmR3YXJlIHRoYXQmIzM5O3Mgbm90IGVtdWxhdGVkIGluIHRoZSB1c3VhbCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzPyBMZXQmIzM5O3MgcmVmcmVzaCBvdXIgbWVtb3J5IG9uIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgc3BlY2lmaWNhbGx5IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gV2UmIzM5O3JlIGxvb2tpbmcgZm9yIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0JiMzOTtzIHRvdWdoIHRvIHJlYWNoIGluIGEgc3RhbmRhcmQgc2V0dXAuCgpNeSB1bmRlcnN0YW5kaW5nLCBmcm9tIGV4cGVyaWVuY2UsIGlzIHRoYXQgdGhlIGBpY2VgIGRyaXZlciBpcyBmb3IgSW50ZWwmIzM5O3MgQ29sdW1iaWF2aWxsZSAoRTgxMCkgYW5kIEU4MDAgc2VyaWVzIGVudGVycHJpc2UgTklDcy4gVGhlc2UgYXJlIFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMsIHRoZSAxMDBHYkUgdmFyaWV0eS4gVGhleSYjMzk7cmUgZGVmaW5pdGVseSBub3QgZW11bGF0ZWQgYnkgdGhlIHN0YW5kYXJkIFFFTVUgZGV2aWNlcyB0aGF0IHdlJiMzOTtkIHVzZSwgbGlrZSBlMTAwMCwgaWdiLCBhbmQgdmlydGlvLW5ldC4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmb3IgYW55IHZpcnR1YWwgb3IgbW9jayBkZXZpY2VzIHVzaW5nIGBDT05GSUdfSUNFYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSB0aGF0JiMzOTtzIGRpZmZpY3VsdCB0byByZWFjaCwgYnV0IGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSUNFXFxiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjY4PWNvbmZpZyBJNDBFVkZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjkxOmNvbmZpZyBJQ0VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjkyLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODAwIFNlcmllcyBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzLCB0YXJnZXRpbmcgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgSW50ZWwgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGlzIEludGVsIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBvcHRpb25zLiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ2AsIGFuZCBzcGVjaWZpY2FsbHksIGFyb3VuZCBsaW5lIDI5MS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIGZlYXR1cmUgZW5hYmxlIGZsYWdzIGFyZSBncm91cGVkLCBvciBhdCBsZWFzdCBhIHJlbGV2YW50IGdyb3VwaW5nIG9mIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyByZWxhdGVkIHRvIHRoZSBkcml2ZXImIzM5O3MgZGVmYXVsdCBzZXR0aW5ncy4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBncmFzcCB0aGUgcmVsZXZhbnQgcGFyYW1ldGVycyB0aGVyZSwgbWF5YmUgYSBoYXJkd2FyZSBzcGVjaWZpYyBmZWF0dXJlLCBvciBhIGRlYnVnIHNldHRpbmcuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIGhhbmRsZXMgWC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI5MDpcdFxuIDI5MTpcdGNvbmZpZyBJQ0VcbiAyOTI6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgU3VwcG9ydFwmIzM0O1xuIDI5MzpcdFx0ZGVmYXVsdCBuXG4gMjk0Olx0XHRkZXBlbmRzIG9uIFBDSV9NU0lcbiAyOTU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAyOTY6XHRcdGRlcGVuZHMgb24gR05TUyB8fCBHTlNTID0gblxuIDI5NzpcdFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbiAyOTg6XHRcdHNlbGVjdCBESU1MSUJcbiAyOTk6XHRcdHNlbGVjdCBMSUJFVEhfWERQXG4gMzAwOlx0XHRzZWxlY3QgTElCSUVcbiAzMDE6XHRcdHNlbGVjdCBMSUJJRV9BRE1JTlFcbiAzMDI6XHRcdHNlbGVjdCBMSUJJRV9GV0xPRyBpZiBERUJVR19GU1xuIDMwMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gMzA0Olx0XHRzZWxlY3QgUEFDS0lOR1xuIDMwNTpcdFx0c2VsZWN0IFBMRE1GV1xuIDMwNjpcdFx0c2VsZWN0IERQTExcbiAzMDc6XHRcdGhlbHBcbiAzMDg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODAwIFNlcmllcyBvZlxuIDMwOTpcdFx0ICBkZXZpY2VzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHlvdXIgYWRhcHRlciwgZ29cbiAzMTA6XHRcdCAgdG8gdGhlIEFkYXB0ZXIgXHUwMDI2IERyaXZlciBJRCBHdWlkZSB0aGF0IGNhbiBiZSBsb2NhdGVkIGF0OlxuIDMxMTpcdFxuIDMxMjpcdFx0ICBcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cdTAwM2VcbiAzMTM6XHRcbiAzMTQ6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gMzE1Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2ljZS5yc3RcdTAwM2UuXG4gMzE2Olx0XG4gMzE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAzMTg6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaWNlLlxuIDMxOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MDcKCQkJCQkJCW91dHB1dDogMTA5CgkJCQkJCQl0aG91Z2h0czogNDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSAmIzM0O2ljZSYjMzQ7IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyB0aGUgYGljZWAgZHJpdmVyLCB3aGljaCBJIGtub3cgaXMgdGhlIEludGVsIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgZHJpdmVyLCBpcyB0aGUgZm9jdXMgaGVyZS4gSXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBuZXR3b3JrIGRyaXZlciwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcgYmVjYXVzZSBpdCByZXF1aXJlcyB0aGUgSW50ZWwgRTgwMCBzZXJpZXMgaGFyZHdhcmUgQVNJQy4gU3RhbmRhcmQgUUVNVSwgd2hpY2ggaXMgb3VyIHByaW1hcnkgZW52aXJvbm1lbnQgZm9yIGZ1enppbmcsIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhvc2UgY2FyZHMuCgpNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQsIGJhc2VkIG9uIHNlY3Rpb24gMiBvZiB0aGUgZ3VpZGVsaW5lcywgY29kZSB0aGF0IGRlcGVuZHMgb24gJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBsaWtlIHRoZXNlIHZlbmRvci1zcGVjaWZpYyBQQ0llIGNvbXBvbmVudHMgYXJlIG5vdCBzdWl0YWJsZSBmb3Igc3RhbmRhcmQgZnV6emluZy4gVGhlIHNlY3Rpb24gc3BlY2lmaWNhbGx5IGNhbGxzIG91dCBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YCBhcyBleGFtcGxlcywgYWxsIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZS4gVGhpcyBpcyBhIGNydWNpYWwgZGV0YWlsIGZvciBkZXRlcm1pbmluZyBgV29ydGhGdXp6aW5nYC4KCk5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgdG8gdGhpcyBzcGVjaWZpYyBgaWNlYCBkcml2ZXIuIEEgcXVpY2sgc2NhbiBvZiB0aGUgbW9kaWZpZWQgZmlsZXPigJRgaWNlLmhgLCBgaWNlX2FkYXB0ZXIuY2AsIGBpY2VfYWRhcHRlci5oYCwgYGljZV9ldGh0b29sX2ZkaXIuY2AsIGBpY2VfbWFpbi5jYCwgYGljZV92bGFuX21vZGUuY2AsIGFuZCBgaWNlX3ZsYW5fbW9kZS5oYOKAlGNvbmZpcm1zIHRoZXkgYWxsIGxpdmUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2AgZGlyZWN0b3J5LiBOb25lIG9mIHRoZW0gYXBwZWFyIHRvIHRvdWNoIGFueSBjb3JlIG5ldHdvcmtpbmcgb3IgdmlydHVhbCBuZXRkZXYgY29tcG9uZW50cywgd2hpY2ggaXMgY3JpdGljYWwuCgpUaGVyZWZvcmUsIHNpbmNlIHRoZSBwYXRjaCBkZWFscyBzb2xlbHkgd2l0aCB0aGUgYGljZWAgZHJpdmVyJiMzOTtzIGhhbmRsaW5nIG9mIHJlc2V0IHNlcmlhbGl6YXRpb24gYW5kIEZsb3cgRGlyZWN0b3IvRFZNIGZpbHRlciByZXBsYXksIHdoaWNoIGlzIGFsbCBkZXBlbmRlbnQgb24gaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQsIGl0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBvdXIgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhpcyBsZWFkcyBtZSB0byBjb25jbHVkZTogYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gSSB3b24mIzM5O3QgYmUgZW5hYmxpbmcgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMgKGBFbmFibGVDb25maWdzID0gW11gKSBvciBmb2N1c2luZyBvbiBhbnkgc3BlY2lmaWMgc3ltYm9scyAoYEZvY3VzU3ltYm9scyA9IFtdYCkuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgbW9kaWZpZWQgY29kZSYjMzk7cyBleGVjdXRpb24gcGF0aCBpcyBibG9ja2VkIGJ5IHRoZSBsYWNrIG9mIGVtdWxhdGVkIGhhcmR3YXJlLgoKT2theSwgSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgIHRvIHJlY29yZCB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA5OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgKGBpY2VgKSBkcml2ZXIsIHNwZWNpZmljYWxseSBoYW5kbGluZyBGbG93IERpcmVjdG9yIGZpbHRlciBoYW5kbGUgY2xlYW51cCwgcmVidWlsZCBzZXJpYWxpemF0aW9uIHZpYSBhbiBhZGFwdGVyLWxldmVsIG11dGV4LCBhbmQgcmVjaXBlIHVwZGF0ZXMgb24gcmVzZXQuIFRoZSBgaWNlYCBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0tWTSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODAwIFNlcmllcyAoYGljZWApIGRyaXZlciwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIEZsb3cgRGlyZWN0b3IgZmlsdGVyIGhhbmRsZSBjbGVhbnVwLCByZWJ1aWxkIHNlcmlhbGl6YXRpb24gdmlhIGFuIGFkYXB0ZXItbGV2ZWwgbXV0ZXgsIGFuZCByZWNpcGUgdXBkYXRlcyBvbiByZXNldC4gVGhlIGBpY2VgIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvS1ZNIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDk6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjI4LjUyOTM1NjY0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTM5NDE0OTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgKGBpY2VgKSBkcml2ZXIsIHNwZWNpZmljYWxseSBoYW5kbGluZyBGbG93IERpcmVjdG9yIGZpbHRlciBoYW5kbGUgY2xlYW51cCwgcmVidWlsZCBzZXJpYWxpemF0aW9uIHZpYSBhbiBhZGFwdGVyLWxldmVsIG11dGV4LCBhbmQgcmVjaXBlIHVwZGF0ZXMgb24gcmVzZXQuIFRoZSBgaWNlYCBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0tWTSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwOToyOToyOC41MjkzNjM1ODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMTM1NjcxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDgyOTM5N2JiODNmNGNmMWUyZTAzMTMyODk5YWE5ZjcyZWQwOWQxZGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBTZXAgNCAwOToyOToyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcXG5pbmRleCBkYjNjNzAxNWM1NmM0Li40NzM5ZmY4ODJiOWVjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxcbkBAIC0xMDI5LDYgKzEwMjksNyBAQCBpY2VfZ2V0X2ZkaXJfZmx0cl9pZHMoc3RydWN0IGljZV9odyAqaHcsIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQsXFxuIFxcdFxcdCAgICAgIHUzMiAqcnVsZV9sb2NzKTtcXG4gdm9pZCBpY2VfZmRpcl9yZW1fYWRxX2Nobmwoc3RydWN0IGljZV9odyAqaHcsIHUxNiB2c2lfaWR4KTtcXG4gdm9pZCBpY2VfZmRpcl9yZWxlYXNlX2Zsb3dzKHN0cnVjdCBpY2VfaHcgKmh3KTtcXG4rdm9pZCBpY2VfZmRpcl9jbGVhcl9mbG93X2hhbmRsZXMoc3RydWN0IGljZV9odyAqaHcpO1xcbiB2b2lkIGljZV9mZGlyX3JlcGxheV9mbG93cyhzdHJ1Y3QgaWNlX2h3ICpodyk7XFxuIHZvaWQgaWNlX2ZkaXJfcmVwbGF5X2ZsdHJzKHN0cnVjdCBpY2VfcGYgKnBmKTtcXG4gaW50IGljZV9mZGlyX2NyZWF0ZV9kZmx0X3J1bGVzKHN0cnVjdCBpY2VfcGYgKnBmKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuY1xcbmluZGV4IDJkYzM2MjlkNmQwZjYuLjdkZTkyMjNlOTcxYTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuY1xcbkBAIC02NCw2ICs2NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWNlX2FkYXB0ZXIgKmljZV9hZGFwdGVyX25ldyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXR4cV9jdHhfbG9jayk7XFxuIFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShhZGFwdGVyLVxcdTAwM2VjcGlfcGh5X2xvY2spOyBpKyspXFxuIFxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWNwaV9waHlfbG9ja1tpXSk7XFxuK1xcdG11dGV4X2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJlYnVpbGRfbG9jayk7XFxuIFxcdHJlZmNvdW50X3NldChcXHUwMDI2YWRhcHRlci1cXHUwMDNlcmVmY291bnQsIDEpO1xcbiBcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2YWRhcHRlci1cXHUwMDNlcG9ydHMubG9jayk7XFxuQEAgLTc3LDYgKzc4LDcgQEAgc3RhdGljIHZvaWQgaWNlX2FkYXB0ZXJfZnJlZShzdHJ1Y3QgaWNlX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdFdBUk5fT04oIWxpc3RfZW1wdHkoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBvcnRzLnBvcnRzKSk7XFxuIFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShhZGFwdGVyLVxcdTAwM2VjcGlfcGh5X2xvY2spOyBpKyspXFxuIFxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWNwaV9waHlfbG9ja1tpXSk7XFxuK1xcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJlYnVpbGRfbG9jayk7XFxuIFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBvcnRzLmxvY2spO1xcbiBcXG4gXFx0a2ZyZWUoYWRhcHRlcik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmhcXG5pbmRleCA0ZjY5NWYzMmRhM2Q4Li5mOTI2NWRlOTczZWZjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmhcXG5AQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgaWNlX3BvcnRfbGlzdCB7XFxuICAqIEBjcGlfcGh5X2xvY2s6IFBlci1QSFkgbXV0ZXggc2VyaWFsaXppbmcgQ1BJIFJFUS9BQ0sgdHJhbnNhY3Rpb25zLlxcbiAgKiAgICAgICAgICAgICAgIEluZGV4IDAgPSBQSFkwLCBpbmRleCAxID0gUEhZMS4gVXNlZCBvbiBFODI1QyBkZXZpY2VzLlxcbiAgKiBAY3RybF9wZjogQ29udHJvbCBQRiBvZiB0aGUgYWRhcHRlclxcbisgKiBAcmVidWlsZF9sb2NrOiBzZXJpYWxpemUgUEZSIHJlY292ZXJ5IGFjcm9zcyBQRnMgb2YgdGhlIHNhbWUgYWRhcHRlclxcbiAgKiBAcG9ydHM6IFBvcnRzIGxpc3RcXG4gICogQGluZGV4OiA2NC1iaXQgaW5kZXggY2FjaGVkIGZvciBjb2xsaXNpb24gZGV0ZWN0aW9uIG9uIDMyYml0IHN5c3RlbXNcXG4gICovXFxuQEAgLTQ4LDYgKzQ5LDggQEAgc3RydWN0IGljZV9hZGFwdGVyIHtcXG4gXFx0c3BpbmxvY2tfdCB0eHFfY3R4X2xvY2s7XFxuIFxcdC8qIFNlcmlhbGl6ZSBDUEkgUkVRL0FDSyB0cmFuc2FjdGlvbnMgcGVyIFBIWSAoRTgyNUMgb25seSkgKi9cXG4gXFx0c3RydWN0IG11dGV4IGNwaV9waHlfbG9ja1tJQ0VfRTgyNV9NQVhfUEhZU107XFxuK1xcdC8qIFNlcmlhbGl6ZSBQRlIgcmVjb3ZlcnkgdG91Y2hpbmcgc2hhcmVkIEZXIGdsb2JhbCBzdGF0ZSAqL1xcbitcXHRzdHJ1Y3QgbXV0ZXggcmVidWlsZF9sb2NrO1xcbiBcXG4gXFx0c3RydWN0IGljZV9wZiAqY3RybF9wZjtcXG4gXFx0c3RydWN0IGljZV9wb3J0X2xpc3QgcG9ydHM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbF9mZGlyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jXFxuaW5kZXggYWNlZWMxODRlODliMi4uZmFhMTZiNWExMmMwZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sX2ZkaXIuY1xcbkBAIC00MjgsNiArNDI4LDI3IEBAIHZvaWQgaWNlX2ZkaXJfcmVsZWFzZV9mbG93cyhzdHJ1Y3QgaWNlX2h3ICpodylcXG4gXFx0XFx0aWNlX2ZkaXJfZXJhc2VfZmxvd19mcm9tX2h3KGh3LCBJQ0VfQkxLX0ZELCBmbG93KTtcXG4gfVxcbiBcXG4rLyoqXFxuKyAqIGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyAtIGNsZWFyIGhhbmRsZXMgZnJlZWQgZHVyaW5nIHJlc2V0XFxuKyAqIEBodzogcG9pbnRlciB0byBIVyBpbnN0YW5jZVxcbisgKi9cXG4rdm9pZCBpY2VfZmRpcl9jbGVhcl9mbG93X2hhbmRsZXMoc3RydWN0IGljZV9odyAqaHcpXFxuK3tcXG4rXFx0aW50IGZsb3c7XFxuK1xcbitcXHRmb3IgKGZsb3cgPSAwOyBmbG93IFxcdTAwM2MgSUNFX0ZMVFJfUFRZUEVfTUFYOyBmbG93KyspIHtcXG4rXFx0XFx0c3RydWN0IGljZV9mZF9od19wcm9mICpwcm9mID0gaHctXFx1MDAzZWZkaXJfcHJvZltmbG93XTtcXG4rXFx0XFx0aW50IHR1biwgaTtcXG4rXFxuK1xcdFxcdGlmICghcHJvZilcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRmb3IgKHR1biA9IDA7IHR1biBcXHUwMDNjIElDRV9GRF9IV19TRUdfTUFYOyB0dW4rKylcXG4rXFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByb2YtXFx1MDAzZWNudDsgaSsrKVxcbitcXHRcXHRcXHRcXHRwcm9mLVxcdTAwM2VlbnRyeV9oW2ldW3R1bl0gPSAwO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpY2VfZmRpcl9yZXBsYXlfZmxvd3MgLSByZXBsYXkgSFcgRmxvdyBEaXJlY3RvciBmaWx0ZXIgaW5mb1xcbiAgKiBAaHc6IHBvaW50ZXIgdG8gSFcgaW5zdGFuY2VcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbmluZGV4IGQ4ODgzNTQ4MmQzYWEuLjdhYTEyMzU0NDczMTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbkBAIC02MDEsNiArNjAxLDggQEAgaWNlX3ByZXBhcmVfZm9yX3Jlc2V0KHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9yZXNldF9yZXEgcmVzZXRfdHlwZSlcXG4gXFx0XFx0bmV0aWZfZGV2aWNlX2RldGFjaCh2c2ktXFx1MDAzZW5ldGRldik7XFxuIHNraXA6XFxuIFxcbitcXHRpZiAoaHctXFx1MDAzZWZkaXJfcHJvZilcXG4rXFx0XFx0aWNlX2ZkaXJfY2xlYXJfZmxvd19oYW5kbGVzKGh3KTtcXG4gXFx0LyogY2xlYXIgU1cgZmlsdGVyaW5nIERCICovXFxuIFxcdGljZV9jbGVhcl9od190YmxzKGh3KTtcXG4gXFx0LyogZGlzYWJsZSB0aGUgVlNJcyBhbmQgdGhlaXIgcXVldWVzIHRoYXQgYXJlIG5vdCBhbHJlYWR5IERPV04gKi9cXG5AQCAtNjU5LDcgKzY2MSw5IEBAIHN0YXRpYyB2b2lkIGljZV9kb19yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpXFxuIFxcdCAqL1xcbiBcXHRpZiAocmVzZXRfdHlwZSA9PSBJQ0VfUkVTRVRfUEZSKSB7XFxuIFxcdFxcdHBmLVxcdTAwM2VwZnJfY291bnQrKztcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZXJlYnVpbGRfbG9jayk7XFxuIFxcdFxcdGljZV9yZWJ1aWxkKHBmLCByZXNldF90eXBlKTtcXG4rXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwZi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlcmVidWlsZF9sb2NrKTtcXG4gXFx0XFx0Y2xlYXJfYml0KElDRV9QUkVQQVJFRF9GT1JfUkVTRVQsIHBmLVxcdTAwM2VzdGF0ZSk7XFxuIFxcdFxcdGNsZWFyX2JpdChJQ0VfUEZSX1JFUSwgcGYtXFx1MDAzZXN0YXRlKTtcXG4gXFx0XFx0d2FrZV91cChcXHUwMDI2cGYtXFx1MDAzZXJlc2V0X3dhaXRfcXVldWUpO1xcbkBAIC03MDQsNyArNzA4LDkgQEAgc3RhdGljIHZvaWQgaWNlX3Jlc2V0X3N1YnRhc2soc3RydWN0IGljZV9wZiAqcGYpXFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdC8qIGRvbmUgd2l0aCByZXNldC4gc3RhcnQgcmVidWlsZCAqL1xcbiBcXHRcXHRcXHRwZi1cXHUwMDNlaHcucmVzZXRfb25nb2luZyA9IGZhbHNlO1xcbitcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwZi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlcmVidWlsZF9sb2NrKTtcXG4gXFx0XFx0XFx0aWNlX3JlYnVpbGQocGYsIHJlc2V0X3R5cGUpO1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBmLVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VyZWJ1aWxkX2xvY2spO1xcbiBcXHRcXHRcXHQvKiBjbGVhciBiaXQgdG8gcmVzdW1lIG5vcm1hbCBvcGVyYXRpb25zLCBidXRcXG4gXFx0XFx0XFx0ICogSUNFX05FRURTX1JFU1RBUlQgYml0IGlzIHNldCBpbiBjYXNlIHJlYnVpbGQgZmFpbGVkXFxuIFxcdFxcdFxcdCAqL1xcbkBAIC03Njc0LDE0ICs3NjgwLDI3IEBAIHN0YXRpYyB2b2lkIGljZV9yZWJ1aWxkKHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9yZXNldF9yZXEgcmVzZXRfdHlwZSlcXG4gXFx0XFx0Z290byBlcnJfaW5pdF9jdHJscTtcXG4gXFx0fVxcbiBcXG4tXFx0LyogaWYgRERQIHdhcyBwcmV2aW91c2x5IGxvYWRlZCBzdWNjZXNzZnVsbHkgKi9cXG4tXFx0aWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSkge1xcbi1cXHRcXHQvKiByZWxvYWQgdGhlIFNXIERCIG9mIGZpbHRlciB0YWJsZXMgKi9cXG4tXFx0XFx0aWYgKHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUilcXG4tXFx0XFx0XFx0aWNlX2ZpbGxfYmxrX3RibHMoaHcpO1xcbi1cXHRcXHRlbHNlXFxuLVxcdFxcdFxcdC8qIFJlbG9hZCBERFAgUGFja2FnZSBhZnRlciBDT1JFUi9HTE9CUiByZXNldCAqL1xcbi1cXHRcXHRcXHRpY2VfbG9hZF9wa2coTlVMTCwgcGYpO1xcbitcXHRpZiAoIWljZV9pc19zYWZlX21vZGUocGYpIFxcdTAwMjZcXHUwMDI2IHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUikge1xcbitcXHRcXHRlbnVtIGljZV9kZHBfc3RhdGUgc3RhdGU7XFxuK1xcbitcXHRcXHRzdGF0ZSA9IGljZV9pbml0X3BrZyhodywgaHctXFx1MDAzZXBrZ19jb3B5LCBody1cXHUwMDNlcGtnX3NpemUpO1xcbitcXHRcXHRpY2VfbG9nX3BrZ19pbml0KGh3LCBzdGF0ZSk7XFxuK1xcdFxcdGlmICghaWNlX2lzX2luaXRfcGtnX3N1Y2Nlc3NmdWwoc3RhdGUpKVxcbitcXHRcXHRcXHRnb3RvIGVycl9pbml0X2N0cmxxO1xcbitcXHR9IGVsc2UgaWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSkge1xcbitcXHRcXHQvKiBSZWxvYWQgRERQIFBhY2thZ2UgYWZ0ZXIgQ09SRVIvR0xPQlIgcmVzZXQgKi9cXG4rXFx0XFx0aWNlX2xvYWRfcGtnKE5VTEwsIHBmKTtcXG4rXFx0fVxcbitcXG4rXFx0LyogUEZSIGNhbiBsb3NlIERWTSByZWNpcGVzIGFmdGVyIHN5c3RlbSBzdXNwZW5kLiAqL1xcbitcXHRpZiAoIWljZV9pc19zYWZlX21vZGUocGYpIFxcdTAwMjZcXHUwMDI2IHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUiBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgaWNlX2lzX2R2bV9lbmEoaHcpKSB7XFxuK1xcdFxcdGVyciA9IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhodyk7XFxuK1xcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJmYWlsZWQgdG8gcmVzdG9yZSBkZWZhdWx0IERWTSByZWNpcGVzOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ZXJyKTtcXG4rXFx0XFx0XFx0Z290byBlcnJfaW5pdF9jdHJscTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRlcnIgPSBpY2VfY2xlYXJfcGZfY2ZnKGh3KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmNcXG5pbmRleCBmYjUyNmNiODQ3NzY0Li41OGZiMTkxOTAzYTc1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5jXFxuQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgc3RydWN0IGljZV91cGRhdGVfcmVjaXBlX2xrdXBfaWR4X3BhcmFtcyBpY2VfZHZtX2RmbHRfcmVjaXBlc1tdID0ge1xcbiAgKiBpY2VfZHZtX3VwZGF0ZV9kZmx0X3JlY2lwZXMgLSB1cGRhdGUgZGVmYXVsdCBzd2l0Y2ggcmVjaXBlcyBpbiBEVk1cXG4gICogQGh3OiBoYXJkd2FyZSBzdHJ1Y3R1cmUgdXNlZCB0byB1cGRhdGUgdGhlIHJlY2lwZXNcXG4gICovXFxuLXN0YXRpYyBpbnQgaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKHN0cnVjdCBpY2VfaHcgKmh3KVxcbitpbnQgaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKHN0cnVjdCBpY2VfaHcgKmh3KVxcbiB7XFxuIFxcdHVuc2lnbmVkIGxvbmcgaTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oXFxuaW5kZXggYTBmYjc0M2QwOGUyMC4uNWRjNzA1NDM1ZjU2YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuaFxcbkBAIC04LDYgKzgsNyBAQCBzdHJ1Y3QgaWNlX2h3O1xcbiBcXG4gYm9vbCBpY2VfaXNfZHZtX2VuYShzdHJ1Y3QgaWNlX2h3ICpodyk7XFxuIGludCBpY2Vfc2V0X3ZsYW5fbW9kZShzdHJ1Y3QgaWNlX2h3ICpodyk7XFxuK2ludCBpY2VfZHZtX3VwZGF0ZV9kZmx0X3JlY2lwZXMoc3RydWN0IGljZV9odyAqaHcpO1xcbiB2b2lkIGljZV9wb3N0X3BrZ19kd25sZF92bGFuX21vZGVfY2ZnKHN0cnVjdCBpY2VfaHcgKmh3KTtcXG4gXFxuICNlbmRpZiAvKiBfSUNFX1ZMQU5fTU9ERV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjI5LjE2MTUwNzA1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTI1MDcyNTE4OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIChgaWNlYCkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRmxvdyBEaXJlY3RvciBmaWx0ZXIgaGFuZGxlIGNsZWFudXAsIHJlYnVpbGQgc2VyaWFsaXphdGlvbiB2aWEgYW4gYWRhcHRlci1sZXZlbCBtdXRleCwgYW5kIHJlY2lwZSB1cGRhdGVzIG9uIHJlc2V0LiBUaGUgYGljZWAgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgSW50ZWwgRTgwMCBzZXJpZXMgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9LVk0gZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MjkzOTdiYjgzZjRjZjFlMmUwMzEzMjg5OWFhOWY3MmVkMDlkMWRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwOToyOToyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxuaW5kZXggZGIzYzcwMTVjNTZjNC4uNDczOWZmODgyYjllYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oXG5AQCAtMTAyOSw2ICsxMDI5LDcgQEAgaWNlX2dldF9mZGlyX2ZsdHJfaWRzKHN0cnVjdCBpY2VfaHcgKmh3LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLFxuIFx0XHQgICAgICB1MzIgKnJ1bGVfbG9jcyk7XG4gdm9pZCBpY2VfZmRpcl9yZW1fYWRxX2Nobmwoc3RydWN0IGljZV9odyAqaHcsIHUxNiB2c2lfaWR4KTtcbiB2b2lkIGljZV9mZGlyX3JlbGVhc2VfZmxvd3Moc3RydWN0IGljZV9odyAqaHcpO1xuK3ZvaWQgaWNlX2ZkaXJfY2xlYXJfZmxvd19oYW5kbGVzKHN0cnVjdCBpY2VfaHcgKmh3KTtcbiB2b2lkIGljZV9mZGlyX3JlcGxheV9mbG93cyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gdm9pZCBpY2VfZmRpcl9yZXBsYXlfZmx0cnMoc3RydWN0IGljZV9wZiAqcGYpO1xuIGludCBpY2VfZmRpcl9jcmVhdGVfZGZsdF9ydWxlcyhzdHJ1Y3QgaWNlX3BmICpwZik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuY1xuaW5kZXggMmRjMzYyOWQ2ZDBmNi4uN2RlOTIyM2U5NzFhNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuY1xuQEAgLTY0LDYgKzY0LDcgQEAgc3RhdGljIHN0cnVjdCBpY2VfYWRhcHRlciAqaWNlX2FkYXB0ZXJfbmV3KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2V0eHFfY3R4X2xvY2spO1xuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoYWRhcHRlci1cdTAwM2VjcGlfcGh5X2xvY2spOyBpKyspXG4gXHRcdG11dGV4X2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2VjcGlfcGh5X2xvY2tbaV0pO1xuK1x0bXV0ZXhfaW5pdChcdTAwMjZhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRyZWZjb3VudF9zZXQoXHUwMDI2YWRhcHRlci1cdTAwM2VyZWZjb3VudCwgMSk7XG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNlcG9ydHMubG9jayk7XG5AQCAtNzcsNiArNzgsNyBAQCBzdGF0aWMgdm9pZCBpY2VfYWRhcHRlcl9mcmVlKHN0cnVjdCBpY2VfYWRhcHRlciAqYWRhcHRlcilcbiBcdFdBUk5fT04oIWxpc3RfZW1wdHkoXHUwMDI2YWRhcHRlci1cdTAwM2Vwb3J0cy5wb3J0cykpO1xuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoYWRhcHRlci1cdTAwM2VjcGlfcGh5X2xvY2spOyBpKyspXG4gXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2YWRhcHRlci1cdTAwM2VjcGlfcGh5X2xvY2tbaV0pO1xuK1x0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNmFkYXB0ZXItXHUwMDNlcG9ydHMubG9jayk7XG4gXG4gXHRrZnJlZShhZGFwdGVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oXG5pbmRleCA0ZjY5NWYzMmRhM2Q4Li5mOTI2NWRlOTczZWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oXG5AQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgaWNlX3BvcnRfbGlzdCB7XG4gICogQGNwaV9waHlfbG9jazogUGVyLVBIWSBtdXRleCBzZXJpYWxpemluZyBDUEkgUkVRL0FDSyB0cmFuc2FjdGlvbnMuXG4gICogICAgICAgICAgICAgICBJbmRleCAwID0gUEhZMCwgaW5kZXggMSA9IFBIWTEuIFVzZWQgb24gRTgyNUMgZGV2aWNlcy5cbiAgKiBAY3RybF9wZjogQ29udHJvbCBQRiBvZiB0aGUgYWRhcHRlclxuKyAqIEByZWJ1aWxkX2xvY2s6IHNlcmlhbGl6ZSBQRlIgcmVjb3ZlcnkgYWNyb3NzIFBGcyBvZiB0aGUgc2FtZSBhZGFwdGVyXG4gICogQHBvcnRzOiBQb3J0cyBsaXN0XG4gICogQGluZGV4OiA2NC1iaXQgaW5kZXggY2FjaGVkIGZvciBjb2xsaXNpb24gZGV0ZWN0aW9uIG9uIDMyYml0IHN5c3RlbXNcbiAgKi9cbkBAIC00OCw2ICs0OSw4IEBAIHN0cnVjdCBpY2VfYWRhcHRlciB7XG4gXHRzcGlubG9ja190IHR4cV9jdHhfbG9jaztcbiBcdC8qIFNlcmlhbGl6ZSBDUEkgUkVRL0FDSyB0cmFuc2FjdGlvbnMgcGVyIFBIWSAoRTgyNUMgb25seSkgKi9cbiBcdHN0cnVjdCBtdXRleCBjcGlfcGh5X2xvY2tbSUNFX0U4MjVfTUFYX1BIWVNdO1xuK1x0LyogU2VyaWFsaXplIFBGUiByZWNvdmVyeSB0b3VjaGluZyBzaGFyZWQgRlcgZ2xvYmFsIHN0YXRlICovXG4rXHRzdHJ1Y3QgbXV0ZXggcmVidWlsZF9sb2NrO1xuIFxuIFx0c3RydWN0IGljZV9wZiAqY3RybF9wZjtcbiBcdHN0cnVjdCBpY2VfcG9ydF9saXN0IHBvcnRzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbF9mZGlyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jXG5pbmRleCBhY2VlYzE4NGU4OWIyLi5mYWExNmI1YTEyYzBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sX2ZkaXIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sX2ZkaXIuY1xuQEAgLTQyOCw2ICs0MjgsMjcgQEAgdm9pZCBpY2VfZmRpcl9yZWxlYXNlX2Zsb3dzKHN0cnVjdCBpY2VfaHcgKmh3KVxuIFx0XHRpY2VfZmRpcl9lcmFzZV9mbG93X2Zyb21faHcoaHcsIElDRV9CTEtfRkQsIGZsb3cpO1xuIH1cbiBcbisvKipcbisgKiBpY2VfZmRpcl9jbGVhcl9mbG93X2hhbmRsZXMgLSBjbGVhciBoYW5kbGVzIGZyZWVkIGR1cmluZyByZXNldFxuKyAqIEBodzogcG9pbnRlciB0byBIVyBpbnN0YW5jZVxuKyAqL1xuK3ZvaWQgaWNlX2ZkaXJfY2xlYXJfZmxvd19oYW5kbGVzKHN0cnVjdCBpY2VfaHcgKmh3KVxuK3tcbitcdGludCBmbG93O1xuK1xuK1x0Zm9yIChmbG93ID0gMDsgZmxvdyBcdTAwM2MgSUNFX0ZMVFJfUFRZUEVfTUFYOyBmbG93KyspIHtcbitcdFx0c3RydWN0IGljZV9mZF9od19wcm9mICpwcm9mID0gaHctXHUwMDNlZmRpcl9wcm9mW2Zsb3ddO1xuK1x0XHRpbnQgdHVuLCBpO1xuK1xuK1x0XHRpZiAoIXByb2YpXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdGZvciAodHVuID0gMDsgdHVuIFx1MDAzYyBJQ0VfRkRfSFdfU0VHX01BWDsgdHVuKyspXG4rXHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJvZi1cdTAwM2VjbnQ7IGkrKylcbitcdFx0XHRcdHByb2YtXHUwMDNlZW50cnlfaFtpXVt0dW5dID0gMDtcbitcdH1cbit9XG4rXG4gLyoqXG4gICogaWNlX2ZkaXJfcmVwbGF5X2Zsb3dzIC0gcmVwbGF5IEhXIEZsb3cgRGlyZWN0b3IgZmlsdGVyIGluZm9cbiAgKiBAaHc6IHBvaW50ZXIgdG8gSFcgaW5zdGFuY2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBkODg4MzU0ODJkM2FhLi43YWExMjM1NDQ3MzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5AQCAtNjAxLDYgKzYwMSw4IEBAIGljZV9wcmVwYXJlX2Zvcl9yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpXG4gXHRcdG5ldGlmX2RldmljZV9kZXRhY2godnNpLVx1MDAzZW5ldGRldik7XG4gc2tpcDpcbiBcbitcdGlmIChody1cdTAwM2VmZGlyX3Byb2YpXG4rXHRcdGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhodyk7XG4gXHQvKiBjbGVhciBTVyBmaWx0ZXJpbmcgREIgKi9cbiBcdGljZV9jbGVhcl9od190YmxzKGh3KTtcbiBcdC8qIGRpc2FibGUgdGhlIFZTSXMgYW5kIHRoZWlyIHF1ZXVlcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBET1dOICovXG5AQCAtNjU5LDcgKzY2MSw5IEBAIHN0YXRpYyB2b2lkIGljZV9kb19yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpXG4gXHQgKi9cbiBcdGlmIChyZXNldF90eXBlID09IElDRV9SRVNFVF9QRlIpIHtcbiBcdFx0cGYtXHUwMDNlcGZyX2NvdW50Kys7XG4rXHRcdG11dGV4X2xvY2soXHUwMDI2cGYtXHUwMDNlYWRhcHRlci1cdTAwM2VyZWJ1aWxkX2xvY2spO1xuIFx0XHRpY2VfcmVidWlsZChwZiwgcmVzZXRfdHlwZSk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRcdGNsZWFyX2JpdChJQ0VfUFJFUEFSRURfRk9SX1JFU0VULCBwZi1cdTAwM2VzdGF0ZSk7XG4gXHRcdGNsZWFyX2JpdChJQ0VfUEZSX1JFUSwgcGYtXHUwMDNlc3RhdGUpO1xuIFx0XHR3YWtlX3VwKFx1MDAyNnBmLVx1MDAzZXJlc2V0X3dhaXRfcXVldWUpO1xuQEAgLTcwNCw3ICs3MDgsOSBAQCBzdGF0aWMgdm9pZCBpY2VfcmVzZXRfc3VidGFzayhzdHJ1Y3QgaWNlX3BmICpwZilcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHQvKiBkb25lIHdpdGggcmVzZXQuIHN0YXJ0IHJlYnVpbGQgKi9cbiBcdFx0XHRwZi1cdTAwM2Vody5yZXNldF9vbmdvaW5nID0gZmFsc2U7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZwZi1cdTAwM2VhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRcdFx0aWNlX3JlYnVpbGQocGYsIHJlc2V0X3R5cGUpO1xuK1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRcdFx0LyogY2xlYXIgYml0IHRvIHJlc3VtZSBub3JtYWwgb3BlcmF0aW9ucywgYnV0XG4gXHRcdFx0ICogSUNFX05FRURTX1JFU1RBUlQgYml0IGlzIHNldCBpbiBjYXNlIHJlYnVpbGQgZmFpbGVkXG4gXHRcdFx0ICovXG5AQCAtNzY3NCwxNCArNzY4MCwyNyBAQCBzdGF0aWMgdm9pZCBpY2VfcmVidWlsZChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpXG4gXHRcdGdvdG8gZXJyX2luaXRfY3RybHE7XG4gXHR9XG4gXG4tXHQvKiBpZiBERFAgd2FzIHByZXZpb3VzbHkgbG9hZGVkIHN1Y2Nlc3NmdWxseSAqL1xuLVx0aWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSkge1xuLVx0XHQvKiByZWxvYWQgdGhlIFNXIERCIG9mIGZpbHRlciB0YWJsZXMgKi9cbi1cdFx0aWYgKHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUilcbi1cdFx0XHRpY2VfZmlsbF9ibGtfdGJscyhodyk7XG4tXHRcdGVsc2Vcbi1cdFx0XHQvKiBSZWxvYWQgRERQIFBhY2thZ2UgYWZ0ZXIgQ09SRVIvR0xPQlIgcmVzZXQgKi9cbi1cdFx0XHRpY2VfbG9hZF9wa2coTlVMTCwgcGYpO1xuK1x0aWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSBcdTAwMjZcdTAwMjYgcmVzZXRfdHlwZSA9PSBJQ0VfUkVTRVRfUEZSKSB7XG4rXHRcdGVudW0gaWNlX2RkcF9zdGF0ZSBzdGF0ZTtcbitcbitcdFx0c3RhdGUgPSBpY2VfaW5pdF9wa2coaHcsIGh3LVx1MDAzZXBrZ19jb3B5LCBody1cdTAwM2Vwa2dfc2l6ZSk7XG4rXHRcdGljZV9sb2dfcGtnX2luaXQoaHcsIHN0YXRlKTtcbitcdFx0aWYgKCFpY2VfaXNfaW5pdF9wa2dfc3VjY2Vzc2Z1bChzdGF0ZSkpXG4rXHRcdFx0Z290byBlcnJfaW5pdF9jdHJscTtcbitcdH0gZWxzZSBpZiAoIWljZV9pc19zYWZlX21vZGUocGYpKSB7XG4rXHRcdC8qIFJlbG9hZCBERFAgUGFja2FnZSBhZnRlciBDT1JFUi9HTE9CUiByZXNldCAqL1xuK1x0XHRpY2VfbG9hZF9wa2coTlVMTCwgcGYpO1xuK1x0fVxuK1xuK1x0LyogUEZSIGNhbiBsb3NlIERWTSByZWNpcGVzIGFmdGVyIHN5c3RlbSBzdXNwZW5kLiAqL1xuK1x0aWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSBcdTAwMjZcdTAwMjYgcmVzZXRfdHlwZSA9PSBJQ0VfUkVTRVRfUEZSIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGljZV9pc19kdm1fZW5hKGh3KSkge1xuK1x0XHRlcnIgPSBpY2VfZHZtX3VwZGF0ZV9kZmx0X3JlY2lwZXMoaHcpO1xuK1x0XHRpZiAoZXJyKSB7XG4rXHRcdFx0ZGV2X2VycihkZXYsIFwiZmFpbGVkIHRvIHJlc3RvcmUgZGVmYXVsdCBEVk0gcmVjaXBlczogJWRcXG5cIixcbitcdFx0XHRcdGVycik7XG4rXHRcdFx0Z290byBlcnJfaW5pdF9jdHJscTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0ZXJyID0gaWNlX2NsZWFyX3BmX2NmZyhodyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmNcbmluZGV4IGZiNTI2Y2I4NDc3NjQuLjU4ZmIxOTE5MDNhNzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5jXG5AQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWNlX3VwZGF0ZV9yZWNpcGVfbGt1cF9pZHhfcGFyYW1zIGljZV9kdm1fZGZsdF9yZWNpcGVzW10gPSB7XG4gICogaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzIC0gdXBkYXRlIGRlZmF1bHQgc3dpdGNoIHJlY2lwZXMgaW4gRFZNXG4gICogQGh3OiBoYXJkd2FyZSBzdHJ1Y3R1cmUgdXNlZCB0byB1cGRhdGUgdGhlIHJlY2lwZXNcbiAgKi9cbi1zdGF0aWMgaW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodylcbitpbnQgaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKHN0cnVjdCBpY2VfaHcgKmh3KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgaTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuaFxuaW5kZXggYTBmYjc0M2QwOGUyMC4uNWRjNzA1NDM1ZjU2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmhcbkBAIC04LDYgKzgsNyBAQCBzdHJ1Y3QgaWNlX2h3O1xuIFxuIGJvb2wgaWNlX2lzX2R2bV9lbmEoc3RydWN0IGljZV9odyAqaHcpO1xuIGludCBpY2Vfc2V0X3ZsYW5fbW9kZShzdHJ1Y3QgaWNlX2h3ICpodyk7XG4raW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gdm9pZCBpY2VfcG9zdF9wa2dfZHdubGRfdmxhbl9tb2RlX2NmZyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gXG4gI2VuZGlmIC8qIF9JQ0VfVkxBTl9NT0RFX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjI5LjE2MTUwODM1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1NTIwNzU0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJpYWdlIFRpbWU6IEFzc2Vzc2luZyB0aGUgYGljZWAgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiBpdCdzIGZ1enotd29ydGh5LCBrZWVwaW5nIHRoZSB0cmlhZ2UgY3JpdGVyaWEgZnJvbnQgYW5kIGNlbnRlci4gRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBjb2RlIGlzIGJlaW5nIHRvdWNoZWQuIE9rYXksIEkndmUgZ290OiBgaWNlLmhgLCBgaWNlX2FkYXB0ZXIuYy9oYCwgYGljZV9ldGh0b29sX2ZkaXIuY2AsIGBpY2VfbWFpbi5jYCwgYW5kIGBpY2Vfdmxhbl9tb2RlLmMvaGAuIFN0YW5kYXJkIHN0dWZmLCBhbGwgd2l0aGluIHRoZSBJbnRlbCBFdGhlcm5ldCBDb250cm9sbGVyIEU4MDAgc2VyaWVzIGRyaXZlciwgb3IgYGljZWAuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGlzIHRoaXMgYSBoYXJkd2FyZS1kZXBlbmRlbnQgZHJpdmVyPyBEb2VzIGl0IHJlbHkgb24gc3BlY2lmaWMgUENJZSBoYXJkd2FyZSB0aGF0J3Mgbm90IGVtdWxhdGVkIGluIHRoZSB1c3VhbCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzPyBMZXQncyByZWZyZXNoIG91ciBtZW1vcnkgb24gdGhlIHRyaWFnZSBndWlkZWxpbmVzLCBzcGVjaWZpY2FsbHkgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLiBXZSdyZSBsb29raW5nIGZvciB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCdzIHRvdWdoIHRvIHJlYWNoIGluIGEgc3RhbmRhcmQgc2V0dXAuXG5cbk15IHVuZGVyc3RhbmRpbmcsIGZyb20gZXhwZXJpZW5jZSwgaXMgdGhhdCB0aGUgYGljZWAgZHJpdmVyIGlzIGZvciBJbnRlbCdzIENvbHVtYmlhdmlsbGUgKEU4MTApIGFuZCBFODAwIHNlcmllcyBlbnRlcnByaXNlIE5JQ3MuIFRoZXNlIGFyZSBQQ0llIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmRzLCB0aGUgMTAwR2JFIHZhcmlldHkuIFRoZXkncmUgZGVmaW5pdGVseSBub3QgZW11bGF0ZWQgYnkgdGhlIHN0YW5kYXJkIFFFTVUgZGV2aWNlcyB0aGF0IHdlJ2QgdXNlLCBsaWtlIGUxMDAwLCBpZ2IsIGFuZCB2aXJ0aW8tbmV0LlxuXG5UbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmb3IgYW55IHZpcnR1YWwgb3IgbW9jayBkZXZpY2VzIHVzaW5nIGBDT05GSUdfSUNFYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGhhcmR3YXJlIHRoYXQncyBkaWZmaWN1bHQgdG8gcmVhY2gsIGJ1dCBsZXQncyBqdXN0IG1ha2Ugc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY4NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjM0LjcxMzU4NzU3NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTU2NDk3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUNFXFxcXGJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjY4PWNvbmZpZyBJNDBFVkZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjkxOmNvbmZpZyBJQ0VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI5Mi1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODAwIFNlcmllcyBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwOToyOTozNC44MDUxNTkxMjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDYyMTM1MzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHMsIHRhcmdldGluZyBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIEludGVsIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGlzIEludGVsIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBvcHRpb25zLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnYCwgYW5kIHNwZWNpZmljYWxseSwgYXJvdW5kIGxpbmUgMjkxLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBmZWF0dXJlIGVuYWJsZSBmbGFncyBhcmUgZ3JvdXBlZCwgb3IgYXQgbGVhc3QgYSByZWxldmFudCBncm91cGluZyBvZiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgcmVsYXRlZCB0byB0aGUgZHJpdmVyJ3MgZGVmYXVsdCBzZXR0aW5ncy4gSSdtIGhvcGluZyB0byBxdWlja2x5IGdyYXNwIHRoZSByZWxldmFudCBwYXJhbWV0ZXJzIHRoZXJlLCBtYXliZSBhIGhhcmR3YXJlIHNwZWNpZmljIGZlYXR1cmUsIG9yIGEgZGVidWcgc2V0dGluZy4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIGhhbmRsZXMgWC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc1MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjM2Ljg2NzI5ODU4NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjkwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjkwOlxcdFxcbiAyOTE6XFx0Y29uZmlnIElDRVxcbiAyOTI6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgU3VwcG9ydFxcXCJcXG4gMjkzOlxcdFxcdGRlZmF1bHQgblxcbiAyOTQ6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXFxuIDI5NTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuIDI5NjpcXHRcXHRkZXBlbmRzIG9uIEdOU1MgfHwgR05TUyA9IG5cXG4gMjk3OlxcdFxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuIDI5ODpcXHRcXHRzZWxlY3QgRElNTElCXFxuIDI5OTpcXHRcXHRzZWxlY3QgTElCRVRIX1hEUFxcbiAzMDA6XFx0XFx0c2VsZWN0IExJQklFXFxuIDMwMTpcXHRcXHRzZWxlY3QgTElCSUVfQURNSU5RXFxuIDMwMjpcXHRcXHRzZWxlY3QgTElCSUVfRldMT0cgaWYgREVCVUdfRlNcXG4gMzAzOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAzMDQ6XFx0XFx0c2VsZWN0IFBBQ0tJTkdcXG4gMzA1OlxcdFxcdHNlbGVjdCBQTERNRldcXG4gMzA2OlxcdFxcdHNlbGVjdCBEUExMXFxuIDMwNzpcXHRcXHRoZWxwXFxuIDMwODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgb2ZcXG4gMzA5OlxcdFxcdCAgZGV2aWNlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpZGVudGlmeSB5b3VyIGFkYXB0ZXIsIGdvXFxuIDMxMDpcXHRcXHQgIHRvIHRoZSBBZGFwdGVyIFxcdTAwMjYgRHJpdmVyIElEIEd1aWRlIHRoYXQgY2FuIGJlIGxvY2F0ZWQgYXQ6XFxuIDMxMTpcXHRcXG4gMzEyOlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVxcdTAwM2VcXG4gMzEzOlxcdFxcbiAzMTQ6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gMzE1OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2ljZS5yc3RcXHUwMDNlLlxcbiAzMTY6XFx0XFxuIDMxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcXG4gMzE4OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgaWNlLlxcbiAzMTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjM2Ljg2NzQwMDg0NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ4MDEzMjYwMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFwiaWNlXCIgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gdGhlIGBpY2VgIGRyaXZlciwgd2hpY2ggSSBrbm93IGlzIHRoZSBJbnRlbCBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIGRyaXZlciwgaXMgdGhlIGZvY3VzIGhlcmUuIEl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBuZXR3b3JrIGRyaXZlciwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcgYmVjYXVzZSBpdCByZXF1aXJlcyB0aGUgSW50ZWwgRTgwMCBzZXJpZXMgaGFyZHdhcmUgQVNJQy4gU3RhbmRhcmQgUUVNVSwgd2hpY2ggaXMgb3VyIHByaW1hcnkgZW52aXJvbm1lbnQgZm9yIGZ1enppbmcsIGRvZXNuJ3QgZW11bGF0ZSB0aG9zZSBjYXJkcy5cblxuTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0LCBiYXNlZCBvbiBzZWN0aW9uIDIgb2YgdGhlIGd1aWRlbGluZXMsIGNvZGUgdGhhdCBkZXBlbmRzIG9uIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgbGlrZSB0aGVzZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBjb21wb25lbnRzIGFyZSBub3Qgc3VpdGFibGUgZm9yIHN0YW5kYXJkIGZ1enppbmcuIFRoZSBzZWN0aW9uIHNwZWNpZmljYWxseSBjYWxscyBvdXQgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAgYXMgZXhhbXBsZXMsIGFsbCByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUuIFRoaXMgaXMgYSBjcnVjaWFsIGRldGFpbCBmb3IgZGV0ZXJtaW5pbmcgYFdvcnRoRnV6emluZ2AuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaC4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byB0aGlzIHNwZWNpZmljIGBpY2VgIGRyaXZlci4gQSBxdWljayBzY2FuIG9mIHRoZSBtb2RpZmllZCBmaWxlc+KAlGBpY2UuaGAsIGBpY2VfYWRhcHRlci5jYCwgYGljZV9hZGFwdGVyLmhgLCBgaWNlX2V0aHRvb2xfZmRpci5jYCwgYGljZV9tYWluLmNgLCBgaWNlX3ZsYW5fbW9kZS5jYCwgYW5kIGBpY2Vfdmxhbl9tb2RlLmhg4oCUY29uZmlybXMgdGhleSBhbGwgbGl2ZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvYCBkaXJlY3RvcnkuIE5vbmUgb2YgdGhlbSBhcHBlYXIgdG8gdG91Y2ggYW55IGNvcmUgbmV0d29ya2luZyBvciB2aXJ0dWFsIG5ldGRldiBjb21wb25lbnRzLCB3aGljaCBpcyBjcml0aWNhbC5cblxuVGhlcmVmb3JlLCBzaW5jZSB0aGUgcGF0Y2ggZGVhbHMgc29sZWx5IHdpdGggdGhlIGBpY2VgIGRyaXZlcidzIGhhbmRsaW5nIG9mIHJlc2V0IHNlcmlhbGl6YXRpb24gYW5kIEZsb3cgRGlyZWN0b3IvRFZNIGZpbHRlciByZXBsYXksIHdoaWNoIGlzIGFsbCBkZXBlbmRlbnQgb24gaGFyZHdhcmUgdGhhdCBpc24ndCBlbXVsYXRlZCwgaXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIG91ciBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGlzIGxlYWRzIG1lIHRvIGNvbmNsdWRlOiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJIHdvbid0IGJlIGVuYWJsaW5nIGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIChgRW5hYmxlQ29uZmlncyA9IFtdYCkgb3IgZm9jdXNpbmcgb24gYW55IHNwZWNpZmljIHN5bWJvbHMgKGBGb2N1c1N5bWJvbHMgPSBbXWApLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhlIG1vZGlmaWVkIGNvZGUncyBleGVjdXRpb24gcGF0aCBpcyBibG9ja2VkIGJ5IHRoZSBsYWNrIG9mIGVtdWxhdGVkIGhhcmR3YXJlLlxuXG5Pa2F5LCBJJ2xsIGNhbGwgYHNldC1yZXN1bHRzYCB0byByZWNvcmQgdGhpcyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQwNywiT3V0cHV0VG9rZW5zIjoxMDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwOToyOTo0MS42Njg3MzAxOTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIChgaWNlYCkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRmxvdyBEaXJlY3RvciBmaWx0ZXIgaGFuZGxlIGNsZWFudXAsIHJlYnVpbGQgc2VyaWFsaXphdGlvbiB2aWEgYW4gYWRhcHRlci1sZXZlbCBtdXRleCwgYW5kIHJlY2lwZSB1cGRhdGVzIG9uIHJlc2V0LiBUaGUgYGljZWAgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgSW50ZWwgRTgwMCBzZXJpZXMgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9LVk0gZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgKGBpY2VgKSBkcml2ZXIsIHNwZWNpZmljYWxseSBoYW5kbGluZyBGbG93IERpcmVjdG9yIGZpbHRlciBoYW5kbGUgY2xlYW51cCwgcmVidWlsZCBzZXJpYWxpemF0aW9uIHZpYSBhbiBhZGFwdGVyLWxldmVsIG11dGV4LCBhbmQgcmVjaXBlIHVwZGF0ZXMgb24gcmVzZXQuIFRoZSBgaWNlYCBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0tWTSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwOToyOTo0MS42Njg3NjA3NTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7xf8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 09:10:31 +0000 UTC FinishedAt: 2026-09-04 09:29:43 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDA5OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgKGBpY2VgKSBkcml2ZXIsIHNwZWNpZmljYWxseSBoYW5kbGluZyBGbG93IERpcmVjdG9yIGZpbHRlciBoYW5kbGUgY2xlYW51cCwgcmVidWlsZCBzZXJpYWxpemF0aW9uIHZpYSBhbiBhZGFwdGVyLWxldmVsIG11dGV4LCBhbmQgcmVjaXBlIHVwZGF0ZXMgb24gcmVzZXQuIFRoZSBgaWNlYCBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0tWTSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA5OjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODI5Mzk3YmI4M2Y0Y2YxZTJlMDMxMzI4OTlhYTlmNzJlZDA5ZDFkY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDk6Mjk6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oXG5pbmRleCBkYjNjNzAxNWM1NmM0Li40NzM5ZmY4ODJiOWVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcbkBAIC0xMDI5LDYgJiM0MzsxMDI5LDcgQEAgaWNlX2dldF9mZGlyX2ZsdHJfaWRzKHN0cnVjdCBpY2VfaHcgKmh3LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLFxuIFx0XHQgICAgICB1MzIgKnJ1bGVfbG9jcyk7XG4gdm9pZCBpY2VfZmRpcl9yZW1fYWRxX2Nobmwoc3RydWN0IGljZV9odyAqaHcsIHUxNiB2c2lfaWR4KTtcbiB2b2lkIGljZV9mZGlyX3JlbGVhc2VfZmxvd3Moc3RydWN0IGljZV9odyAqaHcpO1xuJiM0Mzt2b2lkIGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gdm9pZCBpY2VfZmRpcl9yZXBsYXlfZmxvd3Moc3RydWN0IGljZV9odyAqaHcpO1xuIHZvaWQgaWNlX2ZkaXJfcmVwbGF5X2ZsdHJzKHN0cnVjdCBpY2VfcGYgKnBmKTtcbiBpbnQgaWNlX2ZkaXJfY3JlYXRlX2RmbHRfcnVsZXMoc3RydWN0IGljZV9wZiAqcGYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmNcbmluZGV4IDJkYzM2MjlkNmQwZjYuLjdkZTkyMjNlOTcxYTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmNcbkBAIC02NCw2ICYjNDM7NjQsNyBAQCBzdGF0aWMgc3RydWN0IGljZV9hZGFwdGVyICppY2VfYWRhcHRlcl9uZXcoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhZGFwdGVyLVx1MDAzZXR4cV9jdHhfbG9jayk7XG4gXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShhZGFwdGVyLVx1MDAzZWNwaV9waHlfbG9jayk7IGkmIzQzOyYjNDM7KVxuIFx0XHRtdXRleF9pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNlY3BpX3BoeV9sb2NrW2ldKTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNlcmVidWlsZF9sb2NrKTtcbiBcdHJlZmNvdW50X3NldChcdTAwMjZhZGFwdGVyLVx1MDAzZXJlZmNvdW50LCAxKTtcbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2Vwb3J0cy5sb2NrKTtcbkBAIC03Nyw2ICYjNDM7NzgsNyBAQCBzdGF0aWMgdm9pZCBpY2VfYWRhcHRlcl9mcmVlKHN0cnVjdCBpY2VfYWRhcHRlciAqYWRhcHRlcilcbiBcdFdBUk5fT04oIWxpc3RfZW1wdHkoXHUwMDI2YWRhcHRlci1cdTAwM2Vwb3J0cy5wb3J0cykpO1xuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoYWRhcHRlci1cdTAwM2VjcGlfcGh5X2xvY2spOyBpJiM0MzsmIzQzOylcbiBcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZWNwaV9waHlfbG9ja1tpXSk7XG4mIzQzO1x0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNmFkYXB0ZXItXHUwMDNlcG9ydHMubG9jayk7XG4gXG4gXHRrZnJlZShhZGFwdGVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oXG5pbmRleCA0ZjY5NWYzMmRhM2Q4Li5mOTI2NWRlOTczZWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oXG5AQCAtMzcsNiAmIzQzOzM3LDcgQEAgc3RydWN0IGljZV9wb3J0X2xpc3Qge1xuICAqIEBjcGlfcGh5X2xvY2s6IFBlci1QSFkgbXV0ZXggc2VyaWFsaXppbmcgQ1BJIFJFUS9BQ0sgdHJhbnNhY3Rpb25zLlxuICAqICAgICAgICAgICAgICAgSW5kZXggMCA9IFBIWTAsIGluZGV4IDEgPSBQSFkxLiBVc2VkIG9uIEU4MjVDIGRldmljZXMuXG4gICogQGN0cmxfcGY6IENvbnRyb2wgUEYgb2YgdGhlIGFkYXB0ZXJcbiYjNDM7ICogQHJlYnVpbGRfbG9jazogc2VyaWFsaXplIFBGUiByZWNvdmVyeSBhY3Jvc3MgUEZzIG9mIHRoZSBzYW1lIGFkYXB0ZXJcbiAgKiBAcG9ydHM6IFBvcnRzIGxpc3RcbiAgKiBAaW5kZXg6IDY0LWJpdCBpbmRleCBjYWNoZWQgZm9yIGNvbGxpc2lvbiBkZXRlY3Rpb24gb24gMzJiaXQgc3lzdGVtc1xuICAqL1xuQEAgLTQ4LDYgJiM0Mzs0OSw4IEBAIHN0cnVjdCBpY2VfYWRhcHRlciB7XG4gXHRzcGlubG9ja190IHR4cV9jdHhfbG9jaztcbiBcdC8qIFNlcmlhbGl6ZSBDUEkgUkVRL0FDSyB0cmFuc2FjdGlvbnMgcGVyIFBIWSAoRTgyNUMgb25seSkgKi9cbiBcdHN0cnVjdCBtdXRleCBjcGlfcGh5X2xvY2tbSUNFX0U4MjVfTUFYX1BIWVNdO1xuJiM0MztcdC8qIFNlcmlhbGl6ZSBQRlIgcmVjb3ZlcnkgdG91Y2hpbmcgc2hhcmVkIEZXIGdsb2JhbCBzdGF0ZSAqL1xuJiM0MztcdHN0cnVjdCBtdXRleCByZWJ1aWxkX2xvY2s7XG4gXG4gXHRzdHJ1Y3QgaWNlX3BmICpjdHJsX3BmO1xuIFx0c3RydWN0IGljZV9wb3J0X2xpc3QgcG9ydHM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sX2ZkaXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbF9mZGlyLmNcbmluZGV4IGFjZWVjMTg0ZTg5YjIuLmZhYTE2YjVhMTJjMGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jXG5AQCAtNDI4LDYgJiM0Mzs0MjgsMjcgQEAgdm9pZCBpY2VfZmRpcl9yZWxlYXNlX2Zsb3dzKHN0cnVjdCBpY2VfaHcgKmh3KVxuIFx0XHRpY2VfZmRpcl9lcmFzZV9mbG93X2Zyb21faHcoaHcsIElDRV9CTEtfRkQsIGZsb3cpO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyAtIGNsZWFyIGhhbmRsZXMgZnJlZWQgZHVyaW5nIHJlc2V0XG4mIzQzOyAqIEBodzogcG9pbnRlciB0byBIVyBpbnN0YW5jZVxuJiM0MzsgKi9cbiYjNDM7dm9pZCBpY2VfZmRpcl9jbGVhcl9mbG93X2hhbmRsZXMoc3RydWN0IGljZV9odyAqaHcpXG4mIzQzO3tcbiYjNDM7XHRpbnQgZmxvdztcbiYjNDM7XG4mIzQzO1x0Zm9yIChmbG93ID0gMDsgZmxvdyBcdTAwM2MgSUNFX0ZMVFJfUFRZUEVfTUFYOyBmbG93JiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IGljZV9mZF9od19wcm9mICpwcm9mID0gaHctXHUwMDNlZmRpcl9wcm9mW2Zsb3ddO1xuJiM0MztcdFx0aW50IHR1biwgaTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIXByb2YpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdGZvciAodHVuID0gMDsgdHVuIFx1MDAzYyBJQ0VfRkRfSFdfU0VHX01BWDsgdHVuJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJvZi1cdTAwM2VjbnQ7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRcdHByb2YtXHUwMDNlZW50cnlfaFtpXVt0dW5dID0gMDtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaWNlX2ZkaXJfcmVwbGF5X2Zsb3dzIC0gcmVwbGF5IEhXIEZsb3cgRGlyZWN0b3IgZmlsdGVyIGluZm9cbiAgKiBAaHc6IHBvaW50ZXIgdG8gSFcgaW5zdGFuY2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBkODg4MzU0ODJkM2FhLi43YWExMjM1NDQ3MzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5AQCAtNjAxLDYgJiM0Mzs2MDEsOCBAQCBpY2VfcHJlcGFyZV9mb3JfcmVzZXQoc3RydWN0IGljZV9wZiAqcGYsIGVudW0gaWNlX3Jlc2V0X3JlcSByZXNldF90eXBlKVxuIFx0XHRuZXRpZl9kZXZpY2VfZGV0YWNoKHZzaS1cdTAwM2VuZXRkZXYpO1xuIHNraXA6XG4gXG4mIzQzO1x0aWYgKGh3LVx1MDAzZWZkaXJfcHJvZilcbiYjNDM7XHRcdGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhodyk7XG4gXHQvKiBjbGVhciBTVyBmaWx0ZXJpbmcgREIgKi9cbiBcdGljZV9jbGVhcl9od190YmxzKGh3KTtcbiBcdC8qIGRpc2FibGUgdGhlIFZTSXMgYW5kIHRoZWlyIHF1ZXVlcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBET1dOICovXG5AQCAtNjU5LDcgJiM0Mzs2NjEsOSBAQCBzdGF0aWMgdm9pZCBpY2VfZG9fcmVzZXQoc3RydWN0IGljZV9wZiAqcGYsIGVudW0gaWNlX3Jlc2V0X3JlcSByZXNldF90eXBlKVxuIFx0ICovXG4gXHRpZiAocmVzZXRfdHlwZSA9PSBJQ0VfUkVTRVRfUEZSKSB7XG4gXHRcdHBmLVx1MDAzZXBmcl9jb3VudCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNnBmLVx1MDAzZWFkYXB0ZXItXHUwMDNlcmVidWlsZF9sb2NrKTtcbiBcdFx0aWNlX3JlYnVpbGQocGYsIHJlc2V0X3R5cGUpO1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBmLVx1MDAzZWFkYXB0ZXItXHUwMDNlcmVidWlsZF9sb2NrKTtcbiBcdFx0Y2xlYXJfYml0KElDRV9QUkVQQVJFRF9GT1JfUkVTRVQsIHBmLVx1MDAzZXN0YXRlKTtcbiBcdFx0Y2xlYXJfYml0KElDRV9QRlJfUkVRLCBwZi1cdTAwM2VzdGF0ZSk7XG4gXHRcdHdha2VfdXAoXHUwMDI2cGYtXHUwMDNlcmVzZXRfd2FpdF9xdWV1ZSk7XG5AQCAtNzA0LDcgJiM0Mzs3MDgsOSBAQCBzdGF0aWMgdm9pZCBpY2VfcmVzZXRfc3VidGFzayhzdHJ1Y3QgaWNlX3BmICpwZilcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHQvKiBkb25lIHdpdGggcmVzZXQuIHN0YXJ0IHJlYnVpbGQgKi9cbiBcdFx0XHRwZi1cdTAwM2Vody5yZXNldF9vbmdvaW5nID0gZmFsc2U7XG4mIzQzO1x0XHRcdG11dGV4X2xvY2soXHUwMDI2cGYtXHUwMDNlYWRhcHRlci1cdTAwM2VyZWJ1aWxkX2xvY2spO1xuIFx0XHRcdGljZV9yZWJ1aWxkKHBmLCByZXNldF90eXBlKTtcbiYjNDM7XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBmLVx1MDAzZWFkYXB0ZXItXHUwMDNlcmVidWlsZF9sb2NrKTtcbiBcdFx0XHQvKiBjbGVhciBiaXQgdG8gcmVzdW1lIG5vcm1hbCBvcGVyYXRpb25zLCBidXRcbiBcdFx0XHQgKiBJQ0VfTkVFRFNfUkVTVEFSVCBiaXQgaXMgc2V0IGluIGNhc2UgcmVidWlsZCBmYWlsZWRcbiBcdFx0XHQgKi9cbkBAIC03Njc0LDE0ICYjNDM7NzY4MCwyNyBAQCBzdGF0aWMgdm9pZCBpY2VfcmVidWlsZChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpXG4gXHRcdGdvdG8gZXJyX2luaXRfY3RybHE7XG4gXHR9XG4gXG4tXHQvKiBpZiBERFAgd2FzIHByZXZpb3VzbHkgbG9hZGVkIHN1Y2Nlc3NmdWxseSAqL1xuLVx0aWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSkge1xuLVx0XHQvKiByZWxvYWQgdGhlIFNXIERCIG9mIGZpbHRlciB0YWJsZXMgKi9cbi1cdFx0aWYgKHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUilcbi1cdFx0XHRpY2VfZmlsbF9ibGtfdGJscyhodyk7XG4tXHRcdGVsc2Vcbi1cdFx0XHQvKiBSZWxvYWQgRERQIFBhY2thZ2UgYWZ0ZXIgQ09SRVIvR0xPQlIgcmVzZXQgKi9cbi1cdFx0XHRpY2VfbG9hZF9wa2coTlVMTCwgcGYpO1xuJiM0MztcdGlmICghaWNlX2lzX3NhZmVfbW9kZShwZikgXHUwMDI2XHUwMDI2IHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUikge1xuJiM0MztcdFx0ZW51bSBpY2VfZGRwX3N0YXRlIHN0YXRlO1xuJiM0MztcbiYjNDM7XHRcdHN0YXRlID0gaWNlX2luaXRfcGtnKGh3LCBody1cdTAwM2Vwa2dfY29weSwgaHctXHUwMDNlcGtnX3NpemUpO1xuJiM0MztcdFx0aWNlX2xvZ19wa2dfaW5pdChodywgc3RhdGUpO1xuJiM0MztcdFx0aWYgKCFpY2VfaXNfaW5pdF9wa2dfc3VjY2Vzc2Z1bChzdGF0ZSkpXG4mIzQzO1x0XHRcdGdvdG8gZXJyX2luaXRfY3RybHE7XG4mIzQzO1x0fSBlbHNlIGlmICghaWNlX2lzX3NhZmVfbW9kZShwZikpIHtcbiYjNDM7XHRcdC8qIFJlbG9hZCBERFAgUGFja2FnZSBhZnRlciBDT1JFUi9HTE9CUiByZXNldCAqL1xuJiM0MztcdFx0aWNlX2xvYWRfcGtnKE5VTEwsIHBmKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIFBGUiBjYW4gbG9zZSBEVk0gcmVjaXBlcyBhZnRlciBzeXN0ZW0gc3VzcGVuZC4gKi9cbiYjNDM7XHRpZiAoIWljZV9pc19zYWZlX21vZGUocGYpIFx1MDAyNlx1MDAyNiByZXNldF90eXBlID09IElDRV9SRVNFVF9QRlIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGljZV9pc19kdm1fZW5hKGh3KSkge1xuJiM0MztcdFx0ZXJyID0gaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKGh3KTtcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2ZhaWxlZCB0byByZXN0b3JlIGRlZmF1bHQgRFZNIHJlY2lwZXM6ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdGVycik7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX2luaXRfY3RybHE7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRlcnIgPSBpY2VfY2xlYXJfcGZfY2ZnKGh3KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuY1xuaW5kZXggZmI1MjZjYjg0Nzc2NC4uNThmYjE5MTkwM2E3NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmNcbkBAIC0yNDAsNyAmIzQzOzI0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWNlX3VwZGF0ZV9yZWNpcGVfbGt1cF9pZHhfcGFyYW1zIGljZV9kdm1fZGZsdF9yZWNpcGVzW10gPSB7XG4gICogaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzIC0gdXBkYXRlIGRlZmF1bHQgc3dpdGNoIHJlY2lwZXMgaW4gRFZNXG4gICogQGh3OiBoYXJkd2FyZSBzdHJ1Y3R1cmUgdXNlZCB0byB1cGRhdGUgdGhlIHJlY2lwZXNcbiAgKi9cbi1zdGF0aWMgaW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodylcbiYjNDM7aW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodylcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmhcbmluZGV4IGEwZmI3NDNkMDhlMjAuLjVkYzcwNTQzNWY1NmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oXG5AQCAtOCw2ICYjNDM7OCw3IEBAIHN0cnVjdCBpY2VfaHc7XG4gXG4gYm9vbCBpY2VfaXNfZHZtX2VuYShzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gaW50IGljZV9zZXRfdmxhbl9tb2RlKHN0cnVjdCBpY2VfaHcgKmh3KTtcbiYjNDM7aW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gdm9pZCBpY2VfcG9zdF9wa2dfZHdubGRfdmxhbl9tb2RlX2NmZyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gXG4gI2VuZGlmIC8qIF9JQ0VfVkxBTl9NT0RFX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwOToyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODAwIFNlcmllcyAoYGljZWApIGRyaXZlciwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIEZsb3cgRGlyZWN0b3IgZmlsdGVyIGhhbmRsZSBjbGVhbnVwLCByZWJ1aWxkIHNlcmlhbGl6YXRpb24gdmlhIGFuIGFkYXB0ZXItbGV2ZWwgbXV0ZXgsIGFuZCByZWNpcGUgdXBkYXRlcyBvbiByZXNldC4gVGhlIGBpY2VgIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvS1ZNIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MjkzOTdiYjgzZjRjZjFlMmUwMzEzMjg5OWFhOWY3MmVkMDlkMWRjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAwOToyOToyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaAppbmRleCBkYjNjNzAxNWM1NmM0Li40NzM5ZmY4ODJiOWVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oCkBAIC0xMDI5LDYgJiM0MzsxMDI5LDcgQEAgaWNlX2dldF9mZGlyX2ZsdHJfaWRzKHN0cnVjdCBpY2VfaHcgKmh3LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLAogCQkgICAgICB1MzIgKnJ1bGVfbG9jcyk7CiB2b2lkIGljZV9mZGlyX3JlbV9hZHFfY2hubChzdHJ1Y3QgaWNlX2h3ICpodywgdTE2IHZzaV9pZHgpOwogdm9pZCBpY2VfZmRpcl9yZWxlYXNlX2Zsb3dzKHN0cnVjdCBpY2VfaHcgKmh3KTsKJiM0Mzt2b2lkIGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhzdHJ1Y3QgaWNlX2h3ICpodyk7CiB2b2lkIGljZV9mZGlyX3JlcGxheV9mbG93cyhzdHJ1Y3QgaWNlX2h3ICpodyk7CiB2b2lkIGljZV9mZGlyX3JlcGxheV9mbHRycyhzdHJ1Y3QgaWNlX3BmICpwZik7CiBpbnQgaWNlX2ZkaXJfY3JlYXRlX2RmbHRfcnVsZXMoc3RydWN0IGljZV9wZiAqcGYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYwppbmRleCAyZGMzNjI5ZDZkMGY2Li43ZGU5MjIzZTk3MWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYwpAQCAtNjQsNiAmIzQzOzY0LDcgQEAgc3RhdGljIHN0cnVjdCBpY2VfYWRhcHRlciAqaWNlX2FkYXB0ZXJfbmV3KHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCXNwaW5fbG9ja19pbml0KCZhbXA7YWRhcHRlci0mZ3Q7dHhxX2N0eF9sb2NrKTsKIAlmb3IgKGludCBpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoYWRhcHRlci0mZ3Q7Y3BpX3BoeV9sb2NrKTsgaSYjNDM7JiM0MzspCiAJCW11dGV4X2luaXQoJmFtcDthZGFwdGVyLSZndDtjcGlfcGh5X2xvY2tbaV0pOwomIzQzOwltdXRleF9pbml0KCZhbXA7YWRhcHRlci0mZ3Q7cmVidWlsZF9sb2NrKTsKIAlyZWZjb3VudF9zZXQoJmFtcDthZGFwdGVyLSZndDtyZWZjb3VudCwgMSk7CiAKIAltdXRleF9pbml0KCZhbXA7YWRhcHRlci0mZ3Q7cG9ydHMubG9jayk7CkBAIC03Nyw2ICYjNDM7NzgsNyBAQCBzdGF0aWMgdm9pZCBpY2VfYWRhcHRlcl9mcmVlKHN0cnVjdCBpY2VfYWRhcHRlciAqYWRhcHRlcikKIAlXQVJOX09OKCFsaXN0X2VtcHR5KCZhbXA7YWRhcHRlci0mZ3Q7cG9ydHMucG9ydHMpKTsKIAlmb3IgKGludCBpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoYWRhcHRlci0mZ3Q7Y3BpX3BoeV9sb2NrKTsgaSYjNDM7JiM0MzspCiAJCW11dGV4X2Rlc3Ryb3koJmFtcDthZGFwdGVyLSZndDtjcGlfcGh5X2xvY2tbaV0pOwomIzQzOwltdXRleF9kZXN0cm95KCZhbXA7YWRhcHRlci0mZ3Q7cmVidWlsZF9sb2NrKTsKIAltdXRleF9kZXN0cm95KCZhbXA7YWRhcHRlci0mZ3Q7cG9ydHMubG9jayk7CiAKIAlrZnJlZShhZGFwdGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmgKaW5kZXggNGY2OTVmMzJkYTNkOC4uZjkyNjVkZTk3M2VmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmgKQEAgLTM3LDYgJiM0MzszNyw3IEBAIHN0cnVjdCBpY2VfcG9ydF9saXN0IHsKICAqIEBjcGlfcGh5X2xvY2s6IFBlci1QSFkgbXV0ZXggc2VyaWFsaXppbmcgQ1BJIFJFUS9BQ0sgdHJhbnNhY3Rpb25zLgogICogICAgICAgICAgICAgICBJbmRleCAwID0gUEhZMCwgaW5kZXggMSA9IFBIWTEuIFVzZWQgb24gRTgyNUMgZGV2aWNlcy4KICAqIEBjdHJsX3BmOiBDb250cm9sIFBGIG9mIHRoZSBhZGFwdGVyCiYjNDM7ICogQHJlYnVpbGRfbG9jazogc2VyaWFsaXplIFBGUiByZWNvdmVyeSBhY3Jvc3MgUEZzIG9mIHRoZSBzYW1lIGFkYXB0ZXIKICAqIEBwb3J0czogUG9ydHMgbGlzdAogICogQGluZGV4OiA2NC1iaXQgaW5kZXggY2FjaGVkIGZvciBjb2xsaXNpb24gZGV0ZWN0aW9uIG9uIDMyYml0IHN5c3RlbXMKICAqLwpAQCAtNDgsNiAmIzQzOzQ5LDggQEAgc3RydWN0IGljZV9hZGFwdGVyIHsKIAlzcGlubG9ja190IHR4cV9jdHhfbG9jazsKIAkvKiBTZXJpYWxpemUgQ1BJIFJFUS9BQ0sgdHJhbnNhY3Rpb25zIHBlciBQSFkgKEU4MjVDIG9ubHkpICovCiAJc3RydWN0IG11dGV4IGNwaV9waHlfbG9ja1tJQ0VfRTgyNV9NQVhfUEhZU107CiYjNDM7CS8qIFNlcmlhbGl6ZSBQRlIgcmVjb3ZlcnkgdG91Y2hpbmcgc2hhcmVkIEZXIGdsb2JhbCBzdGF0ZSAqLwomIzQzOwlzdHJ1Y3QgbXV0ZXggcmVidWlsZF9sb2NrOwogCiAJc3RydWN0IGljZV9wZiAqY3RybF9wZjsKIAlzdHJ1Y3QgaWNlX3BvcnRfbGlzdCBwb3J0czsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbF9mZGlyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jCmluZGV4IGFjZWVjMTg0ZTg5YjIuLmZhYTE2YjVhMTJjMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbF9mZGlyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sX2ZkaXIuYwpAQCAtNDI4LDYgJiM0Mzs0MjgsMjcgQEAgdm9pZCBpY2VfZmRpcl9yZWxlYXNlX2Zsb3dzKHN0cnVjdCBpY2VfaHcgKmh3KQogCQlpY2VfZmRpcl9lcmFzZV9mbG93X2Zyb21faHcoaHcsIElDRV9CTEtfRkQsIGZsb3cpOwogfQogCiYjNDM7LyoqCiYjNDM7ICogaWNlX2ZkaXJfY2xlYXJfZmxvd19oYW5kbGVzIC0gY2xlYXIgaGFuZGxlcyBmcmVlZCBkdXJpbmcgcmVzZXQKJiM0MzsgKiBAaHc6IHBvaW50ZXIgdG8gSFcgaW5zdGFuY2UKJiM0MzsgKi8KJiM0Mzt2b2lkIGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhzdHJ1Y3QgaWNlX2h3ICpodykKJiM0Mzt7CiYjNDM7CWludCBmbG93OwomIzQzOwomIzQzOwlmb3IgKGZsb3cgPSAwOyBmbG93ICZsdDsgSUNFX0ZMVFJfUFRZUEVfTUFYOyBmbG93JiM0MzsmIzQzOykgewomIzQzOwkJc3RydWN0IGljZV9mZF9od19wcm9mICpwcm9mID0gaHctJmd0O2ZkaXJfcHJvZltmbG93XTsKJiM0MzsJCWludCB0dW4sIGk7CiYjNDM7CiYjNDM7CQlpZiAoIXByb2YpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlmb3IgKHR1biA9IDA7IHR1biAmbHQ7IElDRV9GRF9IV19TRUdfTUFYOyB0dW4mIzQzOyYjNDM7KQomIzQzOwkJCWZvciAoaSA9IDA7IGkgJmx0OyBwcm9mLSZndDtjbnQ7IGkmIzQzOyYjNDM7KQomIzQzOwkJCQlwcm9mLSZndDtlbnRyeV9oW2ldW3R1bl0gPSAwOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyoqCiAgKiBpY2VfZmRpcl9yZXBsYXlfZmxvd3MgLSByZXBsYXkgSFcgRmxvdyBEaXJlY3RvciBmaWx0ZXIgaW5mbwogICogQGh3OiBwb2ludGVyIHRvIEhXIGluc3RhbmNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCmluZGV4IGQ4ODgzNTQ4MmQzYWEuLjdhYTEyMzU0NDczMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jCkBAIC02MDEsNiAmIzQzOzYwMSw4IEBAIGljZV9wcmVwYXJlX2Zvcl9yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpCiAJCW5ldGlmX2RldmljZV9kZXRhY2godnNpLSZndDtuZXRkZXYpOwogc2tpcDoKIAomIzQzOwlpZiAoaHctJmd0O2ZkaXJfcHJvZikKJiM0MzsJCWljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhodyk7CiAJLyogY2xlYXIgU1cgZmlsdGVyaW5nIERCICovCiAJaWNlX2NsZWFyX2h3X3RibHMoaHcpOwogCS8qIGRpc2FibGUgdGhlIFZTSXMgYW5kIHRoZWlyIHF1ZXVlcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBET1dOICovCkBAIC02NTksNyAmIzQzOzY2MSw5IEBAIHN0YXRpYyB2b2lkIGljZV9kb19yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpCiAJICovCiAJaWYgKHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUikgewogCQlwZi0mZ3Q7cGZyX2NvdW50JiM0MzsmIzQzOzsKJiM0MzsJCW11dGV4X2xvY2soJmFtcDtwZi0mZ3Q7YWRhcHRlci0mZ3Q7cmVidWlsZF9sb2NrKTsKIAkJaWNlX3JlYnVpbGQocGYsIHJlc2V0X3R5cGUpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7cGYtJmd0O2FkYXB0ZXItJmd0O3JlYnVpbGRfbG9jayk7CiAJCWNsZWFyX2JpdChJQ0VfUFJFUEFSRURfRk9SX1JFU0VULCBwZi0mZ3Q7c3RhdGUpOwogCQljbGVhcl9iaXQoSUNFX1BGUl9SRVEsIHBmLSZndDtzdGF0ZSk7CiAJCXdha2VfdXAoJmFtcDtwZi0mZ3Q7cmVzZXRfd2FpdF9xdWV1ZSk7CkBAIC03MDQsNyAmIzQzOzcwOCw5IEBAIHN0YXRpYyB2b2lkIGljZV9yZXNldF9zdWJ0YXNrKHN0cnVjdCBpY2VfcGYgKnBmKQogCQl9IGVsc2UgewogCQkJLyogZG9uZSB3aXRoIHJlc2V0LiBzdGFydCByZWJ1aWxkICovCiAJCQlwZi0mZ3Q7aHcucmVzZXRfb25nb2luZyA9IGZhbHNlOwomIzQzOwkJCW11dGV4X2xvY2soJmFtcDtwZi0mZ3Q7YWRhcHRlci0mZ3Q7cmVidWlsZF9sb2NrKTsKIAkJCWljZV9yZWJ1aWxkKHBmLCByZXNldF90eXBlKTsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDtwZi0mZ3Q7YWRhcHRlci0mZ3Q7cmVidWlsZF9sb2NrKTsKIAkJCS8qIGNsZWFyIGJpdCB0byByZXN1bWUgbm9ybWFsIG9wZXJhdGlvbnMsIGJ1dAogCQkJICogSUNFX05FRURTX1JFU1RBUlQgYml0IGlzIHNldCBpbiBjYXNlIHJlYnVpbGQgZmFpbGVkCiAJCQkgKi8KQEAgLTc2NzQsMTQgJiM0Mzs3NjgwLDI3IEBAIHN0YXRpYyB2b2lkIGljZV9yZWJ1aWxkKHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9yZXNldF9yZXEgcmVzZXRfdHlwZSkKIAkJZ290byBlcnJfaW5pdF9jdHJscTsKIAl9CiAKLQkvKiBpZiBERFAgd2FzIHByZXZpb3VzbHkgbG9hZGVkIHN1Y2Nlc3NmdWxseSAqLwotCWlmICghaWNlX2lzX3NhZmVfbW9kZShwZikpIHsKLQkJLyogcmVsb2FkIHRoZSBTVyBEQiBvZiBmaWx0ZXIgdGFibGVzICovCi0JCWlmIChyZXNldF90eXBlID09IElDRV9SRVNFVF9QRlIpCi0JCQlpY2VfZmlsbF9ibGtfdGJscyhodyk7Ci0JCWVsc2UKLQkJCS8qIFJlbG9hZCBERFAgUGFja2FnZSBhZnRlciBDT1JFUi9HTE9CUiByZXNldCAqLwotCQkJaWNlX2xvYWRfcGtnKE5VTEwsIHBmKTsKJiM0MzsJaWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSAmYW1wOyZhbXA7IHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUikgewomIzQzOwkJZW51bSBpY2VfZGRwX3N0YXRlIHN0YXRlOwomIzQzOwomIzQzOwkJc3RhdGUgPSBpY2VfaW5pdF9wa2coaHcsIGh3LSZndDtwa2dfY29weSwgaHctJmd0O3BrZ19zaXplKTsKJiM0MzsJCWljZV9sb2dfcGtnX2luaXQoaHcsIHN0YXRlKTsKJiM0MzsJCWlmICghaWNlX2lzX2luaXRfcGtnX3N1Y2Nlc3NmdWwoc3RhdGUpKQomIzQzOwkJCWdvdG8gZXJyX2luaXRfY3RybHE7CiYjNDM7CX0gZWxzZSBpZiAoIWljZV9pc19zYWZlX21vZGUocGYpKSB7CiYjNDM7CQkvKiBSZWxvYWQgRERQIFBhY2thZ2UgYWZ0ZXIgQ09SRVIvR0xPQlIgcmVzZXQgKi8KJiM0MzsJCWljZV9sb2FkX3BrZyhOVUxMLCBwZik7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogUEZSIGNhbiBsb3NlIERWTSByZWNpcGVzIGFmdGVyIHN5c3RlbSBzdXNwZW5kLiAqLwomIzQzOwlpZiAoIWljZV9pc19zYWZlX21vZGUocGYpICZhbXA7JmFtcDsgcmVzZXRfdHlwZSA9PSBJQ0VfUkVTRVRfUEZSICZhbXA7JmFtcDsKJiM0MzsJICAgIGljZV9pc19kdm1fZW5hKGh3KSkgewomIzQzOwkJZXJyID0gaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKGh3KTsKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsJCQlkZXZfZXJyKGRldiwgJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBkZWZhdWx0IERWTSByZWNpcGVzOiAlZFxuJiMzNDssCiYjNDM7CQkJCWVycik7CiYjNDM7CQkJZ290byBlcnJfaW5pdF9jdHJscTsKJiM0MzsJCX0KIAl9CiAKIAllcnIgPSBpY2VfY2xlYXJfcGZfY2ZnKGh3KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5jCmluZGV4IGZiNTI2Y2I4NDc3NjQuLjU4ZmIxOTE5MDNhNzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuYwpAQCAtMjQwLDcgJiM0MzsyNDAsNyBAQCBzdGF0aWMgc3RydWN0IGljZV91cGRhdGVfcmVjaXBlX2xrdXBfaWR4X3BhcmFtcyBpY2VfZHZtX2RmbHRfcmVjaXBlc1tdID0gewogICogaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzIC0gdXBkYXRlIGRlZmF1bHQgc3dpdGNoIHJlY2lwZXMgaW4gRFZNCiAgKiBAaHc6IGhhcmR3YXJlIHN0cnVjdHVyZSB1c2VkIHRvIHVwZGF0ZSB0aGUgcmVjaXBlcwogICovCi1zdGF0aWMgaW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodykKJiM0MztpbnQgaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKHN0cnVjdCBpY2VfaHcgKmh3KQogewogCXVuc2lnbmVkIGxvbmcgaTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmgKaW5kZXggYTBmYjc0M2QwOGUyMC4uNWRjNzA1NDM1ZjU2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oCkBAIC04LDYgJiM0Mzs4LDcgQEAgc3RydWN0IGljZV9odzsKIAogYm9vbCBpY2VfaXNfZHZtX2VuYShzdHJ1Y3QgaWNlX2h3ICpodyk7CiBpbnQgaWNlX3NldF92bGFuX21vZGUoc3RydWN0IGljZV9odyAqaHcpOwomIzQzO2ludCBpY2VfZHZtX3VwZGF0ZV9kZmx0X3JlY2lwZXMoc3RydWN0IGljZV9odyAqaHcpOwogdm9pZCBpY2VfcG9zdF9wa2dfZHdubGRfdmxhbl9tb2RlX2NmZyhzdHJ1Y3QgaWNlX2h3ICpodyk7CiAKICNlbmRpZiAvKiBfSUNFX1ZMQU5fTU9ERV9IICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1ODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJpYWdlIFRpbWU6IEFzc2Vzc2luZyB0aGUgYGljZWAgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIGl0JiMzOTtzIGZ1enotd29ydGh5LCBrZWVwaW5nIHRoZSB0cmlhZ2UgY3JpdGVyaWEgZnJvbnQgYW5kIGNlbnRlci4gRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBjb2RlIGlzIGJlaW5nIHRvdWNoZWQuIE9rYXksIEkmIzM5O3ZlIGdvdDogYGljZS5oYCwgYGljZV9hZGFwdGVyLmMvaGAsIGBpY2VfZXRodG9vbF9mZGlyLmNgLCBgaWNlX21haW4uY2AsIGFuZCBgaWNlX3ZsYW5fbW9kZS5jL2hgLiBTdGFuZGFyZCBzdHVmZiwgYWxsIHdpdGhpbiB0aGUgSW50ZWwgRXRoZXJuZXQgQ29udHJvbGxlciBFODAwIHNlcmllcyBkcml2ZXIsIG9yIGBpY2VgLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogaXMgdGhpcyBhIGhhcmR3YXJlLWRlcGVuZGVudCBkcml2ZXI/IERvZXMgaXQgcmVseSBvbiBzcGVjaWZpYyBQQ0llIGhhcmR3YXJlIHRoYXQmIzM5O3Mgbm90IGVtdWxhdGVkIGluIHRoZSB1c3VhbCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzPyBMZXQmIzM5O3MgcmVmcmVzaCBvdXIgbWVtb3J5IG9uIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgc3BlY2lmaWNhbGx5IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gV2UmIzM5O3JlIGxvb2tpbmcgZm9yIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0JiMzOTtzIHRvdWdoIHRvIHJlYWNoIGluIGEgc3RhbmRhcmQgc2V0dXAuCgpNeSB1bmRlcnN0YW5kaW5nLCBmcm9tIGV4cGVyaWVuY2UsIGlzIHRoYXQgdGhlIGBpY2VgIGRyaXZlciBpcyBmb3IgSW50ZWwmIzM5O3MgQ29sdW1iaWF2aWxsZSAoRTgxMCkgYW5kIEU4MDAgc2VyaWVzIGVudGVycHJpc2UgTklDcy4gVGhlc2UgYXJlIFBDSWUgbmV0d29yayBpbnRlcmZhY2UgY2FyZHMsIHRoZSAxMDBHYkUgdmFyaWV0eS4gVGhleSYjMzk7cmUgZGVmaW5pdGVseSBub3QgZW11bGF0ZWQgYnkgdGhlIHN0YW5kYXJkIFFFTVUgZGV2aWNlcyB0aGF0IHdlJiMzOTtkIHVzZSwgbGlrZSBlMTAwMCwgaWdiLCBhbmQgdmlydGlvLW5ldC4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmb3IgYW55IHZpcnR1YWwgb3IgbW9jayBkZXZpY2VzIHVzaW5nIGBDT05GSUdfSUNFYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSB0aGF0JiMzOTtzIGRpZmZpY3VsdCB0byByZWFjaCwgYnV0IGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSUNFXFxiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjY4PWNvbmZpZyBJNDBFVkZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjkxOmNvbmZpZyBJQ0VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjkyLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODAwIFNlcmllcyBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDk6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzLCB0YXJnZXRpbmcgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgSW50ZWwgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGlzIEludGVsIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBvcHRpb25zLiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ2AsIGFuZCBzcGVjaWZpY2FsbHksIGFyb3VuZCBsaW5lIDI5MS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIGZlYXR1cmUgZW5hYmxlIGZsYWdzIGFyZSBncm91cGVkLCBvciBhdCBsZWFzdCBhIHJlbGV2YW50IGdyb3VwaW5nIG9mIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyByZWxhdGVkIHRvIHRoZSBkcml2ZXImIzM5O3MgZGVmYXVsdCBzZXR0aW5ncy4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBncmFzcCB0aGUgcmVsZXZhbnQgcGFyYW1ldGVycyB0aGVyZSwgbWF5YmUgYSBoYXJkd2FyZSBzcGVjaWZpYyBmZWF0dXJlLCBvciBhIGRlYnVnIHNldHRpbmcuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIGhhbmRsZXMgWC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwOToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI5MDpcdFxuIDI5MTpcdGNvbmZpZyBJQ0VcbiAyOTI6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgU3VwcG9ydFwmIzM0O1xuIDI5MzpcdFx0ZGVmYXVsdCBuXG4gMjk0Olx0XHRkZXBlbmRzIG9uIFBDSV9NU0lcbiAyOTU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAyOTY6XHRcdGRlcGVuZHMgb24gR05TUyB8fCBHTlNTID0gblxuIDI5NzpcdFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbiAyOTg6XHRcdHNlbGVjdCBESU1MSUJcbiAyOTk6XHRcdHNlbGVjdCBMSUJFVEhfWERQXG4gMzAwOlx0XHRzZWxlY3QgTElCSUVcbiAzMDE6XHRcdHNlbGVjdCBMSUJJRV9BRE1JTlFcbiAzMDI6XHRcdHNlbGVjdCBMSUJJRV9GV0xPRyBpZiBERUJVR19GU1xuIDMwMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gMzA0Olx0XHRzZWxlY3QgUEFDS0lOR1xuIDMwNTpcdFx0c2VsZWN0IFBMRE1GV1xuIDMwNjpcdFx0c2VsZWN0IERQTExcbiAzMDc6XHRcdGhlbHBcbiAzMDg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODAwIFNlcmllcyBvZlxuIDMwOTpcdFx0ICBkZXZpY2VzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHlvdXIgYWRhcHRlciwgZ29cbiAzMTA6XHRcdCAgdG8gdGhlIEFkYXB0ZXIgXHUwMDI2IERyaXZlciBJRCBHdWlkZSB0aGF0IGNhbiBiZSBsb2NhdGVkIGF0OlxuIDMxMTpcdFxuIDMxMjpcdFx0ICBcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cdTAwM2VcbiAzMTM6XHRcbiAzMTQ6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gMzE1Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2ljZS5yc3RcdTAwM2UuXG4gMzE2Olx0XG4gMzE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAzMTg6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaWNlLlxuIDMxOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA5OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MDcKCQkJCQkJCW91dHB1dDogMTA5CgkJCQkJCQl0aG91Z2h0czogNDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSAmIzM0O2ljZSYjMzQ7IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyB0aGUgYGljZWAgZHJpdmVyLCB3aGljaCBJIGtub3cgaXMgdGhlIEludGVsIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgZHJpdmVyLCBpcyB0aGUgZm9jdXMgaGVyZS4gSXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBuZXR3b3JrIGRyaXZlciwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcgYmVjYXVzZSBpdCByZXF1aXJlcyB0aGUgSW50ZWwgRTgwMCBzZXJpZXMgaGFyZHdhcmUgQVNJQy4gU3RhbmRhcmQgUUVNVSwgd2hpY2ggaXMgb3VyIHByaW1hcnkgZW52aXJvbm1lbnQgZm9yIGZ1enppbmcsIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhvc2UgY2FyZHMuCgpNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQsIGJhc2VkIG9uIHNlY3Rpb24gMiBvZiB0aGUgZ3VpZGVsaW5lcywgY29kZSB0aGF0IGRlcGVuZHMgb24gJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBsaWtlIHRoZXNlIHZlbmRvci1zcGVjaWZpYyBQQ0llIGNvbXBvbmVudHMgYXJlIG5vdCBzdWl0YWJsZSBmb3Igc3RhbmRhcmQgZnV6emluZy4gVGhlIHNlY3Rpb24gc3BlY2lmaWNhbGx5IGNhbGxzIG91dCBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YCBhcyBleGFtcGxlcywgYWxsIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZS4gVGhpcyBpcyBhIGNydWNpYWwgZGV0YWlsIGZvciBkZXRlcm1pbmluZyBgV29ydGhGdXp6aW5nYC4KCk5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgdG8gdGhpcyBzcGVjaWZpYyBgaWNlYCBkcml2ZXIuIEEgcXVpY2sgc2NhbiBvZiB0aGUgbW9kaWZpZWQgZmlsZXPigJRgaWNlLmhgLCBgaWNlX2FkYXB0ZXIuY2AsIGBpY2VfYWRhcHRlci5oYCwgYGljZV9ldGh0b29sX2ZkaXIuY2AsIGBpY2VfbWFpbi5jYCwgYGljZV92bGFuX21vZGUuY2AsIGFuZCBgaWNlX3ZsYW5fbW9kZS5oYOKAlGNvbmZpcm1zIHRoZXkgYWxsIGxpdmUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2AgZGlyZWN0b3J5LiBOb25lIG9mIHRoZW0gYXBwZWFyIHRvIHRvdWNoIGFueSBjb3JlIG5ldHdvcmtpbmcgb3IgdmlydHVhbCBuZXRkZXYgY29tcG9uZW50cywgd2hpY2ggaXMgY3JpdGljYWwuCgpUaGVyZWZvcmUsIHNpbmNlIHRoZSBwYXRjaCBkZWFscyBzb2xlbHkgd2l0aCB0aGUgYGljZWAgZHJpdmVyJiMzOTtzIGhhbmRsaW5nIG9mIHJlc2V0IHNlcmlhbGl6YXRpb24gYW5kIEZsb3cgRGlyZWN0b3IvRFZNIGZpbHRlciByZXBsYXksIHdoaWNoIGlzIGFsbCBkZXBlbmRlbnQgb24gaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQsIGl0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBvdXIgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhpcyBsZWFkcyBtZSB0byBjb25jbHVkZTogYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gSSB3b24mIzM5O3QgYmUgZW5hYmxpbmcgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMgKGBFbmFibGVDb25maWdzID0gW11gKSBvciBmb2N1c2luZyBvbiBhbnkgc3BlY2lmaWMgc3ltYm9scyAoYEZvY3VzU3ltYm9scyA9IFtdYCkuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgbW9kaWZpZWQgY29kZSYjMzk7cyBleGVjdXRpb24gcGF0aCBpcyBibG9ja2VkIGJ5IHRoZSBsYWNrIG9mIGVtdWxhdGVkIGhhcmR3YXJlLgoKT2theSwgSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgIHRvIHJlY29yZCB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA5OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgKGBpY2VgKSBkcml2ZXIsIHNwZWNpZmljYWxseSBoYW5kbGluZyBGbG93IERpcmVjdG9yIGZpbHRlciBoYW5kbGUgY2xlYW51cCwgcmVidWlsZCBzZXJpYWxpemF0aW9uIHZpYSBhbiBhZGFwdGVyLWxldmVsIG11dGV4LCBhbmQgcmVjaXBlIHVwZGF0ZXMgb24gcmVzZXQuIFRoZSBgaWNlYCBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0tWTSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODAwIFNlcmllcyAoYGljZWApIGRyaXZlciwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIEZsb3cgRGlyZWN0b3IgZmlsdGVyIGhhbmRsZSBjbGVhbnVwLCByZWJ1aWxkIHNlcmlhbGl6YXRpb24gdmlhIGFuIGFkYXB0ZXItbGV2ZWwgbXV0ZXgsIGFuZCByZWNpcGUgdXBkYXRlcyBvbiByZXNldC4gVGhlIGBpY2VgIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvS1ZNIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDk6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjI4LjUyOTM1NjY0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTM5NDE0OTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgKGBpY2VgKSBkcml2ZXIsIHNwZWNpZmljYWxseSBoYW5kbGluZyBGbG93IERpcmVjdG9yIGZpbHRlciBoYW5kbGUgY2xlYW51cCwgcmVidWlsZCBzZXJpYWxpemF0aW9uIHZpYSBhbiBhZGFwdGVyLWxldmVsIG11dGV4LCBhbmQgcmVjaXBlIHVwZGF0ZXMgb24gcmVzZXQuIFRoZSBgaWNlYCBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0tWTSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwOToyOToyOC41MjkzNjM1ODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMTM1NjcxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDgyOTM5N2JiODNmNGNmMWUyZTAzMTMyODk5YWE5ZjcyZWQwOWQxZGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBTZXAgNCAwOToyOToyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmhcXG5pbmRleCBkYjNjNzAxNWM1NmM0Li40NzM5ZmY4ODJiOWVjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxcbkBAIC0xMDI5LDYgKzEwMjksNyBAQCBpY2VfZ2V0X2ZkaXJfZmx0cl9pZHMoc3RydWN0IGljZV9odyAqaHcsIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQsXFxuIFxcdFxcdCAgICAgIHUzMiAqcnVsZV9sb2NzKTtcXG4gdm9pZCBpY2VfZmRpcl9yZW1fYWRxX2Nobmwoc3RydWN0IGljZV9odyAqaHcsIHUxNiB2c2lfaWR4KTtcXG4gdm9pZCBpY2VfZmRpcl9yZWxlYXNlX2Zsb3dzKHN0cnVjdCBpY2VfaHcgKmh3KTtcXG4rdm9pZCBpY2VfZmRpcl9jbGVhcl9mbG93X2hhbmRsZXMoc3RydWN0IGljZV9odyAqaHcpO1xcbiB2b2lkIGljZV9mZGlyX3JlcGxheV9mbG93cyhzdHJ1Y3QgaWNlX2h3ICpodyk7XFxuIHZvaWQgaWNlX2ZkaXJfcmVwbGF5X2ZsdHJzKHN0cnVjdCBpY2VfcGYgKnBmKTtcXG4gaW50IGljZV9mZGlyX2NyZWF0ZV9kZmx0X3J1bGVzKHN0cnVjdCBpY2VfcGYgKnBmKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuY1xcbmluZGV4IDJkYzM2MjlkNmQwZjYuLjdkZTkyMjNlOTcxYTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuY1xcbkBAIC02NCw2ICs2NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWNlX2FkYXB0ZXIgKmljZV9hZGFwdGVyX25ldyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXR4cV9jdHhfbG9jayk7XFxuIFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShhZGFwdGVyLVxcdTAwM2VjcGlfcGh5X2xvY2spOyBpKyspXFxuIFxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWNwaV9waHlfbG9ja1tpXSk7XFxuK1xcdG11dGV4X2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJlYnVpbGRfbG9jayk7XFxuIFxcdHJlZmNvdW50X3NldChcXHUwMDI2YWRhcHRlci1cXHUwMDNlcmVmY291bnQsIDEpO1xcbiBcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2YWRhcHRlci1cXHUwMDNlcG9ydHMubG9jayk7XFxuQEAgLTc3LDYgKzc4LDcgQEAgc3RhdGljIHZvaWQgaWNlX2FkYXB0ZXJfZnJlZShzdHJ1Y3QgaWNlX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdFdBUk5fT04oIWxpc3RfZW1wdHkoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBvcnRzLnBvcnRzKSk7XFxuIFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShhZGFwdGVyLVxcdTAwM2VjcGlfcGh5X2xvY2spOyBpKyspXFxuIFxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWNwaV9waHlfbG9ja1tpXSk7XFxuK1xcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJlYnVpbGRfbG9jayk7XFxuIFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBvcnRzLmxvY2spO1xcbiBcXG4gXFx0a2ZyZWUoYWRhcHRlcik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmhcXG5pbmRleCA0ZjY5NWYzMmRhM2Q4Li5mOTI2NWRlOTczZWZjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmhcXG5AQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgaWNlX3BvcnRfbGlzdCB7XFxuICAqIEBjcGlfcGh5X2xvY2s6IFBlci1QSFkgbXV0ZXggc2VyaWFsaXppbmcgQ1BJIFJFUS9BQ0sgdHJhbnNhY3Rpb25zLlxcbiAgKiAgICAgICAgICAgICAgIEluZGV4IDAgPSBQSFkwLCBpbmRleCAxID0gUEhZMS4gVXNlZCBvbiBFODI1QyBkZXZpY2VzLlxcbiAgKiBAY3RybF9wZjogQ29udHJvbCBQRiBvZiB0aGUgYWRhcHRlclxcbisgKiBAcmVidWlsZF9sb2NrOiBzZXJpYWxpemUgUEZSIHJlY292ZXJ5IGFjcm9zcyBQRnMgb2YgdGhlIHNhbWUgYWRhcHRlclxcbiAgKiBAcG9ydHM6IFBvcnRzIGxpc3RcXG4gICogQGluZGV4OiA2NC1iaXQgaW5kZXggY2FjaGVkIGZvciBjb2xsaXNpb24gZGV0ZWN0aW9uIG9uIDMyYml0IHN5c3RlbXNcXG4gICovXFxuQEAgLTQ4LDYgKzQ5LDggQEAgc3RydWN0IGljZV9hZGFwdGVyIHtcXG4gXFx0c3BpbmxvY2tfdCB0eHFfY3R4X2xvY2s7XFxuIFxcdC8qIFNlcmlhbGl6ZSBDUEkgUkVRL0FDSyB0cmFuc2FjdGlvbnMgcGVyIFBIWSAoRTgyNUMgb25seSkgKi9cXG4gXFx0c3RydWN0IG11dGV4IGNwaV9waHlfbG9ja1tJQ0VfRTgyNV9NQVhfUEhZU107XFxuK1xcdC8qIFNlcmlhbGl6ZSBQRlIgcmVjb3ZlcnkgdG91Y2hpbmcgc2hhcmVkIEZXIGdsb2JhbCBzdGF0ZSAqL1xcbitcXHRzdHJ1Y3QgbXV0ZXggcmVidWlsZF9sb2NrO1xcbiBcXG4gXFx0c3RydWN0IGljZV9wZiAqY3RybF9wZjtcXG4gXFx0c3RydWN0IGljZV9wb3J0X2xpc3QgcG9ydHM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbF9mZGlyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jXFxuaW5kZXggYWNlZWMxODRlODliMi4uZmFhMTZiNWExMmMwZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sX2ZkaXIuY1xcbkBAIC00MjgsNiArNDI4LDI3IEBAIHZvaWQgaWNlX2ZkaXJfcmVsZWFzZV9mbG93cyhzdHJ1Y3QgaWNlX2h3ICpodylcXG4gXFx0XFx0aWNlX2ZkaXJfZXJhc2VfZmxvd19mcm9tX2h3KGh3LCBJQ0VfQkxLX0ZELCBmbG93KTtcXG4gfVxcbiBcXG4rLyoqXFxuKyAqIGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyAtIGNsZWFyIGhhbmRsZXMgZnJlZWQgZHVyaW5nIHJlc2V0XFxuKyAqIEBodzogcG9pbnRlciB0byBIVyBpbnN0YW5jZVxcbisgKi9cXG4rdm9pZCBpY2VfZmRpcl9jbGVhcl9mbG93X2hhbmRsZXMoc3RydWN0IGljZV9odyAqaHcpXFxuK3tcXG4rXFx0aW50IGZsb3c7XFxuK1xcbitcXHRmb3IgKGZsb3cgPSAwOyBmbG93IFxcdTAwM2MgSUNFX0ZMVFJfUFRZUEVfTUFYOyBmbG93KyspIHtcXG4rXFx0XFx0c3RydWN0IGljZV9mZF9od19wcm9mICpwcm9mID0gaHctXFx1MDAzZWZkaXJfcHJvZltmbG93XTtcXG4rXFx0XFx0aW50IHR1biwgaTtcXG4rXFxuK1xcdFxcdGlmICghcHJvZilcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRmb3IgKHR1biA9IDA7IHR1biBcXHUwMDNjIElDRV9GRF9IV19TRUdfTUFYOyB0dW4rKylcXG4rXFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByb2YtXFx1MDAzZWNudDsgaSsrKVxcbitcXHRcXHRcXHRcXHRwcm9mLVxcdTAwM2VlbnRyeV9oW2ldW3R1bl0gPSAwO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpY2VfZmRpcl9yZXBsYXlfZmxvd3MgLSByZXBsYXkgSFcgRmxvdyBEaXJlY3RvciBmaWx0ZXIgaW5mb1xcbiAgKiBAaHc6IHBvaW50ZXIgdG8gSFcgaW5zdGFuY2VcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbmluZGV4IGQ4ODgzNTQ4MmQzYWEuLjdhYTEyMzU0NDczMTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbkBAIC02MDEsNiArNjAxLDggQEAgaWNlX3ByZXBhcmVfZm9yX3Jlc2V0KHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9yZXNldF9yZXEgcmVzZXRfdHlwZSlcXG4gXFx0XFx0bmV0aWZfZGV2aWNlX2RldGFjaCh2c2ktXFx1MDAzZW5ldGRldik7XFxuIHNraXA6XFxuIFxcbitcXHRpZiAoaHctXFx1MDAzZWZkaXJfcHJvZilcXG4rXFx0XFx0aWNlX2ZkaXJfY2xlYXJfZmxvd19oYW5kbGVzKGh3KTtcXG4gXFx0LyogY2xlYXIgU1cgZmlsdGVyaW5nIERCICovXFxuIFxcdGljZV9jbGVhcl9od190YmxzKGh3KTtcXG4gXFx0LyogZGlzYWJsZSB0aGUgVlNJcyBhbmQgdGhlaXIgcXVldWVzIHRoYXQgYXJlIG5vdCBhbHJlYWR5IERPV04gKi9cXG5AQCAtNjU5LDcgKzY2MSw5IEBAIHN0YXRpYyB2b2lkIGljZV9kb19yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpXFxuIFxcdCAqL1xcbiBcXHRpZiAocmVzZXRfdHlwZSA9PSBJQ0VfUkVTRVRfUEZSKSB7XFxuIFxcdFxcdHBmLVxcdTAwM2VwZnJfY291bnQrKztcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZXJlYnVpbGRfbG9jayk7XFxuIFxcdFxcdGljZV9yZWJ1aWxkKHBmLCByZXNldF90eXBlKTtcXG4rXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwZi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlcmVidWlsZF9sb2NrKTtcXG4gXFx0XFx0Y2xlYXJfYml0KElDRV9QUkVQQVJFRF9GT1JfUkVTRVQsIHBmLVxcdTAwM2VzdGF0ZSk7XFxuIFxcdFxcdGNsZWFyX2JpdChJQ0VfUEZSX1JFUSwgcGYtXFx1MDAzZXN0YXRlKTtcXG4gXFx0XFx0d2FrZV91cChcXHUwMDI2cGYtXFx1MDAzZXJlc2V0X3dhaXRfcXVldWUpO1xcbkBAIC03MDQsNyArNzA4LDkgQEAgc3RhdGljIHZvaWQgaWNlX3Jlc2V0X3N1YnRhc2soc3RydWN0IGljZV9wZiAqcGYpXFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdC8qIGRvbmUgd2l0aCByZXNldC4gc3RhcnQgcmVidWlsZCAqL1xcbiBcXHRcXHRcXHRwZi1cXHUwMDNlaHcucmVzZXRfb25nb2luZyA9IGZhbHNlO1xcbitcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwZi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlcmVidWlsZF9sb2NrKTtcXG4gXFx0XFx0XFx0aWNlX3JlYnVpbGQocGYsIHJlc2V0X3R5cGUpO1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBmLVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VyZWJ1aWxkX2xvY2spO1xcbiBcXHRcXHRcXHQvKiBjbGVhciBiaXQgdG8gcmVzdW1lIG5vcm1hbCBvcGVyYXRpb25zLCBidXRcXG4gXFx0XFx0XFx0ICogSUNFX05FRURTX1JFU1RBUlQgYml0IGlzIHNldCBpbiBjYXNlIHJlYnVpbGQgZmFpbGVkXFxuIFxcdFxcdFxcdCAqL1xcbkBAIC03Njc0LDE0ICs3NjgwLDI3IEBAIHN0YXRpYyB2b2lkIGljZV9yZWJ1aWxkKHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9yZXNldF9yZXEgcmVzZXRfdHlwZSlcXG4gXFx0XFx0Z290byBlcnJfaW5pdF9jdHJscTtcXG4gXFx0fVxcbiBcXG4tXFx0LyogaWYgRERQIHdhcyBwcmV2aW91c2x5IGxvYWRlZCBzdWNjZXNzZnVsbHkgKi9cXG4tXFx0aWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSkge1xcbi1cXHRcXHQvKiByZWxvYWQgdGhlIFNXIERCIG9mIGZpbHRlciB0YWJsZXMgKi9cXG4tXFx0XFx0aWYgKHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUilcXG4tXFx0XFx0XFx0aWNlX2ZpbGxfYmxrX3RibHMoaHcpO1xcbi1cXHRcXHRlbHNlXFxuLVxcdFxcdFxcdC8qIFJlbG9hZCBERFAgUGFja2FnZSBhZnRlciBDT1JFUi9HTE9CUiByZXNldCAqL1xcbi1cXHRcXHRcXHRpY2VfbG9hZF9wa2coTlVMTCwgcGYpO1xcbitcXHRpZiAoIWljZV9pc19zYWZlX21vZGUocGYpIFxcdTAwMjZcXHUwMDI2IHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUikge1xcbitcXHRcXHRlbnVtIGljZV9kZHBfc3RhdGUgc3RhdGU7XFxuK1xcbitcXHRcXHRzdGF0ZSA9IGljZV9pbml0X3BrZyhodywgaHctXFx1MDAzZXBrZ19jb3B5LCBody1cXHUwMDNlcGtnX3NpemUpO1xcbitcXHRcXHRpY2VfbG9nX3BrZ19pbml0KGh3LCBzdGF0ZSk7XFxuK1xcdFxcdGlmICghaWNlX2lzX2luaXRfcGtnX3N1Y2Nlc3NmdWwoc3RhdGUpKVxcbitcXHRcXHRcXHRnb3RvIGVycl9pbml0X2N0cmxxO1xcbitcXHR9IGVsc2UgaWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSkge1xcbitcXHRcXHQvKiBSZWxvYWQgRERQIFBhY2thZ2UgYWZ0ZXIgQ09SRVIvR0xPQlIgcmVzZXQgKi9cXG4rXFx0XFx0aWNlX2xvYWRfcGtnKE5VTEwsIHBmKTtcXG4rXFx0fVxcbitcXG4rXFx0LyogUEZSIGNhbiBsb3NlIERWTSByZWNpcGVzIGFmdGVyIHN5c3RlbSBzdXNwZW5kLiAqL1xcbitcXHRpZiAoIWljZV9pc19zYWZlX21vZGUocGYpIFxcdTAwMjZcXHUwMDI2IHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUiBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgaWNlX2lzX2R2bV9lbmEoaHcpKSB7XFxuK1xcdFxcdGVyciA9IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhodyk7XFxuK1xcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJmYWlsZWQgdG8gcmVzdG9yZSBkZWZhdWx0IERWTSByZWNpcGVzOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ZXJyKTtcXG4rXFx0XFx0XFx0Z290byBlcnJfaW5pdF9jdHJscTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRlcnIgPSBpY2VfY2xlYXJfcGZfY2ZnKGh3KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmNcXG5pbmRleCBmYjUyNmNiODQ3NzY0Li41OGZiMTkxOTAzYTc1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5jXFxuQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgc3RydWN0IGljZV91cGRhdGVfcmVjaXBlX2xrdXBfaWR4X3BhcmFtcyBpY2VfZHZtX2RmbHRfcmVjaXBlc1tdID0ge1xcbiAgKiBpY2VfZHZtX3VwZGF0ZV9kZmx0X3JlY2lwZXMgLSB1cGRhdGUgZGVmYXVsdCBzd2l0Y2ggcmVjaXBlcyBpbiBEVk1cXG4gICogQGh3OiBoYXJkd2FyZSBzdHJ1Y3R1cmUgdXNlZCB0byB1cGRhdGUgdGhlIHJlY2lwZXNcXG4gICovXFxuLXN0YXRpYyBpbnQgaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKHN0cnVjdCBpY2VfaHcgKmh3KVxcbitpbnQgaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKHN0cnVjdCBpY2VfaHcgKmh3KVxcbiB7XFxuIFxcdHVuc2lnbmVkIGxvbmcgaTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oXFxuaW5kZXggYTBmYjc0M2QwOGUyMC4uNWRjNzA1NDM1ZjU2YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuaFxcbkBAIC04LDYgKzgsNyBAQCBzdHJ1Y3QgaWNlX2h3O1xcbiBcXG4gYm9vbCBpY2VfaXNfZHZtX2VuYShzdHJ1Y3QgaWNlX2h3ICpodyk7XFxuIGludCBpY2Vfc2V0X3ZsYW5fbW9kZShzdHJ1Y3QgaWNlX2h3ICpodyk7XFxuK2ludCBpY2VfZHZtX3VwZGF0ZV9kZmx0X3JlY2lwZXMoc3RydWN0IGljZV9odyAqaHcpO1xcbiB2b2lkIGljZV9wb3N0X3BrZ19kd25sZF92bGFuX21vZGVfY2ZnKHN0cnVjdCBpY2VfaHcgKmh3KTtcXG4gXFxuICNlbmRpZiAvKiBfSUNFX1ZMQU5fTU9ERV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjI5LjE2MTUwNzA1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTI1MDcyNTE4OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIChgaWNlYCkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRmxvdyBEaXJlY3RvciBmaWx0ZXIgaGFuZGxlIGNsZWFudXAsIHJlYnVpbGQgc2VyaWFsaXphdGlvbiB2aWEgYW4gYWRhcHRlci1sZXZlbCBtdXRleCwgYW5kIHJlY2lwZSB1cGRhdGVzIG9uIHJlc2V0LiBUaGUgYGljZWAgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgSW50ZWwgRTgwMCBzZXJpZXMgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9LVk0gZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MjkzOTdiYjgzZjRjZjFlMmUwMzEzMjg5OWFhOWY3MmVkMDlkMWRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwOToyOToyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxuaW5kZXggZGIzYzcwMTVjNTZjNC4uNDczOWZmODgyYjllYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oXG5AQCAtMTAyOSw2ICsxMDI5LDcgQEAgaWNlX2dldF9mZGlyX2ZsdHJfaWRzKHN0cnVjdCBpY2VfaHcgKmh3LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLFxuIFx0XHQgICAgICB1MzIgKnJ1bGVfbG9jcyk7XG4gdm9pZCBpY2VfZmRpcl9yZW1fYWRxX2Nobmwoc3RydWN0IGljZV9odyAqaHcsIHUxNiB2c2lfaWR4KTtcbiB2b2lkIGljZV9mZGlyX3JlbGVhc2VfZmxvd3Moc3RydWN0IGljZV9odyAqaHcpO1xuK3ZvaWQgaWNlX2ZkaXJfY2xlYXJfZmxvd19oYW5kbGVzKHN0cnVjdCBpY2VfaHcgKmh3KTtcbiB2b2lkIGljZV9mZGlyX3JlcGxheV9mbG93cyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gdm9pZCBpY2VfZmRpcl9yZXBsYXlfZmx0cnMoc3RydWN0IGljZV9wZiAqcGYpO1xuIGludCBpY2VfZmRpcl9jcmVhdGVfZGZsdF9ydWxlcyhzdHJ1Y3QgaWNlX3BmICpwZik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuY1xuaW5kZXggMmRjMzYyOWQ2ZDBmNi4uN2RlOTIyM2U5NzFhNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuY1xuQEAgLTY0LDYgKzY0LDcgQEAgc3RhdGljIHN0cnVjdCBpY2VfYWRhcHRlciAqaWNlX2FkYXB0ZXJfbmV3KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2V0eHFfY3R4X2xvY2spO1xuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoYWRhcHRlci1cdTAwM2VjcGlfcGh5X2xvY2spOyBpKyspXG4gXHRcdG11dGV4X2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2VjcGlfcGh5X2xvY2tbaV0pO1xuK1x0bXV0ZXhfaW5pdChcdTAwMjZhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRyZWZjb3VudF9zZXQoXHUwMDI2YWRhcHRlci1cdTAwM2VyZWZjb3VudCwgMSk7XG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNlcG9ydHMubG9jayk7XG5AQCAtNzcsNiArNzgsNyBAQCBzdGF0aWMgdm9pZCBpY2VfYWRhcHRlcl9mcmVlKHN0cnVjdCBpY2VfYWRhcHRlciAqYWRhcHRlcilcbiBcdFdBUk5fT04oIWxpc3RfZW1wdHkoXHUwMDI2YWRhcHRlci1cdTAwM2Vwb3J0cy5wb3J0cykpO1xuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoYWRhcHRlci1cdTAwM2VjcGlfcGh5X2xvY2spOyBpKyspXG4gXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2YWRhcHRlci1cdTAwM2VjcGlfcGh5X2xvY2tbaV0pO1xuK1x0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNmFkYXB0ZXItXHUwMDNlcG9ydHMubG9jayk7XG4gXG4gXHRrZnJlZShhZGFwdGVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oXG5pbmRleCA0ZjY5NWYzMmRhM2Q4Li5mOTI2NWRlOTczZWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5oXG5AQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgaWNlX3BvcnRfbGlzdCB7XG4gICogQGNwaV9waHlfbG9jazogUGVyLVBIWSBtdXRleCBzZXJpYWxpemluZyBDUEkgUkVRL0FDSyB0cmFuc2FjdGlvbnMuXG4gICogICAgICAgICAgICAgICBJbmRleCAwID0gUEhZMCwgaW5kZXggMSA9IFBIWTEuIFVzZWQgb24gRTgyNUMgZGV2aWNlcy5cbiAgKiBAY3RybF9wZjogQ29udHJvbCBQRiBvZiB0aGUgYWRhcHRlclxuKyAqIEByZWJ1aWxkX2xvY2s6IHNlcmlhbGl6ZSBQRlIgcmVjb3ZlcnkgYWNyb3NzIFBGcyBvZiB0aGUgc2FtZSBhZGFwdGVyXG4gICogQHBvcnRzOiBQb3J0cyBsaXN0XG4gICogQGluZGV4OiA2NC1iaXQgaW5kZXggY2FjaGVkIGZvciBjb2xsaXNpb24gZGV0ZWN0aW9uIG9uIDMyYml0IHN5c3RlbXNcbiAgKi9cbkBAIC00OCw2ICs0OSw4IEBAIHN0cnVjdCBpY2VfYWRhcHRlciB7XG4gXHRzcGlubG9ja190IHR4cV9jdHhfbG9jaztcbiBcdC8qIFNlcmlhbGl6ZSBDUEkgUkVRL0FDSyB0cmFuc2FjdGlvbnMgcGVyIFBIWSAoRTgyNUMgb25seSkgKi9cbiBcdHN0cnVjdCBtdXRleCBjcGlfcGh5X2xvY2tbSUNFX0U4MjVfTUFYX1BIWVNdO1xuK1x0LyogU2VyaWFsaXplIFBGUiByZWNvdmVyeSB0b3VjaGluZyBzaGFyZWQgRlcgZ2xvYmFsIHN0YXRlICovXG4rXHRzdHJ1Y3QgbXV0ZXggcmVidWlsZF9sb2NrO1xuIFxuIFx0c3RydWN0IGljZV9wZiAqY3RybF9wZjtcbiBcdHN0cnVjdCBpY2VfcG9ydF9saXN0IHBvcnRzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbF9mZGlyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2xfZmRpci5jXG5pbmRleCBhY2VlYzE4NGU4OWIyLi5mYWExNmI1YTEyYzBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sX2ZkaXIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sX2ZkaXIuY1xuQEAgLTQyOCw2ICs0MjgsMjcgQEAgdm9pZCBpY2VfZmRpcl9yZWxlYXNlX2Zsb3dzKHN0cnVjdCBpY2VfaHcgKmh3KVxuIFx0XHRpY2VfZmRpcl9lcmFzZV9mbG93X2Zyb21faHcoaHcsIElDRV9CTEtfRkQsIGZsb3cpO1xuIH1cbiBcbisvKipcbisgKiBpY2VfZmRpcl9jbGVhcl9mbG93X2hhbmRsZXMgLSBjbGVhciBoYW5kbGVzIGZyZWVkIGR1cmluZyByZXNldFxuKyAqIEBodzogcG9pbnRlciB0byBIVyBpbnN0YW5jZVxuKyAqL1xuK3ZvaWQgaWNlX2ZkaXJfY2xlYXJfZmxvd19oYW5kbGVzKHN0cnVjdCBpY2VfaHcgKmh3KVxuK3tcbitcdGludCBmbG93O1xuK1xuK1x0Zm9yIChmbG93ID0gMDsgZmxvdyBcdTAwM2MgSUNFX0ZMVFJfUFRZUEVfTUFYOyBmbG93KyspIHtcbitcdFx0c3RydWN0IGljZV9mZF9od19wcm9mICpwcm9mID0gaHctXHUwMDNlZmRpcl9wcm9mW2Zsb3ddO1xuK1x0XHRpbnQgdHVuLCBpO1xuK1xuK1x0XHRpZiAoIXByb2YpXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdGZvciAodHVuID0gMDsgdHVuIFx1MDAzYyBJQ0VfRkRfSFdfU0VHX01BWDsgdHVuKyspXG4rXHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJvZi1cdTAwM2VjbnQ7IGkrKylcbitcdFx0XHRcdHByb2YtXHUwMDNlZW50cnlfaFtpXVt0dW5dID0gMDtcbitcdH1cbit9XG4rXG4gLyoqXG4gICogaWNlX2ZkaXJfcmVwbGF5X2Zsb3dzIC0gcmVwbGF5IEhXIEZsb3cgRGlyZWN0b3IgZmlsdGVyIGluZm9cbiAgKiBAaHc6IHBvaW50ZXIgdG8gSFcgaW5zdGFuY2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBkODg4MzU0ODJkM2FhLi43YWExMjM1NDQ3MzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5AQCAtNjAxLDYgKzYwMSw4IEBAIGljZV9wcmVwYXJlX2Zvcl9yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpXG4gXHRcdG5ldGlmX2RldmljZV9kZXRhY2godnNpLVx1MDAzZW5ldGRldik7XG4gc2tpcDpcbiBcbitcdGlmIChody1cdTAwM2VmZGlyX3Byb2YpXG4rXHRcdGljZV9mZGlyX2NsZWFyX2Zsb3dfaGFuZGxlcyhodyk7XG4gXHQvKiBjbGVhciBTVyBmaWx0ZXJpbmcgREIgKi9cbiBcdGljZV9jbGVhcl9od190YmxzKGh3KTtcbiBcdC8qIGRpc2FibGUgdGhlIFZTSXMgYW5kIHRoZWlyIHF1ZXVlcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBET1dOICovXG5AQCAtNjU5LDcgKzY2MSw5IEBAIHN0YXRpYyB2b2lkIGljZV9kb19yZXNldChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpXG4gXHQgKi9cbiBcdGlmIChyZXNldF90eXBlID09IElDRV9SRVNFVF9QRlIpIHtcbiBcdFx0cGYtXHUwMDNlcGZyX2NvdW50Kys7XG4rXHRcdG11dGV4X2xvY2soXHUwMDI2cGYtXHUwMDNlYWRhcHRlci1cdTAwM2VyZWJ1aWxkX2xvY2spO1xuIFx0XHRpY2VfcmVidWlsZChwZiwgcmVzZXRfdHlwZSk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRcdGNsZWFyX2JpdChJQ0VfUFJFUEFSRURfRk9SX1JFU0VULCBwZi1cdTAwM2VzdGF0ZSk7XG4gXHRcdGNsZWFyX2JpdChJQ0VfUEZSX1JFUSwgcGYtXHUwMDNlc3RhdGUpO1xuIFx0XHR3YWtlX3VwKFx1MDAyNnBmLVx1MDAzZXJlc2V0X3dhaXRfcXVldWUpO1xuQEAgLTcwNCw3ICs3MDgsOSBAQCBzdGF0aWMgdm9pZCBpY2VfcmVzZXRfc3VidGFzayhzdHJ1Y3QgaWNlX3BmICpwZilcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHQvKiBkb25lIHdpdGggcmVzZXQuIHN0YXJ0IHJlYnVpbGQgKi9cbiBcdFx0XHRwZi1cdTAwM2Vody5yZXNldF9vbmdvaW5nID0gZmFsc2U7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZwZi1cdTAwM2VhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRcdFx0aWNlX3JlYnVpbGQocGYsIHJlc2V0X3R5cGUpO1xuK1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VhZGFwdGVyLVx1MDAzZXJlYnVpbGRfbG9jayk7XG4gXHRcdFx0LyogY2xlYXIgYml0IHRvIHJlc3VtZSBub3JtYWwgb3BlcmF0aW9ucywgYnV0XG4gXHRcdFx0ICogSUNFX05FRURTX1JFU1RBUlQgYml0IGlzIHNldCBpbiBjYXNlIHJlYnVpbGQgZmFpbGVkXG4gXHRcdFx0ICovXG5AQCAtNzY3NCwxNCArNzY4MCwyNyBAQCBzdGF0aWMgdm9pZCBpY2VfcmVidWlsZChzdHJ1Y3QgaWNlX3BmICpwZiwgZW51bSBpY2VfcmVzZXRfcmVxIHJlc2V0X3R5cGUpXG4gXHRcdGdvdG8gZXJyX2luaXRfY3RybHE7XG4gXHR9XG4gXG4tXHQvKiBpZiBERFAgd2FzIHByZXZpb3VzbHkgbG9hZGVkIHN1Y2Nlc3NmdWxseSAqL1xuLVx0aWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSkge1xuLVx0XHQvKiByZWxvYWQgdGhlIFNXIERCIG9mIGZpbHRlciB0YWJsZXMgKi9cbi1cdFx0aWYgKHJlc2V0X3R5cGUgPT0gSUNFX1JFU0VUX1BGUilcbi1cdFx0XHRpY2VfZmlsbF9ibGtfdGJscyhodyk7XG4tXHRcdGVsc2Vcbi1cdFx0XHQvKiBSZWxvYWQgRERQIFBhY2thZ2UgYWZ0ZXIgQ09SRVIvR0xPQlIgcmVzZXQgKi9cbi1cdFx0XHRpY2VfbG9hZF9wa2coTlVMTCwgcGYpO1xuK1x0aWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSBcdTAwMjZcdTAwMjYgcmVzZXRfdHlwZSA9PSBJQ0VfUkVTRVRfUEZSKSB7XG4rXHRcdGVudW0gaWNlX2RkcF9zdGF0ZSBzdGF0ZTtcbitcbitcdFx0c3RhdGUgPSBpY2VfaW5pdF9wa2coaHcsIGh3LVx1MDAzZXBrZ19jb3B5LCBody1cdTAwM2Vwa2dfc2l6ZSk7XG4rXHRcdGljZV9sb2dfcGtnX2luaXQoaHcsIHN0YXRlKTtcbitcdFx0aWYgKCFpY2VfaXNfaW5pdF9wa2dfc3VjY2Vzc2Z1bChzdGF0ZSkpXG4rXHRcdFx0Z290byBlcnJfaW5pdF9jdHJscTtcbitcdH0gZWxzZSBpZiAoIWljZV9pc19zYWZlX21vZGUocGYpKSB7XG4rXHRcdC8qIFJlbG9hZCBERFAgUGFja2FnZSBhZnRlciBDT1JFUi9HTE9CUiByZXNldCAqL1xuK1x0XHRpY2VfbG9hZF9wa2coTlVMTCwgcGYpO1xuK1x0fVxuK1xuK1x0LyogUEZSIGNhbiBsb3NlIERWTSByZWNpcGVzIGFmdGVyIHN5c3RlbSBzdXNwZW5kLiAqL1xuK1x0aWYgKCFpY2VfaXNfc2FmZV9tb2RlKHBmKSBcdTAwMjZcdTAwMjYgcmVzZXRfdHlwZSA9PSBJQ0VfUkVTRVRfUEZSIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGljZV9pc19kdm1fZW5hKGh3KSkge1xuK1x0XHRlcnIgPSBpY2VfZHZtX3VwZGF0ZV9kZmx0X3JlY2lwZXMoaHcpO1xuK1x0XHRpZiAoZXJyKSB7XG4rXHRcdFx0ZGV2X2VycihkZXYsIFwiZmFpbGVkIHRvIHJlc3RvcmUgZGVmYXVsdCBEVk0gcmVjaXBlczogJWRcXG5cIixcbitcdFx0XHRcdGVycik7XG4rXHRcdFx0Z290byBlcnJfaW5pdF9jdHJscTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0ZXJyID0gaWNlX2NsZWFyX3BmX2NmZyhodyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmNcbmluZGV4IGZiNTI2Y2I4NDc3NjQuLjU4ZmIxOTE5MDNhNzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5jXG5AQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWNlX3VwZGF0ZV9yZWNpcGVfbGt1cF9pZHhfcGFyYW1zIGljZV9kdm1fZGZsdF9yZWNpcGVzW10gPSB7XG4gICogaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzIC0gdXBkYXRlIGRlZmF1bHQgc3dpdGNoIHJlY2lwZXMgaW4gRFZNXG4gICogQGh3OiBoYXJkd2FyZSBzdHJ1Y3R1cmUgdXNlZCB0byB1cGRhdGUgdGhlIHJlY2lwZXNcbiAgKi9cbi1zdGF0aWMgaW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodylcbitpbnQgaWNlX2R2bV91cGRhdGVfZGZsdF9yZWNpcGVzKHN0cnVjdCBpY2VfaHcgKmh3KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgaTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZsYW5fbW9kZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92bGFuX21vZGUuaFxuaW5kZXggYTBmYjc0M2QwOGUyMC4uNWRjNzA1NDM1ZjU2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfdmxhbl9tb2RlLmhcbkBAIC04LDYgKzgsNyBAQCBzdHJ1Y3QgaWNlX2h3O1xuIFxuIGJvb2wgaWNlX2lzX2R2bV9lbmEoc3RydWN0IGljZV9odyAqaHcpO1xuIGludCBpY2Vfc2V0X3ZsYW5fbW9kZShzdHJ1Y3QgaWNlX2h3ICpodyk7XG4raW50IGljZV9kdm1fdXBkYXRlX2RmbHRfcmVjaXBlcyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gdm9pZCBpY2VfcG9zdF9wa2dfZHdubGRfdmxhbl9tb2RlX2NmZyhzdHJ1Y3QgaWNlX2h3ICpodyk7XG4gXG4gI2VuZGlmIC8qIF9JQ0VfVkxBTl9NT0RFX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjI5LjE2MTUwODM1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1NTIwNzU0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJpYWdlIFRpbWU6IEFzc2Vzc2luZyB0aGUgYGljZWAgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiBpdCdzIGZ1enotd29ydGh5LCBrZWVwaW5nIHRoZSB0cmlhZ2UgY3JpdGVyaWEgZnJvbnQgYW5kIGNlbnRlci4gRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBjb2RlIGlzIGJlaW5nIHRvdWNoZWQuIE9rYXksIEkndmUgZ290OiBgaWNlLmhgLCBgaWNlX2FkYXB0ZXIuYy9oYCwgYGljZV9ldGh0b29sX2ZkaXIuY2AsIGBpY2VfbWFpbi5jYCwgYW5kIGBpY2Vfdmxhbl9tb2RlLmMvaGAuIFN0YW5kYXJkIHN0dWZmLCBhbGwgd2l0aGluIHRoZSBJbnRlbCBFdGhlcm5ldCBDb250cm9sbGVyIEU4MDAgc2VyaWVzIGRyaXZlciwgb3IgYGljZWAuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGlzIHRoaXMgYSBoYXJkd2FyZS1kZXBlbmRlbnQgZHJpdmVyPyBEb2VzIGl0IHJlbHkgb24gc3BlY2lmaWMgUENJZSBoYXJkd2FyZSB0aGF0J3Mgbm90IGVtdWxhdGVkIGluIHRoZSB1c3VhbCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzPyBMZXQncyByZWZyZXNoIG91ciBtZW1vcnkgb24gdGhlIHRyaWFnZSBndWlkZWxpbmVzLCBzcGVjaWZpY2FsbHkgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLiBXZSdyZSBsb29raW5nIGZvciB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCdzIHRvdWdoIHRvIHJlYWNoIGluIGEgc3RhbmRhcmQgc2V0dXAuXG5cbk15IHVuZGVyc3RhbmRpbmcsIGZyb20gZXhwZXJpZW5jZSwgaXMgdGhhdCB0aGUgYGljZWAgZHJpdmVyIGlzIGZvciBJbnRlbCdzIENvbHVtYmlhdmlsbGUgKEU4MTApIGFuZCBFODAwIHNlcmllcyBlbnRlcnByaXNlIE5JQ3MuIFRoZXNlIGFyZSBQQ0llIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmRzLCB0aGUgMTAwR2JFIHZhcmlldHkuIFRoZXkncmUgZGVmaW5pdGVseSBub3QgZW11bGF0ZWQgYnkgdGhlIHN0YW5kYXJkIFFFTVUgZGV2aWNlcyB0aGF0IHdlJ2QgdXNlLCBsaWtlIGUxMDAwLCBpZ2IsIGFuZCB2aXJ0aW8tbmV0LlxuXG5UbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmb3IgYW55IHZpcnR1YWwgb3IgbW9jayBkZXZpY2VzIHVzaW5nIGBDT05GSUdfSUNFYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGhhcmR3YXJlIHRoYXQncyBkaWZmaWN1bHQgdG8gcmVhY2gsIGJ1dCBsZXQncyBqdXN0IG1ha2Ugc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY4NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjM0LjcxMzU4NzU3NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTU2NDk3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUNFXFxcXGJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjY4PWNvbmZpZyBJNDBFVkZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjkxOmNvbmZpZyBJQ0VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI5Mi1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODAwIFNlcmllcyBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwOToyOTozNC44MDUxNTkxMjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDYyMTM1MzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHMsIHRhcmdldGluZyBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIEludGVsIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGlzIEludGVsIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBvcHRpb25zLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnYCwgYW5kIHNwZWNpZmljYWxseSwgYXJvdW5kIGxpbmUgMjkxLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBmZWF0dXJlIGVuYWJsZSBmbGFncyBhcmUgZ3JvdXBlZCwgb3IgYXQgbGVhc3QgYSByZWxldmFudCBncm91cGluZyBvZiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgcmVsYXRlZCB0byB0aGUgZHJpdmVyJ3MgZGVmYXVsdCBzZXR0aW5ncy4gSSdtIGhvcGluZyB0byBxdWlja2x5IGdyYXNwIHRoZSByZWxldmFudCBwYXJhbWV0ZXJzIHRoZXJlLCBtYXliZSBhIGhhcmR3YXJlIHNwZWNpZmljIGZlYXR1cmUsIG9yIGEgZGVidWcgc2V0dGluZy4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIGhhbmRsZXMgWC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc1MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjM2Ljg2NzI5ODU4NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjkwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjkwOlxcdFxcbiAyOTE6XFx0Y29uZmlnIElDRVxcbiAyOTI6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgU3VwcG9ydFxcXCJcXG4gMjkzOlxcdFxcdGRlZmF1bHQgblxcbiAyOTQ6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXFxuIDI5NTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuIDI5NjpcXHRcXHRkZXBlbmRzIG9uIEdOU1MgfHwgR05TUyA9IG5cXG4gMjk3OlxcdFxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuIDI5ODpcXHRcXHRzZWxlY3QgRElNTElCXFxuIDI5OTpcXHRcXHRzZWxlY3QgTElCRVRIX1hEUFxcbiAzMDA6XFx0XFx0c2VsZWN0IExJQklFXFxuIDMwMTpcXHRcXHRzZWxlY3QgTElCSUVfQURNSU5RXFxuIDMwMjpcXHRcXHRzZWxlY3QgTElCSUVfRldMT0cgaWYgREVCVUdfRlNcXG4gMzAzOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAzMDQ6XFx0XFx0c2VsZWN0IFBBQ0tJTkdcXG4gMzA1OlxcdFxcdHNlbGVjdCBQTERNRldcXG4gMzA2OlxcdFxcdHNlbGVjdCBEUExMXFxuIDMwNzpcXHRcXHRoZWxwXFxuIDMwODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgb2ZcXG4gMzA5OlxcdFxcdCAgZGV2aWNlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpZGVudGlmeSB5b3VyIGFkYXB0ZXIsIGdvXFxuIDMxMDpcXHRcXHQgIHRvIHRoZSBBZGFwdGVyIFxcdTAwMjYgRHJpdmVyIElEIEd1aWRlIHRoYXQgY2FuIGJlIGxvY2F0ZWQgYXQ6XFxuIDMxMTpcXHRcXG4gMzEyOlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVxcdTAwM2VcXG4gMzEzOlxcdFxcbiAzMTQ6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gMzE1OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2ljZS5yc3RcXHUwMDNlLlxcbiAzMTY6XFx0XFxuIDMxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcXG4gMzE4OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgaWNlLlxcbiAzMTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA5OjI5OjM2Ljg2NzQwMDg0NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ4MDEzMjYwMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFwiaWNlXCIgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gdGhlIGBpY2VgIGRyaXZlciwgd2hpY2ggSSBrbm93IGlzIHRoZSBJbnRlbCBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIGRyaXZlciwgaXMgdGhlIGZvY3VzIGhlcmUuIEl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBuZXR3b3JrIGRyaXZlciwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcgYmVjYXVzZSBpdCByZXF1aXJlcyB0aGUgSW50ZWwgRTgwMCBzZXJpZXMgaGFyZHdhcmUgQVNJQy4gU3RhbmRhcmQgUUVNVSwgd2hpY2ggaXMgb3VyIHByaW1hcnkgZW52aXJvbm1lbnQgZm9yIGZ1enppbmcsIGRvZXNuJ3QgZW11bGF0ZSB0aG9zZSBjYXJkcy5cblxuTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0LCBiYXNlZCBvbiBzZWN0aW9uIDIgb2YgdGhlIGd1aWRlbGluZXMsIGNvZGUgdGhhdCBkZXBlbmRzIG9uIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgbGlrZSB0aGVzZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBjb21wb25lbnRzIGFyZSBub3Qgc3VpdGFibGUgZm9yIHN0YW5kYXJkIGZ1enppbmcuIFRoZSBzZWN0aW9uIHNwZWNpZmljYWxseSBjYWxscyBvdXQgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAgYXMgZXhhbXBsZXMsIGFsbCByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUuIFRoaXMgaXMgYSBjcnVjaWFsIGRldGFpbCBmb3IgZGV0ZXJtaW5pbmcgYFdvcnRoRnV6emluZ2AuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaC4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byB0aGlzIHNwZWNpZmljIGBpY2VgIGRyaXZlci4gQSBxdWljayBzY2FuIG9mIHRoZSBtb2RpZmllZCBmaWxlc+KAlGBpY2UuaGAsIGBpY2VfYWRhcHRlci5jYCwgYGljZV9hZGFwdGVyLmhgLCBgaWNlX2V0aHRvb2xfZmRpci5jYCwgYGljZV9tYWluLmNgLCBgaWNlX3ZsYW5fbW9kZS5jYCwgYW5kIGBpY2Vfdmxhbl9tb2RlLmhg4oCUY29uZmlybXMgdGhleSBhbGwgbGl2ZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvYCBkaXJlY3RvcnkuIE5vbmUgb2YgdGhlbSBhcHBlYXIgdG8gdG91Y2ggYW55IGNvcmUgbmV0d29ya2luZyBvciB2aXJ0dWFsIG5ldGRldiBjb21wb25lbnRzLCB3aGljaCBpcyBjcml0aWNhbC5cblxuVGhlcmVmb3JlLCBzaW5jZSB0aGUgcGF0Y2ggZGVhbHMgc29sZWx5IHdpdGggdGhlIGBpY2VgIGRyaXZlcidzIGhhbmRsaW5nIG9mIHJlc2V0IHNlcmlhbGl6YXRpb24gYW5kIEZsb3cgRGlyZWN0b3IvRFZNIGZpbHRlciByZXBsYXksIHdoaWNoIGlzIGFsbCBkZXBlbmRlbnQgb24gaGFyZHdhcmUgdGhhdCBpc24ndCBlbXVsYXRlZCwgaXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIG91ciBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGlzIGxlYWRzIG1lIHRvIGNvbmNsdWRlOiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBJIHdvbid0IGJlIGVuYWJsaW5nIGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIChgRW5hYmxlQ29uZmlncyA9IFtdYCkgb3IgZm9jdXNpbmcgb24gYW55IHNwZWNpZmljIHN5bWJvbHMgKGBGb2N1c1N5bWJvbHMgPSBbXWApLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhlIG1vZGlmaWVkIGNvZGUncyBleGVjdXRpb24gcGF0aCBpcyBibG9ja2VkIGJ5IHRoZSBsYWNrIG9mIGVtdWxhdGVkIGhhcmR3YXJlLlxuXG5Pa2F5LCBJJ2xsIGNhbGwgYHNldC1yZXN1bHRzYCB0byByZWNvcmQgdGhpcyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQwNywiT3V0cHV0VG9rZW5zIjoxMDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwOToyOTo0MS42Njg3MzAxOTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIChgaWNlYCkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRmxvdyBEaXJlY3RvciBmaWx0ZXIgaGFuZGxlIGNsZWFudXAsIHJlYnVpbGQgc2VyaWFsaXphdGlvbiB2aWEgYW4gYWRhcHRlci1sZXZlbCBtdXRleCwgYW5kIHJlY2lwZSB1cGRhdGVzIG9uIHJlc2V0LiBUaGUgYGljZWAgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgSW50ZWwgRTgwMCBzZXJpZXMgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9LVk0gZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgKGBpY2VgKSBkcml2ZXIsIHNwZWNpZmljYWxseSBoYW5kbGluZyBGbG93IERpcmVjdG9yIGZpbHRlciBoYW5kbGUgY2xlYW51cCwgcmVidWlsZCBzZXJpYWxpemF0aW9uIHZpYSBhbiBhZGFwdGVyLWxldmVsIG11dGV4LCBhbmQgcmVjaXBlIHVwZGF0ZXMgb24gcmVzZXQuIFRoZSBgaWNlYCBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0tWTSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwOToyOTo0MS42Njg3NjA3NTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7xf8[1] Phase: Running StartedAt: 2026-09-04 09:29:53 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7xf8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 09:29:53 +0000 UTC FinishedAt: 2026-09-04 09:29:57 +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,}