Name: series-workflowdrlrr Phase: Failed StartedAt: 2026-07-12 00:25:15 +0000 UTC FinishedAt: 2026-07-12 00:52:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdrlrr[0] Phase: Succeeded StartedAt: 2026-07-12 00:25:15 +0000 UTC FinishedAt: 2026-07-12 00:52:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdrlrr[0].run-triage Phase: Succeeded StartedAt: 2026-07-12 00:25:15 +0000 UTC FinishedAt: 2026-07-12 00:52:03 +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+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgbG9nZ2luZyBzdGF0ZW1lbnRzIChzZXFfYnVmX3ByaW50ZiBhbmQgcHJfd2FybikgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJpbnRpbmcgcGFydGl0aW9uIG5hbWVzLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBwYXJ0aXRpb24gcGFyc2VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo1MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQzMDU5ODY1N2ZhYTg4MzJmYTE1MDllNTY3ZjMxMWI4NTgxZDRiYThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDo1MDoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2FpeC5jIGIvYmxvY2svcGFydGl0aW9ucy9haXguY1xuaW5kZXggZjNjNDE3NGUwMDNlOWQuLmZlMmQyY2IwYzRlNzg1IDEwMDY0NFxuLS0tIGEvYmxvY2svcGFydGl0aW9ucy9haXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9haXguY1xuQEAgLTI2MSw3ICYjNDM7MjYxLDggQEAgaW50IGFpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbiBcdFx0XHRcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIGx2X2l4ICYjNDM7IDEsXG4gXHRcdFx0XHQgIChpICYjNDM7IDEgLSBscF9peCkgKiBwcF9ibG9ja3Nfc2l6ZSAmIzQzOyBwc25fcGFydDEsXG4gXHRcdFx0XHQgIGx2aXBbbHZfaXhdLnBwc19wZXJfbHYgKiBwcF9ibG9ja3Nfc2l6ZSk7XG4tXHRcdFx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2Mlc1x1MDAzZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2MlLipzXHUwMDNlXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIChpbnQpc2l6ZW9mKG5bbHZfaXhdLm5hbWUpLFxuIFx0XHRcdFx0XHQgICAgICAgbltsdl9peF0ubmFtZSk7XG4gXHRcdFx0XHRsdmlwW2x2X2l4XS5sdl9pc19jb250aWd1b3VzID0gMTtcbiBcdFx0XHRcdHJldCA9IDE7XG5AQCAtMjcxLDEyICYjNDM7MjcyLDEwIEBAIGludCBhaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4gXHRcdH1cbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc3RhdGUtXHUwMDNlbGltaXQ7IGkgJiM0Mzs9IDEpXG4gXHRcdFx0aWYgKGx2aXBbaV0ucHBzX2ZvdW5kIFx1MDAyNlx1MDAyNiAhbHZpcFtpXS5sdl9pc19jb250aWd1b3VzKSB7XG4tXHRcdFx0XHRjaGFyIHRtcFtzaXplb2YobltpXS5uYW1lKSAmIzQzOyAxXTsgLy8gbnVsbCBjaGFyXG4tXG4tXHRcdFx0XHRzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCBcJiMzNDslc1wmIzM0OywgbltpXS5uYW1lKTtcbi1cdFx0XHRcdHByX3dhcm4oXCYjMzQ7cGFydGl0aW9uICVzICgldSBwcCYjMzk7cyBmb3VuZCkgaXMgXCYjMzQ7XG4mIzQzO1x0XHRcdFx0cHJfd2FybihcJiMzNDtwYXJ0aXRpb24gJS4qcyAoJXUgcHAmIzM5O3MgZm91bmQpIGlzIFwmIzM0O1xuIFx0XHRcdFx0XHRcJiMzNDtub3QgY29udGlndW91c1xcblwmIzM0Oyxcbi1cdFx0XHRcdFx0dG1wLCBsdmlwW2ldLnBwc19mb3VuZCk7XG4mIzQzO1x0XHRcdFx0XHQoaW50KXNpemVvZihuW2ldLm5hbWUpLCBuW2ldLm5hbWUsXG4mIzQzO1x0XHRcdFx0XHRsdmlwW2ldLnBwc19mb3VuZCk7XG4gXHRcdFx0fVxuIFx0XHRrZnJlZShwdmQpO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgbG9nZ2luZyBzdGF0ZW1lbnRzIChzZXFfYnVmX3ByaW50ZiBhbmQgcHJfd2FybikgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJpbnRpbmcgcGFydGl0aW9uIG5hbWVzLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBwYXJ0aXRpb24gcGFyc2VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDMwNTk4NjU3ZmFhODgzMmZhMTUwOWU1NjdmMzExYjg1ODFkNGJhOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDEyIDAwOjUwOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYmxvY2svcGFydGl0aW9ucy9haXguYyBiL2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmMKaW5kZXggZjNjNDE3NGUwMDNlOWQuLmZlMmQyY2IwYzRlNzg1IDEwMDY0NAotLS0gYS9ibG9jay9wYXJ0aXRpb25zL2FpeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmMKQEAgLTI2MSw3ICYjNDM7MjYxLDggQEAgaW50IGFpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSkKIAkJCQlwdXRfcGFydGl0aW9uKHN0YXRlLCBsdl9peCAmIzQzOyAxLAogCQkJCSAgKGkgJiM0MzsgMSAtIGxwX2l4KSAqIHBwX2Jsb2Nrc19zaXplICYjNDM7IHBzbl9wYXJ0MSwKIAkJCQkgIGx2aXBbbHZfaXhdLnBwc19wZXJfbHYgKiBwcF9ibG9ja3Nfc2l6ZSk7Ci0JCQkJc2VxX2J1Zl9wcmludGYoJmFtcDtzdGF0ZS0mZ3Q7cHBfYnVmLCAmIzM0OyAmbHQ7JXMmZ3Q7XG4mIzM0OywKJiM0MzsJCQkJc2VxX2J1Zl9wcmludGYoJmFtcDtzdGF0ZS0mZ3Q7cHBfYnVmLCAmIzM0OyAmbHQ7JS4qcyZndDtcbiYjMzQ7LAomIzQzOwkJCQkJICAgICAgIChpbnQpc2l6ZW9mKG5bbHZfaXhdLm5hbWUpLAogCQkJCQkgICAgICAgbltsdl9peF0ubmFtZSk7CiAJCQkJbHZpcFtsdl9peF0ubHZfaXNfY29udGlndW91cyA9IDE7CiAJCQkJcmV0ID0gMTsKQEAgLTI3MSwxMiAmIzQzOzI3MiwxMCBAQCBpbnQgYWl4X3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKQogCQl9CiAJCWZvciAoaSA9IDA7IGkgJmx0OyBzdGF0ZS0mZ3Q7bGltaXQ7IGkgJiM0Mzs9IDEpCiAJCQlpZiAobHZpcFtpXS5wcHNfZm91bmQgJmFtcDsmYW1wOyAhbHZpcFtpXS5sdl9pc19jb250aWd1b3VzKSB7Ci0JCQkJY2hhciB0bXBbc2l6ZW9mKG5baV0ubmFtZSkgJiM0MzsgMV07IC8vIG51bGwgY2hhcgotCi0JCQkJc25wcmludGYodG1wLCBzaXplb2YodG1wKSwgJiMzNDslcyYjMzQ7LCBuW2ldLm5hbWUpOwotCQkJCXByX3dhcm4oJiMzNDtwYXJ0aXRpb24gJXMgKCV1IHBwJiMzOTtzIGZvdW5kKSBpcyAmIzM0OwomIzQzOwkJCQlwcl93YXJuKCYjMzQ7cGFydGl0aW9uICUuKnMgKCV1IHBwJiMzOTtzIGZvdW5kKSBpcyAmIzM0OwogCQkJCQkmIzM0O25vdCBjb250aWd1b3VzXG4mIzM0OywKLQkJCQkJdG1wLCBsdmlwW2ldLnBwc19mb3VuZCk7CiYjNDM7CQkJCQkoaW50KXNpemVvZihuW2ldLm5hbWUpLCBuW2ldLm5hbWUsCiYjNDM7CQkJCQlsdmlwW2ldLnBwc19mb3VuZCk7CiAJCQl9CiAJCWtmcmVlKHB2ZCk7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJsb2NrIFBhcnRpdGlvbmluZyBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYmxvY2svcGFydGl0aW9ucy9haXguY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGNsZWFudXAsIHN3YXBwaW5nIG91dCB0aGUgb2xkIGAlc2AgZm9ybWF0dGluZyB3aXRoIGAlLipzYCBhbmQgYSBgKGludClzaXplb2Yobltsdl9peF0ubmFtZSlgIGluIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYC4gSSBzYXcgdGhhdCBpdCB3YXMganVzdCBhIHN0cmluZyBmb3JtYXR0aW5nIGZpeCBpbiBsb2dnaW5nIGFuZCBwYXJ0aXRpb24gbmFtZSBwcmludGluZy4gVGhlIGdvYWwgaXMgbGlrZWx5IHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBzdHJpbmcgcmVhZCwgb3IgYXQgdGhlIGxlYXN0LCBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgY29weWluZyB0byBhIHRlbXBvcmFyeSBidWZmZXIuIE5vdGhpbmcgaW1tZWRpYXRlbHkganVtcHMgb3V0IGFzIGRlZXBseSBhcmNoaXRlY3R1cmFsLgoKQnV0IHdhaXQgYSBtaW51dGXigKYgSSBzZWUgYHNlcV9idWZfcHJpbnRmYCBpcyBwcmludGluZyB0byBgc3RhdGUtJmd0O3BwX2J1ZmAsIGFuZCB0aGF0IGJ1ZmZlciBpcyB1c2VkIGZvciBwYXJ0aXRpb24gaW5mb3JtYXRpb24gdGhhdCAqY291bGQqIGJlIGV4cG9zZWQgdG8gdXNlcnNwYWNlIOKAkyBgL3Byb2MvcGFydGl0aW9uc2AsIGRtZXNnLCBldGMuIE5vdyBpdCBpcyBzdGFydGluZyB0byBsb29rIGxpa2UgYSBwb3NzaWJsZSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhpcyBgJS4qc2AgdXNhZ2Ugd291bGQgcHJldmVudCByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiBgbltsdl9peF0ubmFtZWAsIHdoaWNoIG1pZ2h0IG5vdCBiZSBudWxsLXRlcm1pbmF0ZWQuIFNvIHRoaXMgKmNvdWxkKiBiZSBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgc2VjdXJpdHkgaXNzdWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIHdhc24mIzM5O3QgbnVsbC10ZXJtaW5hdGVkLgoKQWxyaWdodCwgSSBuZWVkIHRvIGRpZyBpbnRvIGBibG9jay9wYXJ0aXRpb25zL2FpeC5jYCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYmV0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FpeF9wYXJ0aXRpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2FpeC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmM9MTM4PXN0YXRpYyBzdHJ1Y3QgbHZuYW1lICphbGxvY19sdm4oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTMyIGxiYSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE1My1cbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTU0OmludCBhaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE1NS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4OAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBWYXJpYWJsZSAmIzM5O24mIzM5OyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gb24gbXkgbWluZCwgZ2l2ZW4gd2hhdGV2ZXIgY29udGV4dCB3ZSYjMzk7cmUgaW4sIGlzIHRoZSBuYXR1cmUgb2YgdGhlIHZhcmlhYmxlICYjMzk7biYjMzk7LiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaXRzIGRlZmluaXRpb24sIGl0cyBkb21haW4sIGFuZCBpdHMgcG90ZW50aWFsIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIHN5c3RlbSB3ZSYjMzk7cmUgZXhhbWluaW5nLiBJcyB0aGlzIGEgc2NhbGFyLCBhIHZlY3Rvciwgb3IgcGVyaGFwcyBzb21ldGhpbmcgbW9yZSBjb21wbGV4IGxpa2UgYSBmdW5jdGlvbj8gRG9lcyAmIzM5O24mIzM5OyByZXByZXNlbnQgYSBudW1iZXIsIGFuIGluZGV4LCBhIGRpbWVuc2lvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzcGVjaWZpYyBmaWVsZCBjb250ZXh0IHdpbGwgZHJhbWF0aWNhbGx5IGluZmx1ZW5jZSBteSB1bmRlcnN0YW5kaW5nLiBGb3IgZXhhbXBsZSwgaW4gY29tcHV0YXRpb25hbCBudW1iZXIgdGhlb3J5LCAmIzM5O24mIzM5OyBtaWdodCByZXByZXNlbnQgYSBtb2R1bHVzLCB3aGlsZSBpbiBncmFwaCB0aGVvcnksIGl0JiMzOTtzIGxpa2VseSB0aGUgbnVtYmVyIG9mIG5vZGVzLiBLbm93aW5nIHRoaXMsIEkgY2FuIGJlZ2luIHRvIGFudGljaXBhdGUgaXRzIGltcGFjdCBvbiB0aGUgYWxnb3JpdGhtcyBvciBwcmluY2lwbGVzIGF0IHBsYXkuIEkgaGF2ZSB0byBhc3Nlc3MgaG93IHNpZ25pZmljYW50IHRoaXMgdmFsdWUgaXMsIHdoYXQgcmVzdHJpY3Rpb25zIGFyZSBwbGFjZWQgdXBvbiBpdCwgYW5kIGhvdyB0aGV5IHNoYXBlIHRoZSBwcm9ibGVtLiBPbmx5IHdpdGggdGhpcyBwcmVsaW1pbmFyeSB1bmRlcnN0YW5kaW5nIHdpbGwgSSBiZSBhYmxlIHRvIGVmZmVjdGl2ZWx5IGRpc3NlY3QgdGhlIHByb2JsZW0gYXQgaGFuZCBhbmQgYmVnaW4gYSBtZWFuaW5nZnVsIHNvbHV0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBsdm5hbWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2FpeC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmM9MzQ9c3RydWN0IGx2ZCB7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9haXguYy00NS1cbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6NDY6c3RydWN0IGx2bmFtZSB7XG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTQ3LVx0Y2hhciBuYW1lWzY0XTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jPTExMz1zdGF0aWMgc3RydWN0IHB2ZCAqYWxsb2NfcHZkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHUzMiBsYmEpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xMzctICovXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jOjEzODpzdGF0aWMgc3RydWN0IGx2bmFtZSAqYWxsb2NfbHZuKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHUzMiBsYmEpXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTEzOS17XG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jOjE0MDpcdHNpemVfdCBjb3VudCA9IHNpemVvZihzdHJ1Y3QgbHZuYW1lKSAqIExWTV9NQVhMVlM7XG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jOjE0MTpcdHN0cnVjdCBsdm5hbWUgKnA7XG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE0Mi1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jPTE1ND1pbnQgYWl4X3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTY5LVx0fSAqbHZpcDtcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTcwOlx0c3RydWN0IGx2bmFtZSAqbiA9IE5VTEw7XG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDA5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQUlYIFBhcnRpdGlvbiBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNoYW5nZSBpbiBgYWl4X3BhcnRpdGlvbmAuIEl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIHJlcGxhY2luZyB0aGUgZGlyZWN0IHVzZSBvZiBgJXNgIGluIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYCB3aXRoIGAlLipzYC4gVGhlIGtleSBpcyB0aGF0IHRoZSBjaGFuZ2UgaW50cm9kdWNlcyBhbiBleHBsaWNpdCBsZW5ndGggc3BlY2lmaWVyIHdoZW4gcHJpbnRpbmcgdGhlIHBhcnRpdGlvbiBuYW1lLCBjYWxjdWxhdGVkIGZyb20gYHNpemVvZihuW2x2X2l4XS5uYW1lKWAuIFRoaXMgaXMgY2xlYXJseSBhIGRlZmVuc2l2ZSBtZWFzdXJlLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgdG8gYXZvaWQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGlmIHRoZSBgbltsdl9peF0ubmFtZWAgYnVmZmVyIGlzICpub3QqIG51bGwtdGVybWluYXRlZC4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgaXNzdWUgdGhhdCBjYW4gbGVhZCB0byBzdWJ0bGUgdnVsbmVyYWJpbGl0aWVzLgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhpcyB3b3J0aHkgb2YgZnV6emluZz8gSXQgaW52b2x2ZXMgYSBwYXJ0aXRpb24gcGFyc2VyLCBzcGVjaWZpY2FsbHkgYGFpeF9wYXJ0aXRpb25gLiBBbmQsIGZyb20gZXhwZXJpZW5jZSwgZnV6emluZyBwYXJ0aXRpb24gcGFyc2VycyAqaXMqIHZpYWJsZS4gWW91IGNhbiBjcmVhdGUgbWFsaWNpb3VzIHBhcnRpdGlvbiB0YWJsZXMgYW5kIGZlZWQgdGhlbSB0byB0aGUgcGFyc2VyIOKAkyB0aGUgbG9vcCBkZXZpY2UgYXBwcm9hY2ggd2l0aCBjcmFmdGVkIGltYWdlcyBoYXMgYWx3YXlzIGJlZW4gYSBzb2xpZCBtZXRob2QuIEJ1dCBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoaXMgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHNjaGVtZS4uLiBPaCwgcmlnaHQhIGBhaXhfcGFydGl0aW9uYCBpcyBwYXJ0IG9mIHRoZSBibG9jayBwYXJ0aXRpb24gcGFyc2Vycy4gVGhhdCBpcyBhIHZhbHVhYmxlIHBpZWNlIG9mIGluZm9ybWF0aW9uLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSBgQUlYX1BBUlRJVElPTmAgY29uZmlndXJhdGlvbiBleGlzdHMgYmVmb3JlIHdlIGNvbnNpZGVyIHRoaXMgZnVsbHkuIFRoaXMgd2lsbCBpbmZvcm0gd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBhY3R1YWxseSBhY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QUlYX1BBUlRJVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvS2NvbmZpZz02NT1jb25maWcgQUNPUk5fUEFSVElUSU9OX1JJU0NJWFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvS2NvbmZpZy03My1cbmJsb2NrL3BhcnRpdGlvbnMvS2NvbmZpZzo3NDpjb25maWcgQUlYX1BBUlRJVElPTlxuYmxvY2svcGFydGl0aW9ucy9LY29uZmlnLTc1LVx0Ym9vbCBcJiMzNDtBSVggYmFzaWMgcGFydGl0aW9uIHRhYmxlIHN1cHBvcnRcJiMzNDsgaWYgUEFSVElUSU9OX0FEVkFOQ0VEXG4tLVxuYmxvY2svcGFydGl0aW9ucy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19BVEFSSV9QQVJUSVRJT04pICYjNDM7PSBhdGFyaS5vXG5ibG9jay9wYXJ0aXRpb25zL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19BSVhfUEFSVElUSU9OKSAmIzQzOz0gYWl4Lm9cbmJsb2NrL3BhcnRpdGlvbnMvTWFrZWZpbGUtMTEtb2JqLSQoQ09ORklHX0NNRExJTkVfUEFSVElUSU9OKSAmIzQzOz0gY21kbGluZS5vXG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jPTU2MD1pbnQgbXNkb3NfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU4MC1cdFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NTgxOiNpZmRlZiBDT05GSUdfQUlYX1BBUlRJVElPTlxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU4Mi1cdFx0cmV0dXJuIGFpeF9wYXJ0aXRpb24oc3RhdGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIGBDT05GSUdfQUlYX1BBUlRJVElPTmAgRml4KioKCk9rYXksIHNvIGBDT05GSUdfQUlYX1BBUlRJVElPTmAgaXMgZGVmaW5pdGVseSBhIHRoaW5nLiBOb3cgdGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHN0cmluZyBmb3JtYXR0aW5nIGZpeCB3b3J0aCB0aGUgZnV6emluZyBlZmZvcnQ/IFRoZSBwYXRjaCBzZWVtcyBwcmV0dHkgY29udGFpbmVkOyBpdCYjMzk7cyBqdXN0IGFib3V0IHByZXZlbnRpbmcgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBgc2VxX2J1Zl9wcmludGZgIGFuZCBgcHJfd2FybmAuIEhtbSwgbGV0IG1lIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZyBsaWtlIGBwcl9lcnJgLCBoYXJtbGVzcyBjb25zdGFudC9tYWNybyBjaGFuZ2VzLCBvciB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoZSBjb3JlIGNoYW5nZSBpcyB0byBgc2VxX2J1Zl9wcmludGZgIGFuZCBpdCBsb29rcyBsaWtlIHRoYXQmIzM5O3MgdXNlZCB0byBidWlsZCB0aGUgcGFydGl0aW9uIHN0cmluZyB0aGF0IGVuZHMgdXAgaW4gZG1lc2cgb3IgYC9wcm9jL3BhcnRpdGlvbnNgLiBPa2F5LCBzbyBgc3RhdGUtJmd0O3BwX2J1ZmAsIGxldCBtZSBjb25maXJtIHdoZXJlIHRoYXQmIzM5O3MgdXNlZC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgYHN0YXRlLSZndDtwcF9idWZgIGlzIHVzZWQgaW4gYGJsb2NrL3BhcnRpdGlvbnMvY29yZS5jYC4gTGV0IG1lIGRpdmUgaW4gdGhlcmUgZm9yIGEgY2xvc2VyIGxvb2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BwX2J1ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz0yNj1hZGZzX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLCBjaGFyICpuYW1lLCBjaGFyICpkYXRhLFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00My1cdGlmIChuYW1lKSB7XG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6NDQ6XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFslc11cJiMzNDssIG5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTQ1LVx0fVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz02OT1zdGF0aWMgaW50IHJpc2NpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNzktXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6ODA6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgW1JJU0NpWF1cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTgxLVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy04Ni1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzo4NzpcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFx1MDAzY1wmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtODgtXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTk1LVx0XHRcdFx0XHRsZTMyX3RvX2NwdShyci1cdTAwM2VwYXJ0W3BhcnRdLmxlbmd0aCkpO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjk2Olx0XHRcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsoJXMpXCYjMzQ7LCByci1cdTAwM2VwYXJ0W3BhcnRdLm5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTk3LVx0XHRcdH1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtOTktXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6MTAwOlx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgXHUwMDNlXFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0xMDEtXHR9IGVsc2Uge1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz0xMjI9c3RhdGljIGludCBsaW51eF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTI5LVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjEzMDpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBbTGludXhdXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0xMzEtXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTEzNy1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzoxMzg6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgXHUwMDNjXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0xMzktXHR3aGlsZSAobGludXhwLVx1MDAzZW1hZ2ljID09IGNwdV90b19sZTMyKExJTlVYX05BVElWRV9NQUdJQykgfHxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTQ3LVx0fVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjE0ODpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2VcJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTE0OS1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM9MjQ3PWludCBhZGZzcGFydF9jaGVja19BREZTKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTI5Mi1cdH1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzoyOTM6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTI5NC1cdHJldHVybiAxO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz0zNDc9aW50IGFkZnNwYXJ0X2NoZWNrX0lDUyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0zNjUtXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6MzY2Olx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFtJQ1NdXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0zNjctXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTM5OS1cdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjQwMDpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNDAxLVx0cmV0dXJuIDE7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jPTQ0Mz1pbnQgYWRmc3BhcnRfY2hlY2tfUE9XRVJURUMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNDU5LVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjQ2MDpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBbUE9XRVJURUNdXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00NjEtXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTQ3MC1cdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjQ3MTpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNDcyLVx0cmV0dXJuIDE7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jPTUwND1pbnQgYWRmc3BhcnRfY2hlY2tfRUVTT1goc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNTQxLVx0XHRwdXRfcGFydGl0aW9uKHN0YXRlLCBzbG90JiM0MzsmIzQzOywgc3RhcnQsIHNpemUgLSBzdGFydCk7XG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6NTQyOlx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTU0My1cdH1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jPTE1ND1pbnQgYWl4X3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTgxLVx0XHRcdHBwX2Jsb2Nrc19zaXplID0gcHBfYnl0ZXNfc2l6ZSAvIDUxMjtcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTgyOlx0XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZixcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTgzLVx0XHRcdFx0ICAgICAgIFwmIzM0OyBBSVggTFZNIGhlYWRlciB2ZXJzaW9uICV1IGZvdW5kXFxuXCYjMzQ7LFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTg3LVx0XHR9IGVsc2Uge1xuYmxvY2svcGFydGl0aW9ucy9haXguYzoxODg6XHRcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xODktXHRcdFx0XHQgICAgICAgXCYjMzQ7IHVuc3VwcG9ydGVkIEFJWCBMVk0gdmVyc2lvbiAlZCBmb3VuZFxcblwmIzM0Oyxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTI2My1cdFx0XHRcdCAgbHZpcFtsdl9peF0ucHBzX3Blcl9sdiAqIHBwX2Jsb2Nrc19zaXplKTtcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MjY0Olx0XHRcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgXHUwMDNjJS4qc1x1MDAzZVxcblwmIzM0OyxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMjY1LVx0XHRcdFx0XHQgICAgICAgKGludClzaXplb2Yobltsdl9peF0ubmFtZSksXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jPTM2PWludCBhbWlnYV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtODQtXHQvKiBCZSBtb3JlIGluZm9ybWF0aXZlICovXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmM6ODU6XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBSRFNLICglZClcJiMzNDssIGJsa3NpemUgKiA1MTIpO1xuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTg2LVx0YmxrID0gYmUzMl90b19jcHUocmRiLVx1MDAzZXJkYl9QYXJ0aXRpb25MaXN0KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtMTgwLVx0XHRcdGlmIChkb3N0eXBlWzNdIFx1MDAzYyAmIzM5OyAmIzM5OylcbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYzoxODE6XHRcdFx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtMTgyLVx0XHRcdFx0XHQgICAgICAgXCYjMzQ7ICglYyVjJWNeJWMpXCYjMzQ7LFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYy0xODYtXHRcdFx0ZWxzZVxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jOjE4NzpcdFx0XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZixcbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYy0xODgtXHRcdFx0XHRcdCAgICAgICBcJiMzNDsgKCVjJWMlYyVjKVwmIzM0Oyxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtMTkwLVx0XHRcdFx0XHQgICAgICAgZG9zdHlwZVsyXSwgZG9zdHlwZVszXSk7XG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmM6MTkxOlx0XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7KHJlcyAlZCBzcGIgJWQpXCYjMzQ7LFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE5Mi1cdFx0XHRcdCAgICAgICBiZTMyX3RvX2NwdShwYi1cdTAwM2VwYl9FbnZpcm9ubWVudFs2XSksXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE5Ni1cdH1cbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYzoxOTc6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE5OC1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM9MzQ9aW50IGF0YXJpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy03Mi1cdHBpID0gXHUwMDI2cnMtXHUwMDNlcGFydFswXTtcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYzo3MzpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBBSERJXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy03NC1cdGZvciAoc2xvdCA9IDE7IHBpIFx1MDAzYyBcdTAwMjZycy1cdTAwM2VwYXJ0WzRdIFx1MDAyNlx1MDAyNiBzbG90IFx1MDAzYyBzdGF0ZS1cdTAwM2VsaW1pdDsgc2xvdCYjNDM7JiM0MzssIHBpJiM0MzsmIzQzOykge1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy05MS0jZW5kaWZcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYzo5MjpcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFhHTVx1MDAzY1wmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtOTMtXHRcdHBhcnRzZWN0ID0gZXh0ZW5zZWN0ID0gYmUzMl90b19jcHUocGktXHUwMDNlc3QpO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy0xMzAtXHRcdH1cbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYzoxMzE6XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2VcJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTEzMi1cdH1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtMTM3LVx0XHRpZiAoT0tfaWQocGktXHUwMDNlaWQpKSB7XG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6MTM4Olx0XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBJQ0RcdTAwM2NcJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTEzOS1cdFx0XHRmb3IgKDsgcGkgXHUwMDNjIFx1MDAyNnJzLVx1MDAzZWljZHBhcnRbOF0gXHUwMDI2XHUwMDI2IHNsb3QgXHUwMDNjIHN0YXRlLVx1MDAzZWxpbWl0OyBzbG90JiM0MzsmIzQzOywgcGkmIzQzOyYjNDM7KSB7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTE0Ni1cdFx0XHR9XG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6MTQ3Olx0XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2VcJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTE0OC1cdFx0fVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy0xNTItXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6MTUzOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy0xNTQtXG4tLVxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oPTExPXN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyB7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oLTIzLVx0Ym9vbCBhY2Nlc3NfYmV5b25kX2VvZDtcbmJsb2NrL3BhcnRpdGlvbnMvY2hlY2suaDoyNDpcdHN0cnVjdCBzZXFfYnVmIHBwX2J1ZjtcbmJsb2NrL3BhcnRpdGlvbnMvY2hlY2suaC0yNS19O1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvY2hlY2suaD0zOD1wdXRfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqcCwgaW50IG4sIHNlY3Rvcl90IGZyb20sIHNlY3Rvcl90IHNpemUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oLTQyLVx0XHRwLVx1MDAzZXBhcnRzW25dLnNpemUgPSBzaXplO1xuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oOjQzOlx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZwLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7ICVzJWRcJiMzNDssIHAtXHUwMDNlbmFtZSwgbik7XG5ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmgtNDQtXHR9XG4tLVxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmM9MjI4PXN0YXRpYyBpbnQgYWRkX3BhcnQoaW50IHNsb3QsIHN0cnVjdCBjbWRsaW5lX3N1YnBhcnQgKnN1YnBhcnQsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmMtMjQ1LVxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmM6MjQ2Olx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsoJXMpXCYjMzQ7LCBpbmZvLVx1MDAzZXZvbG5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmMtMjQ3LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvY21kbGluZS5jPTM1Mj1pbnQgY21kbGluZV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2NtZGxpbmUuYy0zNzktXG5ibG9jay9wYXJ0aXRpb25zL2NtZGxpbmUuYzozODA6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmMtMzgxLVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jPTExOT1zdGF0aWMgc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpjaGVja19wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmhkKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTEyNi1cdFx0cmV0dXJuIE5VTEw7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxMjc6XHRzdGF0ZS1cdTAwM2VwcF9idWYuYnVmZmVyID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTI4Olx0aWYgKCFzdGF0ZS1cdTAwM2VwcF9idWYuYnVmZmVyKSB7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xMjktXHRcdGZyZWVfcGFydGl0aW9ucyhzdGF0ZSk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTMxLVx0fVxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTMyOlx0c2VxX2J1Zl9pbml0KFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1Ziwgc3RhdGUtXHUwMDNlcHBfYnVmLmJ1ZmZlciwgUEFHRV9TSVpFKTtcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTEzMy1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xMzUtXHRzdHJzY3B5KHN0YXRlLVx1MDAzZW5hbWUsIGhkLVx1MDAzZWRpc2tfbmFtZSk7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxMzY6XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyAlczpcJiMzNDssIHN0YXRlLVx1MDAzZW5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTM3LVx0aWYgKGlzZGlnaXQoc3RhdGUtXHUwMDNlbmFtZVtzdHJsZW4oc3RhdGUtXHUwMDNlbmFtZSktMV0pKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTE1NC1cdGlmIChyZXMgXHUwMDNlIDApIHtcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jOjE1NTpcdFx0cHJpbnRrKEtFUk5fSU5GTyBcJiMzNDslc1wmIzM0Oywgc2VxX2J1Zl9zdHIoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmKSk7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xNTYtXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxNTc6XHRcdGtmcmVlKHN0YXRlLVx1MDAzZXBwX2J1Zi5idWZmZXIpO1xuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTU4LVx0XHRyZXR1cm4gc3RhdGU7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTY3LVx0aWYgKHJlcykge1xuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTY4Olx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTY5LVx0XHRcdCAgICAgXCYjMzQ7IHVuYWJsZSB0byByZWFkIHBhcnRpdGlvbiB0YWJsZVxcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxNzA6XHRcdHByaW50ayhLRVJOX0lORk8gXCYjMzQ7JXNcJiMzNDssIHNlcV9idWZfc3RyKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZikpO1xuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTcxLVx0fVxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTcyLVxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTczOlx0a2ZyZWUoc3RhdGUtXHUwMDNlcHBfYnVmLmJ1ZmZlcik7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xNzQtXHRmcmVlX3BhcnRpdGlvbnMoc3RhdGUpO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NzEyPWludCBlZmlfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03NTMtXHRrZnJlZShncHQpO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo3NTQ6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03NTUtXHRyZXR1cm4gMTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2libS5jPTE2OD1zdGF0aWMgaW50IGZpbmRfdm9sMV9wYXJ0aXRpb25zKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0xODEtXG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjE4MjpcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7Vk9MMS8lOHM6XCYjMzQ7LCBuYW1lKTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMTgzLVx0Lypcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTIxOS1cdH1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MjIwOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjIxLVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM9MjI4PXN0YXRpYyBpbnQgZmluZF9sbngxX3BhcnRpdGlvbnMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTIzOS1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MjQwOlx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtMTlgxLyU4czpcJiMzNDssIG5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yNDEtXHRzZWNwZXJibGsgPSBibG9ja3NpemUgXHUwMDNlXHUwMDNlIDk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yNTYtXHRcdFx0aWYgKCFpbmZvKSB7XG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjI1NzpcdFx0XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI1OC1cdFx0XHRcdHJldHVybiAxO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjY4LVx0cHV0X3BhcnRpdGlvbihzdGF0ZSwgMSwgb2Zmc2V0LCBzaXplIC0gb2Zmc2V0KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MjY5Olx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjcwLVx0cmV0dXJuIDE7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9pYm0uYz0yNzM9c3RhdGljIGludCBmaW5kX2NtczFfcGFydGl0aW9ucyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjg4LVx0aWYgKGxhYmVsLVx1MDAzZWNtcy5kaXNrX29mZnNldCAhPSAwKSB7XG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjI4OTpcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtDTVMxLyU4cyhNRFNLKTpcJiMzNDssIG5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yOTAtXHRcdC8qIGRpc2sgaXMgcmVzZXJ2ZWQgbWluaWRpc2sgKi9cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI5My1cdH0gZWxzZSB7XG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjI5NDpcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtDTVMxLyU4czpcJiMzNDssIG5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yOTUtXHRcdC8qXG4tLVxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0zMDktXHRwdXRfcGFydGl0aW9uKHN0YXRlLCAxLCBvZmZzZXQsIHNpemUtb2Zmc2V0KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MzEwOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzExLVx0cmV0dXJuIDE7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9pYm0uYz0zMTg9aW50IGlibV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTM4Ni1cdFx0aWYgKGluZm8tXHUwMDNlZm9ybWF0ID09IERBU0RfRk9STUFUX0xETCkge1xuYmxvY2svcGFydGl0aW9ucy9pYm0uYzozODc6XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7KG5vbmwpXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzg4LVx0XHRcdHNpemUgPSBucl9zZWN0b3JzO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzkwLVx0XHRcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIDEsIG9mZnNldCwgc2l6ZS1vZmZzZXQpO1xuYmxvY2svcGFydGl0aW9ucy9pYm0uYzozOTE6XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzkyLVx0XHR9XG4tLVxuYmxvY2svcGFydGl0aW9ucy9rYXJtYS5jPTE1PWludCBrYXJtYV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2thcm1hLmMtNTUtXHR9XG5ibG9jay9wYXJ0aXRpb25zL2thcm1hLmM6NTY6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9rYXJtYS5jLTU3LVx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9sZG0uYz01Njg9c3RhdGljIGJvb2wgbGRtX2NyZWF0ZV9kYXRhX3BhcnRpdGlvbnMgKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqcHAsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9sZG0uYy01ODQtXG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jOjU4NTpcdHNlcV9idWZfcHV0cyhcdTAwMjZwcC1cdTAwM2VwcF9idWYsIFwmIzM0OyBbTERNXVwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jLTU4Ni1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jLTU5OS1cbmJsb2NrL3BhcnRpdGlvbnMvbGRtLmM6NjAwOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnBwLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvbGRtLmMtNjAxLVx0cmV0dXJuIHRydWU7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9tYWMuYz0zMz1pbnQgbWFjX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbWFjLmMtODgtXG5ibG9jay9wYXJ0aXRpb25zL21hYy5jOjg5Olx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFttYWNdXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvbWFjLmMtOTAtXHRmb3IgKHNsb3QgPSAxOyBzbG90IFx1MDAzYz0gYmxvY2tzX2luX21hcDsgJiM0MzsmIzQzO3Nsb3QpIHtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21hYy5jLTE1NC1cdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xuYmxvY2svcGFydGl0aW9ucy9tYWMuYzoxNTU6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9tYWMuYy0xNTYtXHRyZXR1cm4gMTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM9MjUwPXN0YXRpYyB2b2lkIHBhcnNlX3NvbGFyaXNfeDg2KHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTI2NS1cdH1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzoyNjY6XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyAlcyVkOiBcdTAwM2Nzb2xhcmlzOlwmIzM0Oywgc3RhdGUtXHUwMDNlbmFtZSwgb3JpZ2luKTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0yNjctXHRpZiAobGUzMl90b19jcHUodi1cdTAwM2V2X3ZlcnNpb24pICE9IDEpIHtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzoyNjg6XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZixcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0yNjktXHRcdFx0ICAgICAgIFwmIzM0OyAgY2Fubm90IGhhbmRsZSB2ZXJzaW9uICVkIHZ0b2NcdTAwM2VcXG5cJiMzNDssXG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTI4MC1cdFx0XHRjb250aW51ZTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzoyODE6XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFtzJWRdXCYjMzQ7LCBpKTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0yODItXHRcdC8qIHNvbGFyaXMgcGFydGl0aW9ucyBhcmUgcmVsYXRpdmUgdG8gY3VycmVudCBNUy1ET1Ncbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMjg4LVx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6Mjg5Olx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFx1MDAzZVxcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMjkwLSNlbmRpZlxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz0zNDY9c3RhdGljIHZvaWQgcGFyc2VfYnNkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTM2MS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzozNjI6XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyAlcyVkOiBcdTAwM2MlczpcJiMzNDssIHN0YXRlLVx1MDAzZW5hbWUsIG9yaWdpbiwgZmxhdm91cik7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzYzLVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zODItXHRcdGlmIChvZmZzZXQgXHUwMDNlIGJzZF9zdGFydCB8fCBvZmZzZXQmIzQzO3NpemUgXHUwMDNjIGJzZF9zdGFydCYjNDM7YnNkX3NpemUpIHtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzozODM6XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7YmFkIHN1YnBhcnRpdGlvbiAtIGlnbm9yZWRcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTM4NC1cdFx0XHRjb250aW51ZTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzg5LVx0aWYgKGxlMTZfdG9fY3B1KGwtXHUwMDNlZF9ucGFydGl0aW9ucykgXHUwMDNlIG1heF9wYXJ0aXRpb25zKVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjM5MDpcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgKGlnbm9yZWQgJWQgbW9yZSlcJiMzNDssXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzkxLVx0XHRcdCAgICAgICBsZTE2X3RvX2NwdShsLVx1MDAzZWRfbnBhcnRpdGlvbnMpIC0gbWF4X3BhcnRpdGlvbnMpO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjM5MjpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2VcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTM5My19XG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jPTQ3MD1zdGF0aWMgdm9pZCBwYXJzZV91bml4d2FyZShzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy00ODUtXHR9XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NDg2Olx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgJXMlZDogXHUwMDNjdW5peHdhcmU6XCYjMzQ7LCBzdGF0ZS1cdTAwM2VuYW1lLCBvcmlnaW4pO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTQ4Ny1cdHAgPSBcdTAwMjZsLVx1MDAzZXZ0b2Mudl9zbGljZVsxXTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNDk5LVx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NTAwOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFx1MDAzZVxcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTAxLSNlbmRpZlxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz01MTE9c3RhdGljIHZvaWQgcGFyc2VfbWluaXgoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTMwLVx0ICAgIHAtXHUwMDNlc3lzX2luZCA9PSBNSU5JWF9QQVJUSVRJT04pIHsgLyogc3VicGFydGl0aW9uIHRhYmxlIHByZXNlbnQgKi9cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo1MzE6XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7ICVzJWQ6IFx1MDAzY21pbml4OlwmIzM0Oywgc3RhdGUtXHUwMDNlbmFtZSwgb3JpZ2luKTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy01MzItXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1JTklYX05SX1NVQlBBUlRJVElPTlM7IGkmIzQzOyYjNDM7LCBwJiM0MzsmIzQzOykge1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy01MzktXHRcdH1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo1NDA6XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2VcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU0MS1cdH1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM9NTYwPWludCBtc2Rvc19wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTgzLSNlbHNlXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NTg0Olx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgW0FJWF1cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU4NS1cdFx0cmV0dXJuIDA7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTYxMC1cdFx0XHRcdFx1MDAyNlx1MDAyNiBmYXRfdmFsaWRfbWVkaWEoZmItXHUwMDNlbWVkaWEpKSB7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NjExOlx0XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02MTItXHRcdFx0XHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjU5LVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjY2MDpcdFx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgXHUwMDNjXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NjEtXHRcdFx0cGFyc2VfZXh0ZW5kZWQoc3RhdGUsIHN0YXJ0LCBzaXplLCBkaXNrc2lnKTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo2NjI6XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFx1MDAzZVwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjYzLVx0XHRcdGNvbnRpbnVlO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NjktXHRcdGlmIChwLVx1MDAzZXN5c19pbmQgPT0gRE02X1BBUlRJVElPTilcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo2NzA6XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7W0RNXVwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjcxLVx0XHRpZiAocC1cdTAwM2VzeXNfaW5kID09IEVaRF9QQVJUSVRJT04pXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NjcyOlx0XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1tFWkRdXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NzMtXHR9XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjc0LVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjY3NTpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjc2LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvb2YuYz0zNT1zdGF0aWMgdm9pZCBhZGRfb2ZfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGludCBzbG90LFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvb2YuYy02NC1cbmJsb2NrL3BhcnRpdGlvbnMvb2YuYzo2NTpcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7KCVzKVwmIzM0OywgaW5mby1cdTAwM2V2b2xuYW1lKTtcbmJsb2NrL3BhcnRpdGlvbnMvb2YuYy02Ni19XG4tLVxuYmxvY2svcGFydGl0aW9ucy9vZi5jPTY4PWludCBvZl9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL29mLmMtMTA2LVxuYmxvY2svcGFydGl0aW9ucy9vZi5jOjEwNzpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL29mLmMtMTA4LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvb3NmLmM9MTY9aW50IG9zZl9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL29zZi5jLTgzLVx0fVxuYmxvY2svcGFydGl0aW9ucy9vc2YuYzo4NDpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL29zZi5jLTg1LVx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9zZ2kuYz0zNj1pbnQgc2dpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvc2dpLmMtODEtXHR9XG5ibG9jay9wYXJ0aXRpb25zL3NnaS5jOjgyOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvc2dpLmMtODMtXHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL3N1bi5jPTIxPWludCBzdW5fcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9zdW4uYy0xMjMtXHR9XG5ibG9jay9wYXJ0aXRpb25zL3N1bi5jOjEyNDpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL3N1bi5jLTEyNS1cdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmM9NDk9aW50IHN5c3Y2OF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jLTc1LVx0c2xpY2VzIC09IDE7IC8qIGxhc3Qgc2xpY2UgaXMgdGhlIHdob2xlIGRpc2sgKi9cbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmM6NzY6XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O3N5c1Y2ODogJXMocyV1KVwmIzM0Oywgc3RhdGUtXHUwMDNlbmFtZSwgc2xpY2VzKTtcbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmMtNzctXHRzbGljZSA9IChzdHJ1Y3Qgc2xpY2UgKilkYXRhO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmMtODQtXHRcdFx0XHRiZTMyX3RvX2NwdShzbGljZS1cdTAwM2VuYmxvY2tzKSk7XG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jOjg1Olx0XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7KHMldSlcJiMzNDssIGkpO1xuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYy04Ni1cdFx0fVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmMtODgtXHR9XG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jOjg5Olx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmMtOTAtXHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL3VsdHJpeC5jPTEyPWludCB1bHRyaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy91bHRyaXguYy00MS1cdFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG5ibG9jay9wYXJ0aXRpb25zL3VsdHJpeC5jOjQyOlx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy91bHRyaXguYy00My1cdFx0cmV0dXJuIDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDM3CgkJCQkJCQlvdXRwdXQ6IDc0CgkJCQkJCQl0aG91Z2h0czogMTA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIGEgTG9nZ2luZy1SZWxhdGVkIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTt2ZSBnb3QgYSBwYXRjaCB0aGF0IGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwcmludGluZyBwYXJ0aXRpb24gbmFtZXMgdG8gZG1lc2cgdmlhIGBwcmludGtgIHdpdGhpbiBgY2hlY2tfcGFydGl0aW9uYC4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBmaXggd29ydGggZnV6emluZz8gU3l6a2FsbGVyIGFscmVhZHkgZm91bmQgdGhlIG9yaWdpbmFsIGJ1ZyAoY29uZmlybWVkIGJ5IHRoZSBjb21taXQgYXV0aG9yIGJlaW5nIGBzeXotY2x1c3RlcmApLCBzbyB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgKmZpeCogbmVlZHMgZnV6emluZy4KCk15IHByaW1hcnkgY29uY2VybiBpcyB0aGF0IHRoZSBmaXggc2VlbXMgdG8gYm9pbCBkb3duIHRvIHN0cmluZyBmb3JtYXR0aW5nIGNoYW5nZXMuIFRoaXMgdHJpZ2dlcnMgdGhlIHByb21wdCYjMzk7cyBjcml0ZXJpYTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuJiMzNDsgSXQgYXBwZWFycyB0aGUgcGF0Y2ggKm9ubHkqIG1vZGlmaWVzIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYCBjYWxscywgYm90aCBvZiB3aGljaCBhcmUgdXNlZCBmb3IgbG9nZ2luZy4gU3BlY2lmaWNhbGx5LCBgc2VxX2J1Zl9wcmludGZgIGNvbnN0cnVjdHMgdGhlIHN0cmluZyB0aGF0IGBwcmludGtgIHRoZW4gdXNlcyB0byB3cml0ZSB0byBkbWVzZy4KClRoZSBjb3JlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgc3RyaW5nIGZvcm1hdHRpbmcgY2hhbmdlIGNvbnN0aXR1dGUgYSAqZnVuY3Rpb25hbCogYWx0ZXJhdGlvbj8gSXQgKnByZXZlbnRzKiBhbiBPT0IgcmVhZCwgd2hpY2ggY291bGQsIHRoZW9yZXRpY2FsbHksIGNhdXNlIGEga2VybmVsIGNyYXNoIG9yIGluZm9ybWF0aW9uIGxlYWsgaW50byBkbWVzZy4gSG93ZXZlciwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IGxvZ2dpbmcuIFRoZSBwcm9tcHQgc2VlbXMgdG8gY2xhc3NpZnkgYHNlcV9idWZfcHJpbnRmYCAod2hpY2ggYnVpbGRzIHRoZSBwcmludCBzdHJpbmcpIGFzIHBhcnQgb2YgbG9nZ2luZy4gVGhlIGNoYW5nZSBpdHNlbGYgcHJldmVudHMgcmVhZGluZyBwYXN0IHRoZSBlbmQgb2YgYSBub24tbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgd2hpY2ggaXMgcHVyZWx5IGFib3V0IHRoZSBmb3JtYXR0aW5nIGFuZCBzYWZldHkgb2YgdGhlIGxvZ2dpbmcgb3V0cHV0LgoKTG9va2luZyBhdCB0aGUgcGF0Y2ggaXRzZWxmIGNvbmZpcm1zIHRoaXMuIEl0IGNoYW5nZXMgYHNlcV9idWZfcHJpbnRmYCBmcm9tIGAmIzM0OyVzJiMzNDtgIHRvIGAmIzM0OyUuKnMmIzM0O2AgYW5kIGFkZHMgYSBsZW5ndGggYXJndW1lbnQuIFNpbWlsYXJseSwgYHByX3dhcm5gIGlzIGNoYW5nZWQgZnJvbSB1c2luZyBgc25wcmludGZgIHRvIGAmIzM0OyUuKnMmIzM0O2Agd2l0aCBhbiBleHBsaWNpdCBsZW5ndGguIEl0JiMzOTtzIHN0cmljdGx5IGFib3V0IHByZXZlbnRpbmcgcmVhZHMgYmV5b25kIHRoZSBib3VuZHMgb2YgdGhlIHBhcnRpdGlvbiBuYW1lIHN0cmluZy4gSXQmIzM5O3MgZGlyZWN0bHkgYWRkcmVzc2luZyB0aGUgbG9nZ2luZyBiZWhhdmlvciBpdHNlbGYuCgpUaGUga2V5IGlzIHRoYXQgYHN0YXRlLSZndDtwcF9idWZgICh3aGljaCBpcyBtb2RpZmllZCBieSBgc2VxX2J1Zl9wcmludGZgKSBpcyAqb25seSogdXNlZCBmb3IgYHByaW50a2AuIFRoZSByZWxldmFudCBjb2RlIHNlZ21lbnQgY29uZmlybXMgdGhpcy4gSXQgaXMgZnJlZWQgZGlyZWN0bHkgYWZ0ZXIgYmVpbmcgcHJpbnRlZC4KCldoaWxlIGZpeGluZyBhIHBvdGVudGlhbCBjcmFzaCBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIHN0YWJpbGl0eSwgdGhlIHByb21wdCBlbXBoYXNpemVzIHRoZSAqbmF0dXJlKiBvZiB0aGUgY2hhbmdlcy4gVGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBjaGFuZ2VzIHRvIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYCwgdGhlcmVmb3JlIHRoZSBjaGFuZ2UgaXMgbG9nZ2luZyBjaGFuZ2VzLiBUaGlzIGFwcGVhcnMgdG8gZmFsbCBzcXVhcmVseSB1bmRlciAmIzM0O1B1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLiYjMzQ7IEV2ZW4gaWYgdGhlIGxvZ2dpbmcgbm93IHByZXZlbnRzIGNyYXNoZXMsIHRoZSBjaGFuZ2UgaXMgaW4gdGhlIGxvZ2dpbmcgc3RhdGVtZW50IGl0c2VsZiwgYW5kIGRvZXMgbm90IGFsdGVyIHRoZSBwYXJ0aXRpb24gcGFyc2VyIGxvZ2ljLgoKVGhlcmVmb3JlLCBkZXNwaXRlIHRoZSBwb3RlbnRpYWwgY3Jhc2ggYXZvaWRhbmNlLCBJIHdpbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGJlY2F1c2UgdGhlIHBhdGNoIGlzIGxpbWl0ZWQgdG8gbW9kaWZ5aW5nIGxvZ2dpbmcgc3RhdGVtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGxvZ2dpbmcgc3RhdGVtZW50cyAoc2VxX2J1Zl9wcmludGYgYW5kIHByX3dhcm4pIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByaW50aW5nIHBhcnRpdGlvbiBuYW1lcy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcGFydGl0aW9uIHBhcnNlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgbG9nZ2luZyBzdGF0ZW1lbnRzIChzZXFfYnVmX3ByaW50ZiBhbmQgcHJfd2FybikgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJpbnRpbmcgcGFydGl0aW9uIG5hbWVzLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBwYXJ0aXRpb24gcGFyc2VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjE5LjQ4NzMwOTQ4M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNzU4MjUxOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGxvZ2dpbmcgc3RhdGVtZW50cyAoc2VxX2J1Zl9wcmludGYgYW5kIHByX3dhcm4pIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByaW50aW5nIHBhcnRpdGlvbiBuYW1lcy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcGFydGl0aW9uIHBhcnNlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjE5LjQ4NzMxNTI1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg2ODUzMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDMwNTk4NjU3ZmFhODgzMmZhMTUwOWU1NjdmMzExYjg1ODFkNGJhOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDo1MDoxNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2FpeC5jIGIvYmxvY2svcGFydGl0aW9ucy9haXguY1xcbmluZGV4IGYzYzQxNzRlMDAzZTlkLi5mZTJkMmNiMGM0ZTc4NSAxMDA2NDRcXG4tLS0gYS9ibG9jay9wYXJ0aXRpb25zL2FpeC5jXFxuKysrIGIvYmxvY2svcGFydGl0aW9ucy9haXguY1xcbkBAIC0yNjEsNyArMjYxLDggQEAgaW50IGFpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4gXFx0XFx0XFx0XFx0cHV0X3BhcnRpdGlvbihzdGF0ZSwgbHZfaXggKyAxLFxcbiBcXHRcXHRcXHRcXHQgIChpICsgMSAtIGxwX2l4KSAqIHBwX2Jsb2Nrc19zaXplICsgcHNuX3BhcnQxLFxcbiBcXHRcXHRcXHRcXHQgIGx2aXBbbHZfaXhdLnBwc19wZXJfbHYgKiBwcF9ibG9ja3Nfc2l6ZSk7XFxuLVxcdFxcdFxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFxcdTAwM2Mlc1xcdTAwM2VcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFxcdTAwM2MlLipzXFx1MDAzZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIChpbnQpc2l6ZW9mKG5bbHZfaXhdLm5hbWUpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgbltsdl9peF0ubmFtZSk7XFxuIFxcdFxcdFxcdFxcdGx2aXBbbHZfaXhdLmx2X2lzX2NvbnRpZ3VvdXMgPSAxO1xcbiBcXHRcXHRcXHRcXHRyZXQgPSAxO1xcbkBAIC0yNzEsMTIgKzI3MiwxMCBAQCBpbnQgYWl4X3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbiBcXHRcXHR9XFxuIFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzdGF0ZS1cXHUwMDNlbGltaXQ7IGkgKz0gMSlcXG4gXFx0XFx0XFx0aWYgKGx2aXBbaV0ucHBzX2ZvdW5kIFxcdTAwMjZcXHUwMDI2ICFsdmlwW2ldLmx2X2lzX2NvbnRpZ3VvdXMpIHtcXG4tXFx0XFx0XFx0XFx0Y2hhciB0bXBbc2l6ZW9mKG5baV0ubmFtZSkgKyAxXTsgLy8gbnVsbCBjaGFyXFxuLVxcbi1cXHRcXHRcXHRcXHRzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCBcXFwiJXNcXFwiLCBuW2ldLm5hbWUpO1xcbi1cXHRcXHRcXHRcXHRwcl93YXJuKFxcXCJwYXJ0aXRpb24gJXMgKCV1IHBwJ3MgZm91bmQpIGlzIFxcXCJcXG4rXFx0XFx0XFx0XFx0cHJfd2FybihcXFwicGFydGl0aW9uICUuKnMgKCV1IHBwJ3MgZm91bmQpIGlzIFxcXCJcXG4gXFx0XFx0XFx0XFx0XFx0XFxcIm5vdCBjb250aWd1b3VzXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHR0bXAsIGx2aXBbaV0ucHBzX2ZvdW5kKTtcXG4rXFx0XFx0XFx0XFx0XFx0KGludClzaXplb2YobltpXS5uYW1lKSwgbltpXS5uYW1lLFxcbitcXHRcXHRcXHRcXHRcXHRsdmlwW2ldLnBwc19mb3VuZCk7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0a2ZyZWUocHZkKTtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo1MDoyMC4zNzczMDg0ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODY4MjQxNjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGxvZ2dpbmcgc3RhdGVtZW50cyAoc2VxX2J1Zl9wcmludGYgYW5kIHByX3dhcm4pIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByaW50aW5nIHBhcnRpdGlvbiBuYW1lcy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcGFydGl0aW9uIHBhcnNlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDMwNTk4NjU3ZmFhODgzMmZhMTUwOWU1NjdmMzExYjg1ODFkNGJhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjUwOjE3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYmxvY2svcGFydGl0aW9ucy9haXguYyBiL2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmNcbmluZGV4IGYzYzQxNzRlMDAzZTlkLi5mZTJkMmNiMGM0ZTc4NSAxMDA2NDRcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmNcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmNcbkBAIC0yNjEsNyArMjYxLDggQEAgaW50IGFpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbiBcdFx0XHRcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIGx2X2l4ICsgMSxcbiBcdFx0XHRcdCAgKGkgKyAxIC0gbHBfaXgpICogcHBfYmxvY2tzX3NpemUgKyBwc25fcGFydDEsXG4gXHRcdFx0XHQgIGx2aXBbbHZfaXhdLnBwc19wZXJfbHYgKiBwcF9ibG9ja3Nfc2l6ZSk7XG4tXHRcdFx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwiIFx1MDAzYyVzXHUwMDNlXFxuXCIsXG4rXHRcdFx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwiIFx1MDAzYyUuKnNcdTAwM2VcXG5cIixcbitcdFx0XHRcdFx0ICAgICAgIChpbnQpc2l6ZW9mKG5bbHZfaXhdLm5hbWUpLFxuIFx0XHRcdFx0XHQgICAgICAgbltsdl9peF0ubmFtZSk7XG4gXHRcdFx0XHRsdmlwW2x2X2l4XS5sdl9pc19jb250aWd1b3VzID0gMTtcbiBcdFx0XHRcdHJldCA9IDE7XG5AQCAtMjcxLDEyICsyNzIsMTAgQEAgaW50IGFpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbiBcdFx0fVxuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzdGF0ZS1cdTAwM2VsaW1pdDsgaSArPSAxKVxuIFx0XHRcdGlmIChsdmlwW2ldLnBwc19mb3VuZCBcdTAwMjZcdTAwMjYgIWx2aXBbaV0ubHZfaXNfY29udGlndW91cykge1xuLVx0XHRcdFx0Y2hhciB0bXBbc2l6ZW9mKG5baV0ubmFtZSkgKyAxXTsgLy8gbnVsbCBjaGFyXG4tXG4tXHRcdFx0XHRzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCBcIiVzXCIsIG5baV0ubmFtZSk7XG4tXHRcdFx0XHRwcl93YXJuKFwicGFydGl0aW9uICVzICgldSBwcCdzIGZvdW5kKSBpcyBcIlxuK1x0XHRcdFx0cHJfd2FybihcInBhcnRpdGlvbiAlLipzICgldSBwcCdzIGZvdW5kKSBpcyBcIlxuIFx0XHRcdFx0XHRcIm5vdCBjb250aWd1b3VzXFxuXCIsXG4tXHRcdFx0XHRcdHRtcCwgbHZpcFtpXS5wcHNfZm91bmQpO1xuK1x0XHRcdFx0XHQoaW50KXNpemVvZihuW2ldLm5hbWUpLCBuW2ldLm5hbWUsXG4rXHRcdFx0XHRcdGx2aXBbaV0ucHBzX2ZvdW5kKTtcbiBcdFx0XHR9XG4gXHRcdGtmcmVlKHB2ZCk7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo1MDoyMC4zNzczMTEzNDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTA2MTUwNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJsb2NrIFBhcnRpdGlvbmluZyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBibG9jay9wYXJ0aXRpb25zL2FpeC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0IHNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgY2xlYW51cCwgc3dhcHBpbmcgb3V0IHRoZSBvbGQgYCVzYCBmb3JtYXR0aW5nIHdpdGggYCUuKnNgIGFuZCBhIGAoaW50KXNpemVvZihuW2x2X2l4XS5uYW1lKWAgaW4gYHNlcV9idWZfcHJpbnRmYCBhbmQgYHByX3dhcm5gLiBJIHNhdyB0aGF0IGl0IHdhcyBqdXN0IGEgc3RyaW5nIGZvcm1hdHRpbmcgZml4IGluIGxvZ2dpbmcgYW5kIHBhcnRpdGlvbiBuYW1lIHByaW50aW5nLiBUaGUgZ29hbCBpcyBsaWtlbHkgdG8gcHJldmVudCBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHN0cmluZyByZWFkLCBvciBhdCB0aGUgbGVhc3QsIGF2b2lkIHRoZSBvdmVyaGVhZCBvZiBjb3B5aW5nIHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4gTm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXMgZGVlcGx5IGFyY2hpdGVjdHVyYWwuXG5cbkJ1dCB3YWl0IGEgbWludXRl4oCmIEkgc2VlIGBzZXFfYnVmX3ByaW50ZmAgaXMgcHJpbnRpbmcgdG8gYHN0YXRlLVx1MDAzZXBwX2J1ZmAsIGFuZCB0aGF0IGJ1ZmZlciBpcyB1c2VkIGZvciBwYXJ0aXRpb24gaW5mb3JtYXRpb24gdGhhdCAqY291bGQqIGJlIGV4cG9zZWQgdG8gdXNlcnNwYWNlIOKAkyBgL3Byb2MvcGFydGl0aW9uc2AsIGRtZXNnLCBldGMuIE5vdyBpdCBpcyBzdGFydGluZyB0byBsb29rIGxpa2UgYSBwb3NzaWJsZSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhpcyBgJS4qc2AgdXNhZ2Ugd291bGQgcHJldmVudCByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiBgbltsdl9peF0ubmFtZWAsIHdoaWNoIG1pZ2h0IG5vdCBiZSBudWxsLXRlcm1pbmF0ZWQuIFNvIHRoaXMgKmNvdWxkKiBiZSBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgc2VjdXJpdHkgaXNzdWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIHdhc24ndCBudWxsLXRlcm1pbmF0ZWQuXG5cbkFscmlnaHQsIEkgbmVlZCB0byBkaWcgaW50byBgYmxvY2svcGFydGl0aW9ucy9haXguY2AgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjI1LjI4MzQ2NDU2MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQxNjY2MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWl4X3BhcnRpdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9wYXJ0aXRpb25zL2FpeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvYWl4LmM9MTM4PXN0YXRpYyBzdHJ1Y3QgbHZuYW1lICphbGxvY19sdm4oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTMyIGxiYSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTUzLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTU0OmludCBhaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xNTUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo1MDoyNS40Mzc2NDQwNjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQ3MjQwODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgVmFyaWFibGUgJ24nKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gb24gbXkgbWluZCwgZ2l2ZW4gd2hhdGV2ZXIgY29udGV4dCB3ZSdyZSBpbiwgaXMgdGhlIG5hdHVyZSBvZiB0aGUgdmFyaWFibGUgJ24nLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaXRzIGRlZmluaXRpb24sIGl0cyBkb21haW4sIGFuZCBpdHMgcG90ZW50aWFsIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIHN5c3RlbSB3ZSdyZSBleGFtaW5pbmcuIElzIHRoaXMgYSBzY2FsYXIsIGEgdmVjdG9yLCBvciBwZXJoYXBzIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggbGlrZSBhIGZ1bmN0aW9uPyBEb2VzICduJyByZXByZXNlbnQgYSBudW1iZXIsIGFuIGluZGV4LCBhIGRpbWVuc2lvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzcGVjaWZpYyBmaWVsZCBjb250ZXh0IHdpbGwgZHJhbWF0aWNhbGx5IGluZmx1ZW5jZSBteSB1bmRlcnN0YW5kaW5nLiBGb3IgZXhhbXBsZSwgaW4gY29tcHV0YXRpb25hbCBudW1iZXIgdGhlb3J5LCAnbicgbWlnaHQgcmVwcmVzZW50IGEgbW9kdWx1cywgd2hpbGUgaW4gZ3JhcGggdGhlb3J5LCBpdCdzIGxpa2VseSB0aGUgbnVtYmVyIG9mIG5vZGVzLiBLbm93aW5nIHRoaXMsIEkgY2FuIGJlZ2luIHRvIGFudGljaXBhdGUgaXRzIGltcGFjdCBvbiB0aGUgYWxnb3JpdGhtcyBvciBwcmluY2lwbGVzIGF0IHBsYXkuIEkgaGF2ZSB0byBhc3Nlc3MgaG93IHNpZ25pZmljYW50IHRoaXMgdmFsdWUgaXMsIHdoYXQgcmVzdHJpY3Rpb25zIGFyZSBwbGFjZWQgdXBvbiBpdCwgYW5kIGhvdyB0aGV5IHNoYXBlIHRoZSBwcm9ibGVtLiBPbmx5IHdpdGggdGhpcyBwcmVsaW1pbmFyeSB1bmRlcnN0YW5kaW5nIHdpbGwgSSBiZSBhYmxlIHRvIGVmZmVjdGl2ZWx5IGRpc3NlY3QgdGhlIHByb2JsZW0gYXQgaGFuZCBhbmQgYmVnaW4gYSBtZWFuaW5nZnVsIHNvbHV0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NTA6MjguMzg0ODg3ODc1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDI4NjM0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgbHZuYW1lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvYWl4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svcGFydGl0aW9ucy9haXguYz0zND1zdHJ1Y3QgbHZkIHtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtNDUtXFxuYmxvY2svcGFydGl0aW9ucy9haXguYzo0NjpzdHJ1Y3QgbHZuYW1lIHtcXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTQ3LVxcdGNoYXIgbmFtZVs2NF07XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jPTExMz1zdGF0aWMgc3RydWN0IHB2ZCAqYWxsb2NfcHZkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHUzMiBsYmEpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTEzNy0gKi9cXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jOjEzODpzdGF0aWMgc3RydWN0IGx2bmFtZSAqYWxsb2NfbHZuKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHUzMiBsYmEpXFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xMzkte1xcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTQwOlxcdHNpemVfdCBjb3VudCA9IHNpemVvZihzdHJ1Y3QgbHZuYW1lKSAqIExWTV9NQVhMVlM7XFxuYmxvY2svcGFydGl0aW9ucy9haXguYzoxNDE6XFx0c3RydWN0IGx2bmFtZSAqcDtcXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE0Mi1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM9MTU0PWludCBhaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE2OS1cXHR9ICpsdmlwO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTcwOlxcdHN0cnVjdCBsdm5hbWUgKm4gPSBOVUxMO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTcxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo1MDoyOC42NTUxNzk2MjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjE3NzcxOTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQUlYIFBhcnRpdGlvbiBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjaGFuZ2UgaW4gYGFpeF9wYXJ0aXRpb25gLiBJdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIHJlcGxhY2luZyB0aGUgZGlyZWN0IHVzZSBvZiBgJXNgIGluIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYCB3aXRoIGAlLipzYC4gVGhlIGtleSBpcyB0aGF0IHRoZSBjaGFuZ2UgaW50cm9kdWNlcyBhbiBleHBsaWNpdCBsZW5ndGggc3BlY2lmaWVyIHdoZW4gcHJpbnRpbmcgdGhlIHBhcnRpdGlvbiBuYW1lLCBjYWxjdWxhdGVkIGZyb20gYHNpemVvZihuW2x2X2l4XS5uYW1lKWAuIFRoaXMgaXMgY2xlYXJseSBhIGRlZmVuc2l2ZSBtZWFzdXJlLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgdG8gYXZvaWQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGlmIHRoZSBgbltsdl9peF0ubmFtZWAgYnVmZmVyIGlzICpub3QqIG51bGwtdGVybWluYXRlZC4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgaXNzdWUgdGhhdCBjYW4gbGVhZCB0byBzdWJ0bGUgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBpcyB0aGlzIHdvcnRoeSBvZiBmdXp6aW5nPyBJdCBpbnZvbHZlcyBhIHBhcnRpdGlvbiBwYXJzZXIsIHNwZWNpZmljYWxseSBgYWl4X3BhcnRpdGlvbmAuIEFuZCwgZnJvbSBleHBlcmllbmNlLCBmdXp6aW5nIHBhcnRpdGlvbiBwYXJzZXJzICppcyogdmlhYmxlLiBZb3UgY2FuIGNyZWF0ZSBtYWxpY2lvdXMgcGFydGl0aW9uIHRhYmxlcyBhbmQgZmVlZCB0aGVtIHRvIHRoZSBwYXJzZXIg4oCTIHRoZSBsb29wIGRldmljZSBhcHByb2FjaCB3aXRoIGNyYWZ0ZWQgaW1hZ2VzIGhhcyBhbHdheXMgYmVlbiBhIHNvbGlkIG1ldGhvZC4gQnV0IEkgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhpcyBmaXRzIGludG8gdGhlIG92ZXJhbGwgc2NoZW1lLi4uIE9oLCByaWdodCEgYGFpeF9wYXJ0aXRpb25gIGlzIHBhcnQgb2YgdGhlIGJsb2NrIHBhcnRpdGlvbiBwYXJzZXJzLiBUaGF0IGlzIGEgdmFsdWFibGUgcGllY2Ugb2YgaW5mb3JtYXRpb24uIExldCdzIG1ha2Ugc3VyZSB0aGUgYEFJWF9QQVJUSVRJT05gIGNvbmZpZ3VyYXRpb24gZXhpc3RzIGJlZm9yZSB3ZSBjb25zaWRlciB0aGlzIGZ1bGx5LiBUaGlzIHdpbGwgaW5mb3JtIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgYWN0dWFsbHkgYWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjMzLjg3Mjk1NDM3NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI3NjYzMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQUlYX1BBUlRJVElPTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9wYXJ0aXRpb25zL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9wYXJ0aXRpb25zL0tjb25maWc9NjU9Y29uZmlnIEFDT1JOX1BBUlRJVElPTl9SSVNDSVhcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvS2NvbmZpZy03My1cXG5ibG9jay9wYXJ0aXRpb25zL0tjb25maWc6NzQ6Y29uZmlnIEFJWF9QQVJUSVRJT05cXG5ibG9jay9wYXJ0aXRpb25zL0tjb25maWctNzUtXFx0Ym9vbCBcXFwiQUlYIGJhc2ljIHBhcnRpdGlvbiB0YWJsZSBzdXBwb3J0XFxcIiBpZiBQQVJUSVRJT05fQURWQU5DRURcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfQVRBUklfUEFSVElUSU9OKSArPSBhdGFyaS5vXFxuYmxvY2svcGFydGl0aW9ucy9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQUlYX1BBUlRJVElPTikgKz0gYWl4Lm9cXG5ibG9jay9wYXJ0aXRpb25zL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19DTURMSU5FX1BBUlRJVElPTikgKz0gY21kbGluZS5vXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM9NTYwPWludCBtc2Rvc19wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy01ODAtXFx0XFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjU4MTojaWZkZWYgQ09ORklHX0FJWF9QQVJUSVRJT05cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTgyLVxcdFxcdHJldHVybiBhaXhfcGFydGl0aW9uKHN0YXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NTA6MzQuMTQ1NzI2MTk3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3MTgxMDIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgYENPTkZJR19BSVhfUEFSVElUSU9OYCBGaXgqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX0FJWF9QQVJUSVRJT05gIGlzIGRlZmluaXRlbHkgYSB0aGluZy4gTm93IHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzdHJpbmcgZm9ybWF0dGluZyBmaXggd29ydGggdGhlIGZ1enppbmcgZWZmb3J0PyBUaGUgcGF0Y2ggc2VlbXMgcHJldHR5IGNvbnRhaW5lZDsgaXQncyBqdXN0IGFib3V0IHByZXZlbnRpbmcgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBgc2VxX2J1Zl9wcmludGZgIGFuZCBgcHJfd2FybmAuIEhtbSwgbGV0IG1lIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZyBsaWtlIGBwcl9lcnJgLCBoYXJtbGVzcyBjb25zdGFudC9tYWNybyBjaGFuZ2VzLCBvciB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuVGhlIGNvcmUgY2hhbmdlIGlzIHRvIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGl0IGxvb2tzIGxpa2UgdGhhdCdzIHVzZWQgdG8gYnVpbGQgdGhlIHBhcnRpdGlvbiBzdHJpbmcgdGhhdCBlbmRzIHVwIGluIGRtZXNnIG9yIGAvcHJvYy9wYXJ0aXRpb25zYC4gT2theSwgc28gYHN0YXRlLVx1MDAzZXBwX2J1ZmAsIGxldCBtZSBjb25maXJtIHdoZXJlIHRoYXQncyB1c2VkLiBSaWdodCwgaXQgbG9va3MgbGlrZSBgc3RhdGUtXHUwMDNlcHBfYnVmYCBpcyB1c2VkIGluIGBibG9jay9wYXJ0aXRpb25zL2NvcmUuY2AuIExldCBtZSBkaXZlIGluIHRoZXJlIGZvciBhIGNsb3NlciBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzQ2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjM4LjUxNzUzODYyM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1NDI3Nzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBwX2J1ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9wYXJ0aXRpb25zL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM9MjY9YWRmc19wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgY2hhciAqbmFtZSwgY2hhciAqZGF0YSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00My1cXHRpZiAobmFtZSkge1xcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzo0NDpcXHRcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBbJXNdXFxcIiwgbmFtZSk7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTQ1LVxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz02OT1zdGF0aWMgaW50IHJpc2NpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy03OS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6ODA6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFtSSVNDaVhdXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTgxLVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTg2LVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzo4NzpcXHRcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgXFx1MDAzY1xcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy04OC1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy05NS1cXHRcXHRcXHRcXHRcXHRsZTMyX3RvX2NwdShyci1cXHUwMDNlcGFydFtwYXJ0XS5sZW5ndGgpKTtcXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6OTY6XFx0XFx0XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIoJXMpXFxcIiwgcnItXFx1MDAzZXBhcnRbcGFydF0ubmFtZSk7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTk3LVxcdFxcdFxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy05OS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6MTAwOlxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTAxLVxcdH0gZWxzZSB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM9MTIyPXN0YXRpYyBpbnQgbGludXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTI5LVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzoxMzA6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFtMaW51eF1cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTMxLVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTEzNy1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6MTM4OlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNjXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTEzOS1cXHR3aGlsZSAobGludXhwLVxcdTAwM2VtYWdpYyA9PSBjcHVfdG9fbGUzMihMSU5VWF9OQVRJVkVfTUFHSUMpIHx8XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTQ3LVxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6MTQ4OlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTE0OS1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz0yNDc9aW50IGFkZnNwYXJ0X2NoZWNrX0FERlMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0yOTItXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzoyOTM6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMjk0LVxcdHJldHVybiAxO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jPTM0Nz1pbnQgYWRmc3BhcnRfY2hlY2tfSUNTKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMzY1LVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzozNjY6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFtJQ1NdXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTM2Ny1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0zOTktXFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjQwMDpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00MDEtXFx0cmV0dXJuIDE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM9NDQzPWludCBhZGZzcGFydF9jaGVja19QT1dFUlRFQyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTQ1OS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6NDYwOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBbUE9XRVJURUNdXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTQ2MS1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00NzAtXFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjQ3MTpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00NzItXFx0cmV0dXJuIDE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM9NTA0PWludCBhZGZzcGFydF9jaGVja19FRVNPWChzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTU0MS1cXHRcXHRwdXRfcGFydGl0aW9uKHN0YXRlLCBzbG90KyssIHN0YXJ0LCBzaXplIC0gc3RhcnQpO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzo1NDI6XFx0XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNTQzLVxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM9MTU0PWludCBhaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE4MS1cXHRcXHRcXHRwcF9ibG9ja3Nfc2l6ZSA9IHBwX2J5dGVzX3NpemUgLyA1MTI7XFxuYmxvY2svcGFydGl0aW9ucy9haXguYzoxODI6XFx0XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsXFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xODMtXFx0XFx0XFx0XFx0ICAgICAgIFxcXCIgQUlYIExWTSBoZWFkZXIgdmVyc2lvbiAldSBmb3VuZFxcXFxuXFxcIixcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTg3LVxcdFxcdH0gZWxzZSB7XFxuYmxvY2svcGFydGl0aW9ucy9haXguYzoxODg6XFx0XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsXFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xODktXFx0XFx0XFx0XFx0ICAgICAgIFxcXCIgdW5zdXBwb3J0ZWQgQUlYIExWTSB2ZXJzaW9uICVkIGZvdW5kXFxcXG5cXFwiLFxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0yNjMtXFx0XFx0XFx0XFx0ICBsdmlwW2x2X2l4XS5wcHNfcGVyX2x2ICogcHBfYmxvY2tzX3NpemUpO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MjY0OlxcdFxcdFxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFxcdTAwM2MlLipzXFx1MDAzZVxcXFxuXFxcIixcXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTI2NS1cXHRcXHRcXHRcXHRcXHQgICAgICAgKGludClzaXplb2Yobltsdl9peF0ubmFtZSksXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmM9MzY9aW50IGFtaWdhX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTg0LVxcdC8qIEJlIG1vcmUgaW5mb3JtYXRpdmUgKi9cXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmM6ODU6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgUkRTSyAoJWQpXFxcIiwgYmxrc2l6ZSAqIDUxMik7XFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTg2LVxcdGJsayA9IGJlMzJfdG9fY3B1KHJkYi1cXHUwMDNlcmRiX1BhcnRpdGlvbkxpc3QpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE4MC1cXHRcXHRcXHRpZiAoZG9zdHlwZVszXSBcXHUwMDNjICcgJylcXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmM6MTgxOlxcdFxcdFxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLFxcbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYy0xODItXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXCIgKCVjJWMlY14lYylcXFwiLFxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE4Ni1cXHRcXHRcXHRlbHNlXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jOjE4NzpcXHRcXHRcXHRcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZixcXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtMTg4LVxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFwiICglYyVjJWMlYylcXFwiLFxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE5MC1cXHRcXHRcXHRcXHRcXHQgICAgICAgZG9zdHlwZVsyXSwgZG9zdHlwZVszXSk7XFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jOjE5MTpcXHRcXHRcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIihyZXMgJWQgc3BiICVkKVxcXCIsXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE5Mi1cXHRcXHRcXHRcXHQgICAgICAgYmUzMl90b19jcHUocGItXFx1MDAzZXBiX0Vudmlyb25tZW50WzZdKSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYy0xOTYtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYzoxOTc6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtMTk4LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jPTM0PWludCBhdGFyaV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy03Mi1cXHRwaSA9IFxcdTAwMjZycy1cXHUwMDNlcGFydFswXTtcXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6NzM6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIEFIRElcXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtNzQtXFx0Zm9yIChzbG90ID0gMTsgcGkgXFx1MDAzYyBcXHUwMDI2cnMtXFx1MDAzZXBhcnRbNF0gXFx1MDAyNlxcdTAwMjYgc2xvdCBcXHUwMDNjIHN0YXRlLVxcdTAwM2VsaW1pdDsgc2xvdCsrLCBwaSsrKSB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtOTEtI2VuZGlmXFxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jOjkyOlxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBYR01cXHUwMDNjXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTkzLVxcdFxcdHBhcnRzZWN0ID0gZXh0ZW5zZWN0ID0gYmUzMl90b19jcHUocGktXFx1MDAzZXN0KTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy0xMzAtXFx0XFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYzoxMzE6XFx0XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFxcdTAwM2VcXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtMTMyLVxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy0xMzctXFx0XFx0aWYgKE9LX2lkKHBpLVxcdTAwM2VpZCkpIHtcXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6MTM4OlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBJQ0RcXHUwMDNjXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTEzOS1cXHRcXHRcXHRmb3IgKDsgcGkgXFx1MDAzYyBcXHUwMDI2cnMtXFx1MDAzZWljZHBhcnRbOF0gXFx1MDAyNlxcdTAwMjYgc2xvdCBcXHUwMDNjIHN0YXRlLVxcdTAwM2VsaW1pdDsgc2xvdCsrLCBwaSsrKSB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtMTQ2LVxcdFxcdFxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6MTQ3OlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTE0OC1cXHRcXHR9XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtMTUyLVxcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYzoxNTM6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtMTU0LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oPTExPXN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmgtMjMtXFx0Ym9vbCBhY2Nlc3NfYmV5b25kX2VvZDtcXG5ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmg6MjQ6XFx0c3RydWN0IHNlcV9idWYgcHBfYnVmO1xcbmJsb2NrL3BhcnRpdGlvbnMvY2hlY2suaC0yNS19O1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oPTM4PXB1dF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpwLCBpbnQgbiwgc2VjdG9yX3QgZnJvbSwgc2VjdG9yX3Qgc2l6ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvY2hlY2suaC00Mi1cXHRcXHRwLVxcdTAwM2VwYXJ0c1tuXS5zaXplID0gc2l6ZTtcXG5ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmg6NDM6XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnAtXFx1MDAzZXBwX2J1ZiwgXFxcIiAlcyVkXFxcIiwgcC1cXHUwMDNlbmFtZSwgbik7XFxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oLTQ0LVxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvY21kbGluZS5jPTIyOD1zdGF0aWMgaW50IGFkZF9wYXJ0KGludCBzbG90LCBzdHJ1Y3QgY21kbGluZV9zdWJwYXJ0ICpzdWJwYXJ0LFxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmMtMjQ1LVxcbmJsb2NrL3BhcnRpdGlvbnMvY21kbGluZS5jOjI0NjpcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiglcylcXFwiLCBpbmZvLVxcdTAwM2V2b2xuYW1lKTtcXG5ibG9jay9wYXJ0aXRpb25zL2NtZGxpbmUuYy0yNDctXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2NtZGxpbmUuYz0zNTI9aW50IGNtZGxpbmVfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2NtZGxpbmUuYy0zNzktXFxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmM6MzgwOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmMtMzgxLVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM9MTE5PXN0YXRpYyBzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKmNoZWNrX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqaGQpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xMjYtXFx0XFx0cmV0dXJuIE5VTEw7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTI3OlxcdHN0YXRlLVxcdTAwM2VwcF9idWYuYnVmZmVyID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jOjEyODpcXHRpZiAoIXN0YXRlLVxcdTAwM2VwcF9idWYuYnVmZmVyKSB7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTI5LVxcdFxcdGZyZWVfcGFydGl0aW9ucyhzdGF0ZSk7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xMzEtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jOjEzMjpcXHRzZXFfYnVmX2luaXQoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIHN0YXRlLVxcdTAwM2VwcF9idWYuYnVmZmVyLCBQQUdFX1NJWkUpO1xcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTEzMy1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTEzNS1cXHRzdHJzY3B5KHN0YXRlLVxcdTAwM2VuYW1lLCBoZC1cXHUwMDNlZGlza19uYW1lKTtcXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxMzY6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgJXM6XFxcIiwgc3RhdGUtXFx1MDAzZW5hbWUpO1xcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTEzNy1cXHRpZiAoaXNkaWdpdChzdGF0ZS1cXHUwMDNlbmFtZVtzdHJsZW4oc3RhdGUtXFx1MDAzZW5hbWUpLTFdKSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTE1NC1cXHRpZiAocmVzIFxcdTAwM2UgMCkge1xcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jOjE1NTpcXHRcXHRwcmludGsoS0VSTl9JTkZPIFxcXCIlc1xcXCIsIHNlcV9idWZfc3RyKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmKSk7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTU2LVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jOjE1NzpcXHRcXHRrZnJlZShzdGF0ZS1cXHUwMDNlcHBfYnVmLmJ1ZmZlcik7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTU4LVxcdFxcdHJldHVybiBzdGF0ZTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTE2Ny1cXHRpZiAocmVzKSB7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTY4OlxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZixcXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xNjktXFx0XFx0XFx0ICAgICBcXFwiIHVuYWJsZSB0byByZWFkIHBhcnRpdGlvbiB0YWJsZVxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTcwOlxcdFxcdHByaW50ayhLRVJOX0lORk8gXFxcIiVzXFxcIiwgc2VxX2J1Zl9zdHIoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYpKTtcXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xNzEtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTE3Mi1cXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxNzM6XFx0a2ZyZWUoc3RhdGUtXFx1MDAzZXBwX2J1Zi5idWZmZXIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTE3NC1cXHRmcmVlX3BhcnRpdGlvbnMoc3RhdGUpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz03MTI9aW50IGVmaV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzUzLVxcdGtmcmVlKGdwdCk7XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo3NTQ6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTc1NS1cXHRyZXR1cm4gMTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM9MTY4PXN0YXRpYyBpbnQgZmluZF92b2wxX3BhcnRpdGlvbnMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMTgxLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MTgyOlxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiVk9MMS8lOHM6XFxcIiwgbmFtZSk7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0xODMtXFx0LypcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjE5LVxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjIyMDpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjIxLVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYz0yMjg9c3RhdGljIGludCBmaW5kX2xueDFfcGFydGl0aW9ucyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLFxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yMzktXFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYzoyNDA6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJMTlgxLyU4czpcXFwiLCBuYW1lKTtcXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI0MS1cXHRzZWNwZXJibGsgPSBibG9ja3NpemUgXFx1MDAzZVxcdTAwM2UgOTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjU2LVxcdFxcdFxcdGlmICghaW5mbykge1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MjU3OlxcdFxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yNTgtXFx0XFx0XFx0XFx0cmV0dXJuIDE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI2OC1cXHRwdXRfcGFydGl0aW9uKHN0YXRlLCAxLCBvZmZzZXQsIHNpemUgLSBvZmZzZXQpO1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MjY5OlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yNzAtXFx0cmV0dXJuIDE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jPTI3Mz1zdGF0aWMgaW50IGZpbmRfY21zMV9wYXJ0aXRpb25zKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI4OC1cXHRpZiAobGFiZWwtXFx1MDAzZWNtcy5kaXNrX29mZnNldCAhPSAwKSB7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYzoyODk6XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJDTVMxLyU4cyhNRFNLKTpcXFwiLCBuYW1lKTtcXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI5MC1cXHRcXHQvKiBkaXNrIGlzIHJlc2VydmVkIG1pbmlkaXNrICovXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI5My1cXHR9IGVsc2Uge1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6Mjk0OlxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiQ01TMS8lOHM6XFxcIiwgbmFtZSk7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yOTUtXFx0XFx0LypcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzA5LVxcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIDEsIG9mZnNldCwgc2l6ZS1vZmZzZXQpO1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MzEwOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0zMTEtXFx0cmV0dXJuIDE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jPTMxOD1pbnQgaWJtX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0zODYtXFx0XFx0aWYgKGluZm8tXFx1MDAzZWZvcm1hdCA9PSBEQVNEX0ZPUk1BVF9MREwpIHtcXG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjM4NzpcXHRcXHRcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIobm9ubClcXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTM4OC1cXHRcXHRcXHRzaXplID0gbnJfc2VjdG9ycztcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzkwLVxcdFxcdFxcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIDEsIG9mZnNldCwgc2l6ZS1vZmZzZXQpO1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MzkxOlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0zOTItXFx0XFx0fVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9rYXJtYS5jPTE1PWludCBrYXJtYV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMva2FybWEuYy01NS1cXHR9XFxuYmxvY2svcGFydGl0aW9ucy9rYXJtYS5jOjU2OlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9rYXJtYS5jLTU3LVxcdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9sZG0uYz01Njg9c3RhdGljIGJvb2wgbGRtX2NyZWF0ZV9kYXRhX3BhcnRpdGlvbnMgKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqcHAsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jLTU4NC1cXG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jOjU4NTpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnBwLVxcdTAwM2VwcF9idWYsIFxcXCIgW0xETV1cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jLTU4Ni1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbGRtLmMtNTk5LVxcbmJsb2NrL3BhcnRpdGlvbnMvbGRtLmM6NjAwOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2cHAtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9sZG0uYy02MDEtXFx0cmV0dXJuIHRydWU7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21hYy5jPTMzPWludCBtYWNfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21hYy5jLTg4LVxcbmJsb2NrL3BhcnRpdGlvbnMvbWFjLmM6ODk6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFttYWNdXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9tYWMuYy05MC1cXHRmb3IgKHNsb3QgPSAxOyBzbG90IFxcdTAwM2M9IGJsb2Nrc19pbl9tYXA7ICsrc2xvdCkge1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9tYWMuYy0xNTQtXFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy9tYWMuYzoxNTU6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL21hYy5jLTE1Ni1cXHRyZXR1cm4gMTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz0yNTA9c3RhdGljIHZvaWQgcGFyc2Vfc29sYXJpc194ODYoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0yNjUtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzoyNjY6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgJXMlZDogXFx1MDAzY3NvbGFyaXM6XFxcIiwgc3RhdGUtXFx1MDAzZW5hbWUsIG9yaWdpbik7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTI2Ny1cXHRpZiAobGUzMl90b19jcHUodi1cXHUwMDNldl92ZXJzaW9uKSAhPSAxKSB7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjI2ODpcXHRcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZixcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMjY5LVxcdFxcdFxcdCAgICAgICBcXFwiICBjYW5ub3QgaGFuZGxlIHZlcnNpb24gJWQgdnRvY1xcdTAwM2VcXFxcblxcXCIsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMjgwLVxcdFxcdFxcdGNvbnRpbnVlO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzoyODE6XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgW3MlZF1cXFwiLCBpKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMjgyLVxcdFxcdC8qIHNvbGFyaXMgcGFydGl0aW9ucyBhcmUgcmVsYXRpdmUgdG8gY3VycmVudCBNUy1ET1NcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0yODgtXFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjI4OTpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgXFx1MDAzZVxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTI5MC0jZW5kaWZcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz0zNDY9c3RhdGljIHZvaWQgcGFyc2VfYnNkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzYxLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzozNjI6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgJXMlZDogXFx1MDAzYyVzOlxcXCIsIHN0YXRlLVxcdTAwM2VuYW1lLCBvcmlnaW4sIGZsYXZvdXIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zNjMtXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzgyLVxcdFxcdGlmIChvZmZzZXQgXFx1MDAzZSBic2Rfc3RhcnQgfHwgb2Zmc2V0K3NpemUgXFx1MDAzYyBic2Rfc3RhcnQrYnNkX3NpemUpIHtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6MzgzOlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcImJhZCBzdWJwYXJ0aXRpb24gLSBpZ25vcmVkXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzg0LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTM4OS1cXHRpZiAobGUxNl90b19jcHUobC1cXHUwMDNlZF9ucGFydGl0aW9ucykgXFx1MDAzZSBtYXhfcGFydGl0aW9ucylcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6MzkwOlxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIChpZ25vcmVkICVkIG1vcmUpXFxcIixcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzkxLVxcdFxcdFxcdCAgICAgICBsZTE2X3RvX2NwdShsLVxcdTAwM2VkX25wYXJ0aXRpb25zKSAtIG1heF9wYXJ0aXRpb25zKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6MzkyOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzkzLX1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz00NzA9c3RhdGljIHZvaWQgcGFyc2VfdW5peHdhcmUoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy00ODUtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo0ODY6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgJXMlZDogXFx1MDAzY3VuaXh3YXJlOlxcXCIsIHN0YXRlLVxcdTAwM2VuYW1lLCBvcmlnaW4pO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy00ODctXFx0cCA9IFxcdTAwMjZsLVxcdTAwM2V2dG9jLnZfc2xpY2VbMV07XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNDk5LVxcdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo1MDA6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFxcdTAwM2VcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy01MDEtI2VuZGlmXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM9NTExPXN0YXRpYyB2b2lkIHBhcnNlX21pbml4KHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTMwLVxcdCAgICBwLVxcdTAwM2VzeXNfaW5kID09IE1JTklYX1BBUlRJVElPTikgeyAvKiBzdWJwYXJ0aXRpb24gdGFibGUgcHJlc2VudCAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo1MzE6XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgJXMlZDogXFx1MDAzY21pbml4OlxcXCIsIHN0YXRlLVxcdTAwM2VuYW1lLCBvcmlnaW4pO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy01MzItXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1JTklYX05SX1NVQlBBUlRJVElPTlM7IGkrKywgcCsrKSB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTM5LVxcdFxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NTQwOlxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTQxLVxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz01NjA9aW50IG1zZG9zX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU4My0jZWxzZVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo1ODQ6XFx0XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFtBSVhdXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU4NS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02MTAtXFx0XFx0XFx0XFx0XFx1MDAyNlxcdTAwMjYgZmF0X3ZhbGlkX21lZGlhKGZiLVxcdTAwM2VtZWRpYSkpIHtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NjExOlxcdFxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTYxMi1cXHRcXHRcXHRcXHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NTktXFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjY2MDpcXHRcXHRcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgXFx1MDAzY1xcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NjEtXFx0XFx0XFx0cGFyc2VfZXh0ZW5kZWQoc3RhdGUsIHN0YXJ0LCBzaXplLCBkaXNrc2lnKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NjYyOlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTY2My1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NjktXFx0XFx0aWYgKHAtXFx1MDAzZXN5c19pbmQgPT0gRE02X1BBUlRJVElPTilcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NjcwOlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIltETV1cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjcxLVxcdFxcdGlmIChwLVxcdTAwM2VzeXNfaW5kID09IEVaRF9QQVJUSVRJT04pXFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjY3MjpcXHRcXHRcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJbRVpEXVxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NzMtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NzQtXFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjY3NTpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NzYtXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL29mLmM9MzU9c3RhdGljIHZvaWQgYWRkX29mX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLCBpbnQgc2xvdCxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvb2YuYy02NC1cXG5ibG9jay9wYXJ0aXRpb25zL29mLmM6NjU6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIoJXMpXFxcIiwgaW5mby1cXHUwMDNldm9sbmFtZSk7XFxuYmxvY2svcGFydGl0aW9ucy9vZi5jLTY2LX1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvb2YuYz02OD1pbnQgb2ZfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL29mLmMtMTA2LVxcbmJsb2NrL3BhcnRpdGlvbnMvb2YuYzoxMDc6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL29mLmMtMTA4LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9vc2YuYz0xNj1pbnQgb3NmX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9vc2YuYy04My1cXHR9XFxuYmxvY2svcGFydGl0aW9ucy9vc2YuYzo4NDpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvb3NmLmMtODUtXFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL3NnaS5jPTM2PWludCBzZ2lfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL3NnaS5jLTgxLVxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL3NnaS5jOjgyOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9zZ2kuYy04My1cXHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvc3VuLmM9MjE9aW50IHN1bl9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvc3VuLmMtMTIzLVxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL3N1bi5jOjEyNDpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvc3VuLmMtMTI1LVxcdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYz00OT1pbnQgc3lzdjY4X3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYy03NS1cXHRzbGljZXMgLT0gMTsgLyogbGFzdCBzbGljZSBpcyB0aGUgd2hvbGUgZGlzayAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmM6NzY6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJzeXNWNjg6ICVzKHMldSlcXFwiLCBzdGF0ZS1cXHUwMDNlbmFtZSwgc2xpY2VzKTtcXG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jLTc3LVxcdHNsaWNlID0gKHN0cnVjdCBzbGljZSAqKWRhdGE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jLTg0LVxcdFxcdFxcdFxcdGJlMzJfdG9fY3B1KHNsaWNlLVxcdTAwM2VuYmxvY2tzKSk7XFxuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYzo4NTpcXHRcXHRcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIihzJXUpXFxcIiwgaSk7XFxuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYy04Ni1cXHRcXHR9XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jLTg4LVxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jOjg5OlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYy05MC1cXHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvdWx0cml4LmM9MTI9aW50IHVsdHJpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvdWx0cml4LmMtNDEtXFx0XFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy91bHRyaXguYzo0MjpcXHRcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvdWx0cml4LmMtNDMtXFx0XFx0cmV0dXJuIDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjM4Ljc3Mjk3MTg2OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjQ3MjUxNzYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIGEgTG9nZ2luZy1SZWxhdGVkIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSd2ZSBnb3QgYSBwYXRjaCB0aGF0IGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwcmludGluZyBwYXJ0aXRpb24gbmFtZXMgdG8gZG1lc2cgdmlhIGBwcmludGtgIHdpdGhpbiBgY2hlY2tfcGFydGl0aW9uYC4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBmaXggd29ydGggZnV6emluZz8gU3l6a2FsbGVyIGFscmVhZHkgZm91bmQgdGhlIG9yaWdpbmFsIGJ1ZyAoY29uZmlybWVkIGJ5IHRoZSBjb21taXQgYXV0aG9yIGJlaW5nIGBzeXotY2x1c3RlcmApLCBzbyB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgKmZpeCogbmVlZHMgZnV6emluZy5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoYXQgdGhlIGZpeCBzZWVtcyB0byBib2lsIGRvd24gdG8gc3RyaW5nIGZvcm1hdHRpbmcgY2hhbmdlcy4gVGhpcyB0cmlnZ2VycyB0aGUgcHJvbXB0J3MgY3JpdGVyaWE6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlwiIEl0IGFwcGVhcnMgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgc2VxX2J1Zl9wcmludGZgIGFuZCBgcHJfd2FybmAgY2FsbHMsIGJvdGggb2Ygd2hpY2ggYXJlIHVzZWQgZm9yIGxvZ2dpbmcuIFNwZWNpZmljYWxseSwgYHNlcV9idWZfcHJpbnRmYCBjb25zdHJ1Y3RzIHRoZSBzdHJpbmcgdGhhdCBgcHJpbnRrYCB0aGVuIHVzZXMgdG8gd3JpdGUgdG8gZG1lc2cuXG5cblRoZSBjb3JlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgc3RyaW5nIGZvcm1hdHRpbmcgY2hhbmdlIGNvbnN0aXR1dGUgYSAqZnVuY3Rpb25hbCogYWx0ZXJhdGlvbj8gSXQgKnByZXZlbnRzKiBhbiBPT0IgcmVhZCwgd2hpY2ggY291bGQsIHRoZW9yZXRpY2FsbHksIGNhdXNlIGEga2VybmVsIGNyYXNoIG9yIGluZm9ybWF0aW9uIGxlYWsgaW50byBkbWVzZy4gSG93ZXZlciwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IGxvZ2dpbmcuIFRoZSBwcm9tcHQgc2VlbXMgdG8gY2xhc3NpZnkgYHNlcV9idWZfcHJpbnRmYCAod2hpY2ggYnVpbGRzIHRoZSBwcmludCBzdHJpbmcpIGFzIHBhcnQgb2YgbG9nZ2luZy4gVGhlIGNoYW5nZSBpdHNlbGYgcHJldmVudHMgcmVhZGluZyBwYXN0IHRoZSBlbmQgb2YgYSBub24tbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgd2hpY2ggaXMgcHVyZWx5IGFib3V0IHRoZSBmb3JtYXR0aW5nIGFuZCBzYWZldHkgb2YgdGhlIGxvZ2dpbmcgb3V0cHV0LlxuXG5Mb29raW5nIGF0IHRoZSBwYXRjaCBpdHNlbGYgY29uZmlybXMgdGhpcy4gSXQgY2hhbmdlcyBgc2VxX2J1Zl9wcmludGZgIGZyb20gYFwiJXNcImAgdG8gYFwiJS4qc1wiYCBhbmQgYWRkcyBhIGxlbmd0aCBhcmd1bWVudC4gU2ltaWxhcmx5LCBgcHJfd2FybmAgaXMgY2hhbmdlZCBmcm9tIHVzaW5nIGBzbnByaW50ZmAgdG8gYFwiJS4qc1wiYCB3aXRoIGFuIGV4cGxpY2l0IGxlbmd0aC4gSXQncyBzdHJpY3RseSBhYm91dCBwcmV2ZW50aW5nIHJlYWRzIGJleW9uZCB0aGUgYm91bmRzIG9mIHRoZSBwYXJ0aXRpb24gbmFtZSBzdHJpbmcuIEl0J3MgZGlyZWN0bHkgYWRkcmVzc2luZyB0aGUgbG9nZ2luZyBiZWhhdmlvciBpdHNlbGYuXG5cblRoZSBrZXkgaXMgdGhhdCBgc3RhdGUtXHUwMDNlcHBfYnVmYCAod2hpY2ggaXMgbW9kaWZpZWQgYnkgYHNlcV9idWZfcHJpbnRmYCkgaXMgKm9ubHkqIHVzZWQgZm9yIGBwcmludGtgLiBUaGUgcmVsZXZhbnQgY29kZSBzZWdtZW50IGNvbmZpcm1zIHRoaXMuIEl0IGlzIGZyZWVkIGRpcmVjdGx5IGFmdGVyIGJlaW5nIHByaW50ZWQuXG5cbldoaWxlIGZpeGluZyBhIHBvdGVudGlhbCBjcmFzaCBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIHN0YWJpbGl0eSwgdGhlIHByb21wdCBlbXBoYXNpemVzIHRoZSAqbmF0dXJlKiBvZiB0aGUgY2hhbmdlcy4gVGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBjaGFuZ2VzIHRvIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYCwgdGhlcmVmb3JlIHRoZSBjaGFuZ2UgaXMgbG9nZ2luZyBjaGFuZ2VzLiBUaGlzIGFwcGVhcnMgdG8gZmFsbCBzcXVhcmVseSB1bmRlciBcIlB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlwiIEV2ZW4gaWYgdGhlIGxvZ2dpbmcgbm93IHByZXZlbnRzIGNyYXNoZXMsIHRoZSBjaGFuZ2UgaXMgaW4gdGhlIGxvZ2dpbmcgc3RhdGVtZW50IGl0c2VsZiwgYW5kIGRvZXMgbm90IGFsdGVyIHRoZSBwYXJ0aXRpb24gcGFyc2VyIGxvZ2ljLlxuXG5UaGVyZWZvcmUsIGRlc3BpdGUgdGhlIHBvdGVudGlhbCBjcmFzaCBhdm9pZGFuY2UsIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgYmVjYXVzZSB0aGUgcGF0Y2ggaXMgbGltaXRlZCB0byBtb2RpZnlpbmcgbG9nZ2luZyBzdGF0ZW1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjAzNywiT3V0cHV0VG9rZW5zIjo3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NTA6NTEuMjQ1NDkxOTU1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBsb2dnaW5nIHN0YXRlbWVudHMgKHNlcV9idWZfcHJpbnRmIGFuZCBwcl93YXJuKSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwcmludGluZyBwYXJ0aXRpb24gbmFtZXMuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIHBhcnRpdGlvbiBwYXJzZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGxvZ2dpbmcgc3RhdGVtZW50cyAoc2VxX2J1Zl9wcmludGYgYW5kIHByX3dhcm4pIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByaW50aW5nIHBhcnRpdGlvbiBuYW1lcy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcGFydGl0aW9uIHBhcnNlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdrlrr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-12 00:25:15 +0000 UTC FinishedAt: 2026-07-12 00:50:52 +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+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgbG9nZ2luZyBzdGF0ZW1lbnRzIChzZXFfYnVmX3ByaW50ZiBhbmQgcHJfd2FybikgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJpbnRpbmcgcGFydGl0aW9uIG5hbWVzLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBwYXJ0aXRpb24gcGFyc2VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo1MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQzMDU5ODY1N2ZhYTg4MzJmYTE1MDllNTY3ZjMxMWI4NTgxZDRiYThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDo1MDoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2FpeC5jIGIvYmxvY2svcGFydGl0aW9ucy9haXguY1xuaW5kZXggZjNjNDE3NGUwMDNlOWQuLmZlMmQyY2IwYzRlNzg1IDEwMDY0NFxuLS0tIGEvYmxvY2svcGFydGl0aW9ucy9haXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9haXguY1xuQEAgLTI2MSw3ICYjNDM7MjYxLDggQEAgaW50IGFpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbiBcdFx0XHRcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIGx2X2l4ICYjNDM7IDEsXG4gXHRcdFx0XHQgIChpICYjNDM7IDEgLSBscF9peCkgKiBwcF9ibG9ja3Nfc2l6ZSAmIzQzOyBwc25fcGFydDEsXG4gXHRcdFx0XHQgIGx2aXBbbHZfaXhdLnBwc19wZXJfbHYgKiBwcF9ibG9ja3Nfc2l6ZSk7XG4tXHRcdFx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2Mlc1x1MDAzZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2MlLipzXHUwMDNlXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIChpbnQpc2l6ZW9mKG5bbHZfaXhdLm5hbWUpLFxuIFx0XHRcdFx0XHQgICAgICAgbltsdl9peF0ubmFtZSk7XG4gXHRcdFx0XHRsdmlwW2x2X2l4XS5sdl9pc19jb250aWd1b3VzID0gMTtcbiBcdFx0XHRcdHJldCA9IDE7XG5AQCAtMjcxLDEyICYjNDM7MjcyLDEwIEBAIGludCBhaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4gXHRcdH1cbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc3RhdGUtXHUwMDNlbGltaXQ7IGkgJiM0Mzs9IDEpXG4gXHRcdFx0aWYgKGx2aXBbaV0ucHBzX2ZvdW5kIFx1MDAyNlx1MDAyNiAhbHZpcFtpXS5sdl9pc19jb250aWd1b3VzKSB7XG4tXHRcdFx0XHRjaGFyIHRtcFtzaXplb2YobltpXS5uYW1lKSAmIzQzOyAxXTsgLy8gbnVsbCBjaGFyXG4tXG4tXHRcdFx0XHRzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCBcJiMzNDslc1wmIzM0OywgbltpXS5uYW1lKTtcbi1cdFx0XHRcdHByX3dhcm4oXCYjMzQ7cGFydGl0aW9uICVzICgldSBwcCYjMzk7cyBmb3VuZCkgaXMgXCYjMzQ7XG4mIzQzO1x0XHRcdFx0cHJfd2FybihcJiMzNDtwYXJ0aXRpb24gJS4qcyAoJXUgcHAmIzM5O3MgZm91bmQpIGlzIFwmIzM0O1xuIFx0XHRcdFx0XHRcJiMzNDtub3QgY29udGlndW91c1xcblwmIzM0Oyxcbi1cdFx0XHRcdFx0dG1wLCBsdmlwW2ldLnBwc19mb3VuZCk7XG4mIzQzO1x0XHRcdFx0XHQoaW50KXNpemVvZihuW2ldLm5hbWUpLCBuW2ldLm5hbWUsXG4mIzQzO1x0XHRcdFx0XHRsdmlwW2ldLnBwc19mb3VuZCk7XG4gXHRcdFx0fVxuIFx0XHRrZnJlZShwdmQpO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgbG9nZ2luZyBzdGF0ZW1lbnRzIChzZXFfYnVmX3ByaW50ZiBhbmQgcHJfd2FybikgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJpbnRpbmcgcGFydGl0aW9uIG5hbWVzLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBwYXJ0aXRpb24gcGFyc2VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDMwNTk4NjU3ZmFhODgzMmZhMTUwOWU1NjdmMzExYjg1ODFkNGJhOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDEyIDAwOjUwOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYmxvY2svcGFydGl0aW9ucy9haXguYyBiL2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmMKaW5kZXggZjNjNDE3NGUwMDNlOWQuLmZlMmQyY2IwYzRlNzg1IDEwMDY0NAotLS0gYS9ibG9jay9wYXJ0aXRpb25zL2FpeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmMKQEAgLTI2MSw3ICYjNDM7MjYxLDggQEAgaW50IGFpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSkKIAkJCQlwdXRfcGFydGl0aW9uKHN0YXRlLCBsdl9peCAmIzQzOyAxLAogCQkJCSAgKGkgJiM0MzsgMSAtIGxwX2l4KSAqIHBwX2Jsb2Nrc19zaXplICYjNDM7IHBzbl9wYXJ0MSwKIAkJCQkgIGx2aXBbbHZfaXhdLnBwc19wZXJfbHYgKiBwcF9ibG9ja3Nfc2l6ZSk7Ci0JCQkJc2VxX2J1Zl9wcmludGYoJmFtcDtzdGF0ZS0mZ3Q7cHBfYnVmLCAmIzM0OyAmbHQ7JXMmZ3Q7XG4mIzM0OywKJiM0MzsJCQkJc2VxX2J1Zl9wcmludGYoJmFtcDtzdGF0ZS0mZ3Q7cHBfYnVmLCAmIzM0OyAmbHQ7JS4qcyZndDtcbiYjMzQ7LAomIzQzOwkJCQkJICAgICAgIChpbnQpc2l6ZW9mKG5bbHZfaXhdLm5hbWUpLAogCQkJCQkgICAgICAgbltsdl9peF0ubmFtZSk7CiAJCQkJbHZpcFtsdl9peF0ubHZfaXNfY29udGlndW91cyA9IDE7CiAJCQkJcmV0ID0gMTsKQEAgLTI3MSwxMiAmIzQzOzI3MiwxMCBAQCBpbnQgYWl4X3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKQogCQl9CiAJCWZvciAoaSA9IDA7IGkgJmx0OyBzdGF0ZS0mZ3Q7bGltaXQ7IGkgJiM0Mzs9IDEpCiAJCQlpZiAobHZpcFtpXS5wcHNfZm91bmQgJmFtcDsmYW1wOyAhbHZpcFtpXS5sdl9pc19jb250aWd1b3VzKSB7Ci0JCQkJY2hhciB0bXBbc2l6ZW9mKG5baV0ubmFtZSkgJiM0MzsgMV07IC8vIG51bGwgY2hhcgotCi0JCQkJc25wcmludGYodG1wLCBzaXplb2YodG1wKSwgJiMzNDslcyYjMzQ7LCBuW2ldLm5hbWUpOwotCQkJCXByX3dhcm4oJiMzNDtwYXJ0aXRpb24gJXMgKCV1IHBwJiMzOTtzIGZvdW5kKSBpcyAmIzM0OwomIzQzOwkJCQlwcl93YXJuKCYjMzQ7cGFydGl0aW9uICUuKnMgKCV1IHBwJiMzOTtzIGZvdW5kKSBpcyAmIzM0OwogCQkJCQkmIzM0O25vdCBjb250aWd1b3VzXG4mIzM0OywKLQkJCQkJdG1wLCBsdmlwW2ldLnBwc19mb3VuZCk7CiYjNDM7CQkJCQkoaW50KXNpemVvZihuW2ldLm5hbWUpLCBuW2ldLm5hbWUsCiYjNDM7CQkJCQlsdmlwW2ldLnBwc19mb3VuZCk7CiAJCQl9CiAJCWtmcmVlKHB2ZCk7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJsb2NrIFBhcnRpdGlvbmluZyBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYmxvY2svcGFydGl0aW9ucy9haXguY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGNsZWFudXAsIHN3YXBwaW5nIG91dCB0aGUgb2xkIGAlc2AgZm9ybWF0dGluZyB3aXRoIGAlLipzYCBhbmQgYSBgKGludClzaXplb2Yobltsdl9peF0ubmFtZSlgIGluIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYC4gSSBzYXcgdGhhdCBpdCB3YXMganVzdCBhIHN0cmluZyBmb3JtYXR0aW5nIGZpeCBpbiBsb2dnaW5nIGFuZCBwYXJ0aXRpb24gbmFtZSBwcmludGluZy4gVGhlIGdvYWwgaXMgbGlrZWx5IHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBzdHJpbmcgcmVhZCwgb3IgYXQgdGhlIGxlYXN0LCBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgY29weWluZyB0byBhIHRlbXBvcmFyeSBidWZmZXIuIE5vdGhpbmcgaW1tZWRpYXRlbHkganVtcHMgb3V0IGFzIGRlZXBseSBhcmNoaXRlY3R1cmFsLgoKQnV0IHdhaXQgYSBtaW51dGXigKYgSSBzZWUgYHNlcV9idWZfcHJpbnRmYCBpcyBwcmludGluZyB0byBgc3RhdGUtJmd0O3BwX2J1ZmAsIGFuZCB0aGF0IGJ1ZmZlciBpcyB1c2VkIGZvciBwYXJ0aXRpb24gaW5mb3JtYXRpb24gdGhhdCAqY291bGQqIGJlIGV4cG9zZWQgdG8gdXNlcnNwYWNlIOKAkyBgL3Byb2MvcGFydGl0aW9uc2AsIGRtZXNnLCBldGMuIE5vdyBpdCBpcyBzdGFydGluZyB0byBsb29rIGxpa2UgYSBwb3NzaWJsZSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhpcyBgJS4qc2AgdXNhZ2Ugd291bGQgcHJldmVudCByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiBgbltsdl9peF0ubmFtZWAsIHdoaWNoIG1pZ2h0IG5vdCBiZSBudWxsLXRlcm1pbmF0ZWQuIFNvIHRoaXMgKmNvdWxkKiBiZSBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgc2VjdXJpdHkgaXNzdWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIHdhc24mIzM5O3QgbnVsbC10ZXJtaW5hdGVkLgoKQWxyaWdodCwgSSBuZWVkIHRvIGRpZyBpbnRvIGBibG9jay9wYXJ0aXRpb25zL2FpeC5jYCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYmV0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FpeF9wYXJ0aXRpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2FpeC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmM9MTM4PXN0YXRpYyBzdHJ1Y3QgbHZuYW1lICphbGxvY19sdm4oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTMyIGxiYSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE1My1cbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTU0OmludCBhaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE1NS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4OAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBWYXJpYWJsZSAmIzM5O24mIzM5OyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gb24gbXkgbWluZCwgZ2l2ZW4gd2hhdGV2ZXIgY29udGV4dCB3ZSYjMzk7cmUgaW4sIGlzIHRoZSBuYXR1cmUgb2YgdGhlIHZhcmlhYmxlICYjMzk7biYjMzk7LiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaXRzIGRlZmluaXRpb24sIGl0cyBkb21haW4sIGFuZCBpdHMgcG90ZW50aWFsIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIHN5c3RlbSB3ZSYjMzk7cmUgZXhhbWluaW5nLiBJcyB0aGlzIGEgc2NhbGFyLCBhIHZlY3Rvciwgb3IgcGVyaGFwcyBzb21ldGhpbmcgbW9yZSBjb21wbGV4IGxpa2UgYSBmdW5jdGlvbj8gRG9lcyAmIzM5O24mIzM5OyByZXByZXNlbnQgYSBudW1iZXIsIGFuIGluZGV4LCBhIGRpbWVuc2lvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzcGVjaWZpYyBmaWVsZCBjb250ZXh0IHdpbGwgZHJhbWF0aWNhbGx5IGluZmx1ZW5jZSBteSB1bmRlcnN0YW5kaW5nLiBGb3IgZXhhbXBsZSwgaW4gY29tcHV0YXRpb25hbCBudW1iZXIgdGhlb3J5LCAmIzM5O24mIzM5OyBtaWdodCByZXByZXNlbnQgYSBtb2R1bHVzLCB3aGlsZSBpbiBncmFwaCB0aGVvcnksIGl0JiMzOTtzIGxpa2VseSB0aGUgbnVtYmVyIG9mIG5vZGVzLiBLbm93aW5nIHRoaXMsIEkgY2FuIGJlZ2luIHRvIGFudGljaXBhdGUgaXRzIGltcGFjdCBvbiB0aGUgYWxnb3JpdGhtcyBvciBwcmluY2lwbGVzIGF0IHBsYXkuIEkgaGF2ZSB0byBhc3Nlc3MgaG93IHNpZ25pZmljYW50IHRoaXMgdmFsdWUgaXMsIHdoYXQgcmVzdHJpY3Rpb25zIGFyZSBwbGFjZWQgdXBvbiBpdCwgYW5kIGhvdyB0aGV5IHNoYXBlIHRoZSBwcm9ibGVtLiBPbmx5IHdpdGggdGhpcyBwcmVsaW1pbmFyeSB1bmRlcnN0YW5kaW5nIHdpbGwgSSBiZSBhYmxlIHRvIGVmZmVjdGl2ZWx5IGRpc3NlY3QgdGhlIHByb2JsZW0gYXQgaGFuZCBhbmQgYmVnaW4gYSBtZWFuaW5nZnVsIHNvbHV0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBsdm5hbWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2FpeC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmM9MzQ9c3RydWN0IGx2ZCB7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9haXguYy00NS1cbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6NDY6c3RydWN0IGx2bmFtZSB7XG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTQ3LVx0Y2hhciBuYW1lWzY0XTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jPTExMz1zdGF0aWMgc3RydWN0IHB2ZCAqYWxsb2NfcHZkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHUzMiBsYmEpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xMzctICovXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jOjEzODpzdGF0aWMgc3RydWN0IGx2bmFtZSAqYWxsb2NfbHZuKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHUzMiBsYmEpXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTEzOS17XG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jOjE0MDpcdHNpemVfdCBjb3VudCA9IHNpemVvZihzdHJ1Y3QgbHZuYW1lKSAqIExWTV9NQVhMVlM7XG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jOjE0MTpcdHN0cnVjdCBsdm5hbWUgKnA7XG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE0Mi1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jPTE1ND1pbnQgYWl4X3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTY5LVx0fSAqbHZpcDtcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTcwOlx0c3RydWN0IGx2bmFtZSAqbiA9IE5VTEw7XG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDA5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQUlYIFBhcnRpdGlvbiBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNoYW5nZSBpbiBgYWl4X3BhcnRpdGlvbmAuIEl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIHJlcGxhY2luZyB0aGUgZGlyZWN0IHVzZSBvZiBgJXNgIGluIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYCB3aXRoIGAlLipzYC4gVGhlIGtleSBpcyB0aGF0IHRoZSBjaGFuZ2UgaW50cm9kdWNlcyBhbiBleHBsaWNpdCBsZW5ndGggc3BlY2lmaWVyIHdoZW4gcHJpbnRpbmcgdGhlIHBhcnRpdGlvbiBuYW1lLCBjYWxjdWxhdGVkIGZyb20gYHNpemVvZihuW2x2X2l4XS5uYW1lKWAuIFRoaXMgaXMgY2xlYXJseSBhIGRlZmVuc2l2ZSBtZWFzdXJlLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgdG8gYXZvaWQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGlmIHRoZSBgbltsdl9peF0ubmFtZWAgYnVmZmVyIGlzICpub3QqIG51bGwtdGVybWluYXRlZC4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgaXNzdWUgdGhhdCBjYW4gbGVhZCB0byBzdWJ0bGUgdnVsbmVyYWJpbGl0aWVzLgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhpcyB3b3J0aHkgb2YgZnV6emluZz8gSXQgaW52b2x2ZXMgYSBwYXJ0aXRpb24gcGFyc2VyLCBzcGVjaWZpY2FsbHkgYGFpeF9wYXJ0aXRpb25gLiBBbmQsIGZyb20gZXhwZXJpZW5jZSwgZnV6emluZyBwYXJ0aXRpb24gcGFyc2VycyAqaXMqIHZpYWJsZS4gWW91IGNhbiBjcmVhdGUgbWFsaWNpb3VzIHBhcnRpdGlvbiB0YWJsZXMgYW5kIGZlZWQgdGhlbSB0byB0aGUgcGFyc2VyIOKAkyB0aGUgbG9vcCBkZXZpY2UgYXBwcm9hY2ggd2l0aCBjcmFmdGVkIGltYWdlcyBoYXMgYWx3YXlzIGJlZW4gYSBzb2xpZCBtZXRob2QuIEJ1dCBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoaXMgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHNjaGVtZS4uLiBPaCwgcmlnaHQhIGBhaXhfcGFydGl0aW9uYCBpcyBwYXJ0IG9mIHRoZSBibG9jayBwYXJ0aXRpb24gcGFyc2Vycy4gVGhhdCBpcyBhIHZhbHVhYmxlIHBpZWNlIG9mIGluZm9ybWF0aW9uLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSBgQUlYX1BBUlRJVElPTmAgY29uZmlndXJhdGlvbiBleGlzdHMgYmVmb3JlIHdlIGNvbnNpZGVyIHRoaXMgZnVsbHkuIFRoaXMgd2lsbCBpbmZvcm0gd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBhY3R1YWxseSBhY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QUlYX1BBUlRJVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvS2NvbmZpZz02NT1jb25maWcgQUNPUk5fUEFSVElUSU9OX1JJU0NJWFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvS2NvbmZpZy03My1cbmJsb2NrL3BhcnRpdGlvbnMvS2NvbmZpZzo3NDpjb25maWcgQUlYX1BBUlRJVElPTlxuYmxvY2svcGFydGl0aW9ucy9LY29uZmlnLTc1LVx0Ym9vbCBcJiMzNDtBSVggYmFzaWMgcGFydGl0aW9uIHRhYmxlIHN1cHBvcnRcJiMzNDsgaWYgUEFSVElUSU9OX0FEVkFOQ0VEXG4tLVxuYmxvY2svcGFydGl0aW9ucy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19BVEFSSV9QQVJUSVRJT04pICYjNDM7PSBhdGFyaS5vXG5ibG9jay9wYXJ0aXRpb25zL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19BSVhfUEFSVElUSU9OKSAmIzQzOz0gYWl4Lm9cbmJsb2NrL3BhcnRpdGlvbnMvTWFrZWZpbGUtMTEtb2JqLSQoQ09ORklHX0NNRExJTkVfUEFSVElUSU9OKSAmIzQzOz0gY21kbGluZS5vXG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jPTU2MD1pbnQgbXNkb3NfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU4MC1cdFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NTgxOiNpZmRlZiBDT05GSUdfQUlYX1BBUlRJVElPTlxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU4Mi1cdFx0cmV0dXJuIGFpeF9wYXJ0aXRpb24oc3RhdGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIGBDT05GSUdfQUlYX1BBUlRJVElPTmAgRml4KioKCk9rYXksIHNvIGBDT05GSUdfQUlYX1BBUlRJVElPTmAgaXMgZGVmaW5pdGVseSBhIHRoaW5nLiBOb3cgdGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHN0cmluZyBmb3JtYXR0aW5nIGZpeCB3b3J0aCB0aGUgZnV6emluZyBlZmZvcnQ/IFRoZSBwYXRjaCBzZWVtcyBwcmV0dHkgY29udGFpbmVkOyBpdCYjMzk7cyBqdXN0IGFib3V0IHByZXZlbnRpbmcgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBgc2VxX2J1Zl9wcmludGZgIGFuZCBgcHJfd2FybmAuIEhtbSwgbGV0IG1lIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZyBsaWtlIGBwcl9lcnJgLCBoYXJtbGVzcyBjb25zdGFudC9tYWNybyBjaGFuZ2VzLCBvciB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoZSBjb3JlIGNoYW5nZSBpcyB0byBgc2VxX2J1Zl9wcmludGZgIGFuZCBpdCBsb29rcyBsaWtlIHRoYXQmIzM5O3MgdXNlZCB0byBidWlsZCB0aGUgcGFydGl0aW9uIHN0cmluZyB0aGF0IGVuZHMgdXAgaW4gZG1lc2cgb3IgYC9wcm9jL3BhcnRpdGlvbnNgLiBPa2F5LCBzbyBgc3RhdGUtJmd0O3BwX2J1ZmAsIGxldCBtZSBjb25maXJtIHdoZXJlIHRoYXQmIzM5O3MgdXNlZC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgYHN0YXRlLSZndDtwcF9idWZgIGlzIHVzZWQgaW4gYGJsb2NrL3BhcnRpdGlvbnMvY29yZS5jYC4gTGV0IG1lIGRpdmUgaW4gdGhlcmUgZm9yIGEgY2xvc2VyIGxvb2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BwX2J1ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz0yNj1hZGZzX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLCBjaGFyICpuYW1lLCBjaGFyICpkYXRhLFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00My1cdGlmIChuYW1lKSB7XG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6NDQ6XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFslc11cJiMzNDssIG5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTQ1LVx0fVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz02OT1zdGF0aWMgaW50IHJpc2NpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNzktXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6ODA6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgW1JJU0NpWF1cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTgxLVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy04Ni1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzo4NzpcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFx1MDAzY1wmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtODgtXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTk1LVx0XHRcdFx0XHRsZTMyX3RvX2NwdShyci1cdTAwM2VwYXJ0W3BhcnRdLmxlbmd0aCkpO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjk2Olx0XHRcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsoJXMpXCYjMzQ7LCByci1cdTAwM2VwYXJ0W3BhcnRdLm5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTk3LVx0XHRcdH1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtOTktXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6MTAwOlx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgXHUwMDNlXFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0xMDEtXHR9IGVsc2Uge1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz0xMjI9c3RhdGljIGludCBsaW51eF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTI5LVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjEzMDpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBbTGludXhdXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0xMzEtXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTEzNy1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzoxMzg6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgXHUwMDNjXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0xMzktXHR3aGlsZSAobGludXhwLVx1MDAzZW1hZ2ljID09IGNwdV90b19sZTMyKExJTlVYX05BVElWRV9NQUdJQykgfHxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTQ3LVx0fVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjE0ODpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2VcJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTE0OS1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM9MjQ3PWludCBhZGZzcGFydF9jaGVja19BREZTKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTI5Mi1cdH1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzoyOTM6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTI5NC1cdHJldHVybiAxO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz0zNDc9aW50IGFkZnNwYXJ0X2NoZWNrX0lDUyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0zNjUtXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6MzY2Olx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFtJQ1NdXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0zNjctXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTM5OS1cdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjQwMDpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNDAxLVx0cmV0dXJuIDE7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jPTQ0Mz1pbnQgYWRmc3BhcnRfY2hlY2tfUE9XRVJURUMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNDU5LVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjQ2MDpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBbUE9XRVJURUNdXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00NjEtXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTQ3MC1cdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjQ3MTpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNDcyLVx0cmV0dXJuIDE7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jPTUwND1pbnQgYWRmc3BhcnRfY2hlY2tfRUVTT1goc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNTQxLVx0XHRwdXRfcGFydGl0aW9uKHN0YXRlLCBzbG90JiM0MzsmIzQzOywgc3RhcnQsIHNpemUgLSBzdGFydCk7XG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6NTQyOlx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTU0My1cdH1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jPTE1ND1pbnQgYWl4X3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTgxLVx0XHRcdHBwX2Jsb2Nrc19zaXplID0gcHBfYnl0ZXNfc2l6ZSAvIDUxMjtcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTgyOlx0XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZixcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTgzLVx0XHRcdFx0ICAgICAgIFwmIzM0OyBBSVggTFZNIGhlYWRlciB2ZXJzaW9uICV1IGZvdW5kXFxuXCYjMzQ7LFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTg3LVx0XHR9IGVsc2Uge1xuYmxvY2svcGFydGl0aW9ucy9haXguYzoxODg6XHRcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xODktXHRcdFx0XHQgICAgICAgXCYjMzQ7IHVuc3VwcG9ydGVkIEFJWCBMVk0gdmVyc2lvbiAlZCBmb3VuZFxcblwmIzM0Oyxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTI2My1cdFx0XHRcdCAgbHZpcFtsdl9peF0ucHBzX3Blcl9sdiAqIHBwX2Jsb2Nrc19zaXplKTtcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MjY0Olx0XHRcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgXHUwMDNjJS4qc1x1MDAzZVxcblwmIzM0OyxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMjY1LVx0XHRcdFx0XHQgICAgICAgKGludClzaXplb2Yobltsdl9peF0ubmFtZSksXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jPTM2PWludCBhbWlnYV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtODQtXHQvKiBCZSBtb3JlIGluZm9ybWF0aXZlICovXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmM6ODU6XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBSRFNLICglZClcJiMzNDssIGJsa3NpemUgKiA1MTIpO1xuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTg2LVx0YmxrID0gYmUzMl90b19jcHUocmRiLVx1MDAzZXJkYl9QYXJ0aXRpb25MaXN0KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtMTgwLVx0XHRcdGlmIChkb3N0eXBlWzNdIFx1MDAzYyAmIzM5OyAmIzM5OylcbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYzoxODE6XHRcdFx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtMTgyLVx0XHRcdFx0XHQgICAgICAgXCYjMzQ7ICglYyVjJWNeJWMpXCYjMzQ7LFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYy0xODYtXHRcdFx0ZWxzZVxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jOjE4NzpcdFx0XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZixcbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYy0xODgtXHRcdFx0XHRcdCAgICAgICBcJiMzNDsgKCVjJWMlYyVjKVwmIzM0Oyxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtMTkwLVx0XHRcdFx0XHQgICAgICAgZG9zdHlwZVsyXSwgZG9zdHlwZVszXSk7XG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmM6MTkxOlx0XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7KHJlcyAlZCBzcGIgJWQpXCYjMzQ7LFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE5Mi1cdFx0XHRcdCAgICAgICBiZTMyX3RvX2NwdShwYi1cdTAwM2VwYl9FbnZpcm9ubWVudFs2XSksXG4tLVxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE5Ni1cdH1cbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYzoxOTc6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE5OC1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM9MzQ9aW50IGF0YXJpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy03Mi1cdHBpID0gXHUwMDI2cnMtXHUwMDNlcGFydFswXTtcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYzo3MzpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBBSERJXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy03NC1cdGZvciAoc2xvdCA9IDE7IHBpIFx1MDAzYyBcdTAwMjZycy1cdTAwM2VwYXJ0WzRdIFx1MDAyNlx1MDAyNiBzbG90IFx1MDAzYyBzdGF0ZS1cdTAwM2VsaW1pdDsgc2xvdCYjNDM7JiM0MzssIHBpJiM0MzsmIzQzOykge1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy05MS0jZW5kaWZcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYzo5MjpcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFhHTVx1MDAzY1wmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtOTMtXHRcdHBhcnRzZWN0ID0gZXh0ZW5zZWN0ID0gYmUzMl90b19jcHUocGktXHUwMDNlc3QpO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy0xMzAtXHRcdH1cbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYzoxMzE6XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2VcJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTEzMi1cdH1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtMTM3LVx0XHRpZiAoT0tfaWQocGktXHUwMDNlaWQpKSB7XG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6MTM4Olx0XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBJQ0RcdTAwM2NcJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTEzOS1cdFx0XHRmb3IgKDsgcGkgXHUwMDNjIFx1MDAyNnJzLVx1MDAzZWljZHBhcnRbOF0gXHUwMDI2XHUwMDI2IHNsb3QgXHUwMDNjIHN0YXRlLVx1MDAzZWxpbWl0OyBzbG90JiM0MzsmIzQzOywgcGkmIzQzOyYjNDM7KSB7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTE0Ni1cdFx0XHR9XG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6MTQ3Olx0XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2VcJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTE0OC1cdFx0fVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy0xNTItXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6MTUzOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy0xNTQtXG4tLVxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oPTExPXN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyB7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oLTIzLVx0Ym9vbCBhY2Nlc3NfYmV5b25kX2VvZDtcbmJsb2NrL3BhcnRpdGlvbnMvY2hlY2suaDoyNDpcdHN0cnVjdCBzZXFfYnVmIHBwX2J1ZjtcbmJsb2NrL3BhcnRpdGlvbnMvY2hlY2suaC0yNS19O1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvY2hlY2suaD0zOD1wdXRfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqcCwgaW50IG4sIHNlY3Rvcl90IGZyb20sIHNlY3Rvcl90IHNpemUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oLTQyLVx0XHRwLVx1MDAzZXBhcnRzW25dLnNpemUgPSBzaXplO1xuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oOjQzOlx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZwLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7ICVzJWRcJiMzNDssIHAtXHUwMDNlbmFtZSwgbik7XG5ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmgtNDQtXHR9XG4tLVxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmM9MjI4PXN0YXRpYyBpbnQgYWRkX3BhcnQoaW50IHNsb3QsIHN0cnVjdCBjbWRsaW5lX3N1YnBhcnQgKnN1YnBhcnQsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmMtMjQ1LVxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmM6MjQ2Olx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsoJXMpXCYjMzQ7LCBpbmZvLVx1MDAzZXZvbG5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmMtMjQ3LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvY21kbGluZS5jPTM1Mj1pbnQgY21kbGluZV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2NtZGxpbmUuYy0zNzktXG5ibG9jay9wYXJ0aXRpb25zL2NtZGxpbmUuYzozODA6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmMtMzgxLVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jPTExOT1zdGF0aWMgc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpjaGVja19wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmhkKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTEyNi1cdFx0cmV0dXJuIE5VTEw7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxMjc6XHRzdGF0ZS1cdTAwM2VwcF9idWYuYnVmZmVyID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTI4Olx0aWYgKCFzdGF0ZS1cdTAwM2VwcF9idWYuYnVmZmVyKSB7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xMjktXHRcdGZyZWVfcGFydGl0aW9ucyhzdGF0ZSk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTMxLVx0fVxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTMyOlx0c2VxX2J1Zl9pbml0KFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1Ziwgc3RhdGUtXHUwMDNlcHBfYnVmLmJ1ZmZlciwgUEFHRV9TSVpFKTtcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTEzMy1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xMzUtXHRzdHJzY3B5KHN0YXRlLVx1MDAzZW5hbWUsIGhkLVx1MDAzZWRpc2tfbmFtZSk7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxMzY6XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyAlczpcJiMzNDssIHN0YXRlLVx1MDAzZW5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTM3LVx0aWYgKGlzZGlnaXQoc3RhdGUtXHUwMDNlbmFtZVtzdHJsZW4oc3RhdGUtXHUwMDNlbmFtZSktMV0pKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTE1NC1cdGlmIChyZXMgXHUwMDNlIDApIHtcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jOjE1NTpcdFx0cHJpbnRrKEtFUk5fSU5GTyBcJiMzNDslc1wmIzM0Oywgc2VxX2J1Zl9zdHIoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmKSk7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xNTYtXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxNTc6XHRcdGtmcmVlKHN0YXRlLVx1MDAzZXBwX2J1Zi5idWZmZXIpO1xuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTU4LVx0XHRyZXR1cm4gc3RhdGU7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTY3LVx0aWYgKHJlcykge1xuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTY4Olx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTY5LVx0XHRcdCAgICAgXCYjMzQ7IHVuYWJsZSB0byByZWFkIHBhcnRpdGlvbiB0YWJsZVxcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxNzA6XHRcdHByaW50ayhLRVJOX0lORk8gXCYjMzQ7JXNcJiMzNDssIHNlcV9idWZfc3RyKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZikpO1xuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTcxLVx0fVxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTcyLVxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTczOlx0a2ZyZWUoc3RhdGUtXHUwMDNlcHBfYnVmLmJ1ZmZlcik7XG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xNzQtXHRmcmVlX3BhcnRpdGlvbnMoc3RhdGUpO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NzEyPWludCBlZmlfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03NTMtXHRrZnJlZShncHQpO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo3NTQ6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03NTUtXHRyZXR1cm4gMTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2libS5jPTE2OD1zdGF0aWMgaW50IGZpbmRfdm9sMV9wYXJ0aXRpb25zKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0xODEtXG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjE4MjpcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7Vk9MMS8lOHM6XCYjMzQ7LCBuYW1lKTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMTgzLVx0Lypcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTIxOS1cdH1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MjIwOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjIxLVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM9MjI4PXN0YXRpYyBpbnQgZmluZF9sbngxX3BhcnRpdGlvbnMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTIzOS1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MjQwOlx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtMTlgxLyU4czpcJiMzNDssIG5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yNDEtXHRzZWNwZXJibGsgPSBibG9ja3NpemUgXHUwMDNlXHUwMDNlIDk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yNTYtXHRcdFx0aWYgKCFpbmZvKSB7XG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjI1NzpcdFx0XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI1OC1cdFx0XHRcdHJldHVybiAxO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjY4LVx0cHV0X3BhcnRpdGlvbihzdGF0ZSwgMSwgb2Zmc2V0LCBzaXplIC0gb2Zmc2V0KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MjY5Olx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjcwLVx0cmV0dXJuIDE7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9pYm0uYz0yNzM9c3RhdGljIGludCBmaW5kX2NtczFfcGFydGl0aW9ucyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjg4LVx0aWYgKGxhYmVsLVx1MDAzZWNtcy5kaXNrX29mZnNldCAhPSAwKSB7XG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjI4OTpcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtDTVMxLyU4cyhNRFNLKTpcJiMzNDssIG5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yOTAtXHRcdC8qIGRpc2sgaXMgcmVzZXJ2ZWQgbWluaWRpc2sgKi9cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI5My1cdH0gZWxzZSB7XG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjI5NDpcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtDTVMxLyU4czpcJiMzNDssIG5hbWUpO1xuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yOTUtXHRcdC8qXG4tLVxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0zMDktXHRwdXRfcGFydGl0aW9uKHN0YXRlLCAxLCBvZmZzZXQsIHNpemUtb2Zmc2V0KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MzEwOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzExLVx0cmV0dXJuIDE7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9pYm0uYz0zMTg9aW50IGlibV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTM4Ni1cdFx0aWYgKGluZm8tXHUwMDNlZm9ybWF0ID09IERBU0RfRk9STUFUX0xETCkge1xuYmxvY2svcGFydGl0aW9ucy9pYm0uYzozODc6XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7KG5vbmwpXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzg4LVx0XHRcdHNpemUgPSBucl9zZWN0b3JzO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzkwLVx0XHRcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIDEsIG9mZnNldCwgc2l6ZS1vZmZzZXQpO1xuYmxvY2svcGFydGl0aW9ucy9pYm0uYzozOTE6XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzkyLVx0XHR9XG4tLVxuYmxvY2svcGFydGl0aW9ucy9rYXJtYS5jPTE1PWludCBrYXJtYV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2thcm1hLmMtNTUtXHR9XG5ibG9jay9wYXJ0aXRpb25zL2thcm1hLmM6NTY6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9rYXJtYS5jLTU3LVx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9sZG0uYz01Njg9c3RhdGljIGJvb2wgbGRtX2NyZWF0ZV9kYXRhX3BhcnRpdGlvbnMgKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqcHAsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9sZG0uYy01ODQtXG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jOjU4NTpcdHNlcV9idWZfcHV0cyhcdTAwMjZwcC1cdTAwM2VwcF9idWYsIFwmIzM0OyBbTERNXVwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jLTU4Ni1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jLTU5OS1cbmJsb2NrL3BhcnRpdGlvbnMvbGRtLmM6NjAwOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnBwLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvbGRtLmMtNjAxLVx0cmV0dXJuIHRydWU7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9tYWMuYz0zMz1pbnQgbWFjX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbWFjLmMtODgtXG5ibG9jay9wYXJ0aXRpb25zL21hYy5jOjg5Olx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFttYWNdXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvbWFjLmMtOTAtXHRmb3IgKHNsb3QgPSAxOyBzbG90IFx1MDAzYz0gYmxvY2tzX2luX21hcDsgJiM0MzsmIzQzO3Nsb3QpIHtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21hYy5jLTE1NC1cdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xuYmxvY2svcGFydGl0aW9ucy9tYWMuYzoxNTU6XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9tYWMuYy0xNTYtXHRyZXR1cm4gMTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM9MjUwPXN0YXRpYyB2b2lkIHBhcnNlX3NvbGFyaXNfeDg2KHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTI2NS1cdH1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzoyNjY6XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyAlcyVkOiBcdTAwM2Nzb2xhcmlzOlwmIzM0Oywgc3RhdGUtXHUwMDNlbmFtZSwgb3JpZ2luKTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0yNjctXHRpZiAobGUzMl90b19jcHUodi1cdTAwM2V2X3ZlcnNpb24pICE9IDEpIHtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzoyNjg6XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZixcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0yNjktXHRcdFx0ICAgICAgIFwmIzM0OyAgY2Fubm90IGhhbmRsZSB2ZXJzaW9uICVkIHZ0b2NcdTAwM2VcXG5cJiMzNDssXG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTI4MC1cdFx0XHRjb250aW51ZTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzoyODE6XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFtzJWRdXCYjMzQ7LCBpKTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0yODItXHRcdC8qIHNvbGFyaXMgcGFydGl0aW9ucyBhcmUgcmVsYXRpdmUgdG8gY3VycmVudCBNUy1ET1Ncbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMjg4LVx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6Mjg5Olx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFx1MDAzZVxcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMjkwLSNlbmRpZlxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz0zNDY9c3RhdGljIHZvaWQgcGFyc2VfYnNkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTM2MS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzozNjI6XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyAlcyVkOiBcdTAwM2MlczpcJiMzNDssIHN0YXRlLVx1MDAzZW5hbWUsIG9yaWdpbiwgZmxhdm91cik7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzYzLVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zODItXHRcdGlmIChvZmZzZXQgXHUwMDNlIGJzZF9zdGFydCB8fCBvZmZzZXQmIzQzO3NpemUgXHUwMDNjIGJzZF9zdGFydCYjNDM7YnNkX3NpemUpIHtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzozODM6XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7YmFkIHN1YnBhcnRpdGlvbiAtIGlnbm9yZWRcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTM4NC1cdFx0XHRjb250aW51ZTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzg5LVx0aWYgKGxlMTZfdG9fY3B1KGwtXHUwMDNlZF9ucGFydGl0aW9ucykgXHUwMDNlIG1heF9wYXJ0aXRpb25zKVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjM5MDpcdFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgKGlnbm9yZWQgJWQgbW9yZSlcJiMzNDssXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzkxLVx0XHRcdCAgICAgICBsZTE2X3RvX2NwdShsLVx1MDAzZWRfbnBhcnRpdGlvbnMpIC0gbWF4X3BhcnRpdGlvbnMpO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjM5MjpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2VcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTM5My19XG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jPTQ3MD1zdGF0aWMgdm9pZCBwYXJzZV91bml4d2FyZShzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy00ODUtXHR9XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NDg2Olx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgJXMlZDogXHUwMDNjdW5peHdhcmU6XCYjMzQ7LCBzdGF0ZS1cdTAwM2VuYW1lLCBvcmlnaW4pO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTQ4Ny1cdHAgPSBcdTAwMjZsLVx1MDAzZXZ0b2Mudl9zbGljZVsxXTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNDk5LVx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NTAwOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFx1MDAzZVxcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTAxLSNlbmRpZlxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz01MTE9c3RhdGljIHZvaWQgcGFyc2VfbWluaXgoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTMwLVx0ICAgIHAtXHUwMDNlc3lzX2luZCA9PSBNSU5JWF9QQVJUSVRJT04pIHsgLyogc3VicGFydGl0aW9uIHRhYmxlIHByZXNlbnQgKi9cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo1MzE6XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7ICVzJWQ6IFx1MDAzY21pbml4OlwmIzM0Oywgc3RhdGUtXHUwMDNlbmFtZSwgb3JpZ2luKTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy01MzItXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1JTklYX05SX1NVQlBBUlRJVElPTlM7IGkmIzQzOyYjNDM7LCBwJiM0MzsmIzQzOykge1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy01MzktXHRcdH1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo1NDA6XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0OyBcdTAwM2VcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU0MS1cdH1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM9NTYwPWludCBtc2Rvc19wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTgzLSNlbHNlXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NTg0Olx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgW0FJWF1cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU4NS1cdFx0cmV0dXJuIDA7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTYxMC1cdFx0XHRcdFx1MDAyNlx1MDAyNiBmYXRfdmFsaWRfbWVkaWEoZmItXHUwMDNlbWVkaWEpKSB7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NjExOlx0XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02MTItXHRcdFx0XHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjU5LVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjY2MDpcdFx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsgXHUwMDNjXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NjEtXHRcdFx0cGFyc2VfZXh0ZW5kZWQoc3RhdGUsIHN0YXJ0LCBzaXplLCBkaXNrc2lnKTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo2NjI6XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7IFx1MDAzZVwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjYzLVx0XHRcdGNvbnRpbnVlO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NjktXHRcdGlmIChwLVx1MDAzZXN5c19pbmQgPT0gRE02X1BBUlRJVElPTilcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo2NzA6XHRcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7W0RNXVwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjcxLVx0XHRpZiAocC1cdTAwM2VzeXNfaW5kID09IEVaRF9QQVJUSVRJT04pXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NjcyOlx0XHRcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1tFWkRdXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NzMtXHR9XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjc0LVxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjY3NTpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjc2LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvb2YuYz0zNT1zdGF0aWMgdm9pZCBhZGRfb2ZfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGludCBzbG90LFxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvb2YuYy02NC1cbmJsb2NrL3BhcnRpdGlvbnMvb2YuYzo2NTpcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7KCVzKVwmIzM0OywgaW5mby1cdTAwM2V2b2xuYW1lKTtcbmJsb2NrL3BhcnRpdGlvbnMvb2YuYy02Ni19XG4tLVxuYmxvY2svcGFydGl0aW9ucy9vZi5jPTY4PWludCBvZl9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL29mLmMtMTA2LVxuYmxvY2svcGFydGl0aW9ucy9vZi5jOjEwNzpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL29mLmMtMTA4LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvb3NmLmM9MTY9aW50IG9zZl9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL29zZi5jLTgzLVx0fVxuYmxvY2svcGFydGl0aW9ucy9vc2YuYzo4NDpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL29zZi5jLTg1LVx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9zZ2kuYz0zNj1pbnQgc2dpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvc2dpLmMtODEtXHR9XG5ibG9jay9wYXJ0aXRpb25zL3NnaS5jOjgyOlx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvc2dpLmMtODMtXHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL3N1bi5jPTIxPWludCBzdW5fcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9zdW4uYy0xMjMtXHR9XG5ibG9jay9wYXJ0aXRpb25zL3N1bi5jOjEyNDpcdHNlcV9idWZfcHV0cyhcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O1xcblwmIzM0Oyk7XG5ibG9jay9wYXJ0aXRpb25zL3N1bi5jLTEyNS1cdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmM9NDk9aW50IHN5c3Y2OF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbi0tXG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jLTc1LVx0c2xpY2VzIC09IDE7IC8qIGxhc3Qgc2xpY2UgaXMgdGhlIHdob2xlIGRpc2sgKi9cbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmM6NzY6XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwmIzM0O3N5c1Y2ODogJXMocyV1KVwmIzM0Oywgc3RhdGUtXHUwMDNlbmFtZSwgc2xpY2VzKTtcbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmMtNzctXHRzbGljZSA9IChzdHJ1Y3Qgc2xpY2UgKilkYXRhO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmMtODQtXHRcdFx0XHRiZTMyX3RvX2NwdShzbGljZS1cdTAwM2VuYmxvY2tzKSk7XG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jOjg1Olx0XHRcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7KHMldSlcJiMzNDssIGkpO1xuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYy04Ni1cdFx0fVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmMtODgtXHR9XG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jOjg5Olx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmMtOTAtXHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL3VsdHJpeC5jPTEyPWludCB1bHRyaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy91bHRyaXguYy00MS1cdFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XG5ibG9jay9wYXJ0aXRpb25zL3VsdHJpeC5jOjQyOlx0XHRzZXFfYnVmX3B1dHMoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDtcXG5cJiMzNDspO1xuYmxvY2svcGFydGl0aW9ucy91bHRyaXguYy00My1cdFx0cmV0dXJuIDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDM3CgkJCQkJCQlvdXRwdXQ6IDc0CgkJCQkJCQl0aG91Z2h0czogMTA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIGEgTG9nZ2luZy1SZWxhdGVkIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTt2ZSBnb3QgYSBwYXRjaCB0aGF0IGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwcmludGluZyBwYXJ0aXRpb24gbmFtZXMgdG8gZG1lc2cgdmlhIGBwcmludGtgIHdpdGhpbiBgY2hlY2tfcGFydGl0aW9uYC4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBmaXggd29ydGggZnV6emluZz8gU3l6a2FsbGVyIGFscmVhZHkgZm91bmQgdGhlIG9yaWdpbmFsIGJ1ZyAoY29uZmlybWVkIGJ5IHRoZSBjb21taXQgYXV0aG9yIGJlaW5nIGBzeXotY2x1c3RlcmApLCBzbyB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgKmZpeCogbmVlZHMgZnV6emluZy4KCk15IHByaW1hcnkgY29uY2VybiBpcyB0aGF0IHRoZSBmaXggc2VlbXMgdG8gYm9pbCBkb3duIHRvIHN0cmluZyBmb3JtYXR0aW5nIGNoYW5nZXMuIFRoaXMgdHJpZ2dlcnMgdGhlIHByb21wdCYjMzk7cyBjcml0ZXJpYTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuJiMzNDsgSXQgYXBwZWFycyB0aGUgcGF0Y2ggKm9ubHkqIG1vZGlmaWVzIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYCBjYWxscywgYm90aCBvZiB3aGljaCBhcmUgdXNlZCBmb3IgbG9nZ2luZy4gU3BlY2lmaWNhbGx5LCBgc2VxX2J1Zl9wcmludGZgIGNvbnN0cnVjdHMgdGhlIHN0cmluZyB0aGF0IGBwcmludGtgIHRoZW4gdXNlcyB0byB3cml0ZSB0byBkbWVzZy4KClRoZSBjb3JlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgc3RyaW5nIGZvcm1hdHRpbmcgY2hhbmdlIGNvbnN0aXR1dGUgYSAqZnVuY3Rpb25hbCogYWx0ZXJhdGlvbj8gSXQgKnByZXZlbnRzKiBhbiBPT0IgcmVhZCwgd2hpY2ggY291bGQsIHRoZW9yZXRpY2FsbHksIGNhdXNlIGEga2VybmVsIGNyYXNoIG9yIGluZm9ybWF0aW9uIGxlYWsgaW50byBkbWVzZy4gSG93ZXZlciwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IGxvZ2dpbmcuIFRoZSBwcm9tcHQgc2VlbXMgdG8gY2xhc3NpZnkgYHNlcV9idWZfcHJpbnRmYCAod2hpY2ggYnVpbGRzIHRoZSBwcmludCBzdHJpbmcpIGFzIHBhcnQgb2YgbG9nZ2luZy4gVGhlIGNoYW5nZSBpdHNlbGYgcHJldmVudHMgcmVhZGluZyBwYXN0IHRoZSBlbmQgb2YgYSBub24tbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgd2hpY2ggaXMgcHVyZWx5IGFib3V0IHRoZSBmb3JtYXR0aW5nIGFuZCBzYWZldHkgb2YgdGhlIGxvZ2dpbmcgb3V0cHV0LgoKTG9va2luZyBhdCB0aGUgcGF0Y2ggaXRzZWxmIGNvbmZpcm1zIHRoaXMuIEl0IGNoYW5nZXMgYHNlcV9idWZfcHJpbnRmYCBmcm9tIGAmIzM0OyVzJiMzNDtgIHRvIGAmIzM0OyUuKnMmIzM0O2AgYW5kIGFkZHMgYSBsZW5ndGggYXJndW1lbnQuIFNpbWlsYXJseSwgYHByX3dhcm5gIGlzIGNoYW5nZWQgZnJvbSB1c2luZyBgc25wcmludGZgIHRvIGAmIzM0OyUuKnMmIzM0O2Agd2l0aCBhbiBleHBsaWNpdCBsZW5ndGguIEl0JiMzOTtzIHN0cmljdGx5IGFib3V0IHByZXZlbnRpbmcgcmVhZHMgYmV5b25kIHRoZSBib3VuZHMgb2YgdGhlIHBhcnRpdGlvbiBuYW1lIHN0cmluZy4gSXQmIzM5O3MgZGlyZWN0bHkgYWRkcmVzc2luZyB0aGUgbG9nZ2luZyBiZWhhdmlvciBpdHNlbGYuCgpUaGUga2V5IGlzIHRoYXQgYHN0YXRlLSZndDtwcF9idWZgICh3aGljaCBpcyBtb2RpZmllZCBieSBgc2VxX2J1Zl9wcmludGZgKSBpcyAqb25seSogdXNlZCBmb3IgYHByaW50a2AuIFRoZSByZWxldmFudCBjb2RlIHNlZ21lbnQgY29uZmlybXMgdGhpcy4gSXQgaXMgZnJlZWQgZGlyZWN0bHkgYWZ0ZXIgYmVpbmcgcHJpbnRlZC4KCldoaWxlIGZpeGluZyBhIHBvdGVudGlhbCBjcmFzaCBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIHN0YWJpbGl0eSwgdGhlIHByb21wdCBlbXBoYXNpemVzIHRoZSAqbmF0dXJlKiBvZiB0aGUgY2hhbmdlcy4gVGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBjaGFuZ2VzIHRvIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYCwgdGhlcmVmb3JlIHRoZSBjaGFuZ2UgaXMgbG9nZ2luZyBjaGFuZ2VzLiBUaGlzIGFwcGVhcnMgdG8gZmFsbCBzcXVhcmVseSB1bmRlciAmIzM0O1B1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLiYjMzQ7IEV2ZW4gaWYgdGhlIGxvZ2dpbmcgbm93IHByZXZlbnRzIGNyYXNoZXMsIHRoZSBjaGFuZ2UgaXMgaW4gdGhlIGxvZ2dpbmcgc3RhdGVtZW50IGl0c2VsZiwgYW5kIGRvZXMgbm90IGFsdGVyIHRoZSBwYXJ0aXRpb24gcGFyc2VyIGxvZ2ljLgoKVGhlcmVmb3JlLCBkZXNwaXRlIHRoZSBwb3RlbnRpYWwgY3Jhc2ggYXZvaWRhbmNlLCBJIHdpbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGJlY2F1c2UgdGhlIHBhdGNoIGlzIGxpbWl0ZWQgdG8gbW9kaWZ5aW5nIGxvZ2dpbmcgc3RhdGVtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGxvZ2dpbmcgc3RhdGVtZW50cyAoc2VxX2J1Zl9wcmludGYgYW5kIHByX3dhcm4pIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByaW50aW5nIHBhcnRpdGlvbiBuYW1lcy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcGFydGl0aW9uIHBhcnNlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgbG9nZ2luZyBzdGF0ZW1lbnRzIChzZXFfYnVmX3ByaW50ZiBhbmQgcHJfd2FybikgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJpbnRpbmcgcGFydGl0aW9uIG5hbWVzLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBwYXJ0aXRpb24gcGFyc2VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjE5LjQ4NzMwOTQ4M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNzU4MjUxOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGxvZ2dpbmcgc3RhdGVtZW50cyAoc2VxX2J1Zl9wcmludGYgYW5kIHByX3dhcm4pIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByaW50aW5nIHBhcnRpdGlvbiBuYW1lcy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcGFydGl0aW9uIHBhcnNlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjE5LjQ4NzMxNTI1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg2ODUzMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDMwNTk4NjU3ZmFhODgzMmZhMTUwOWU1NjdmMzExYjg1ODFkNGJhOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDo1MDoxNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2FpeC5jIGIvYmxvY2svcGFydGl0aW9ucy9haXguY1xcbmluZGV4IGYzYzQxNzRlMDAzZTlkLi5mZTJkMmNiMGM0ZTc4NSAxMDA2NDRcXG4tLS0gYS9ibG9jay9wYXJ0aXRpb25zL2FpeC5jXFxuKysrIGIvYmxvY2svcGFydGl0aW9ucy9haXguY1xcbkBAIC0yNjEsNyArMjYxLDggQEAgaW50IGFpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4gXFx0XFx0XFx0XFx0cHV0X3BhcnRpdGlvbihzdGF0ZSwgbHZfaXggKyAxLFxcbiBcXHRcXHRcXHRcXHQgIChpICsgMSAtIGxwX2l4KSAqIHBwX2Jsb2Nrc19zaXplICsgcHNuX3BhcnQxLFxcbiBcXHRcXHRcXHRcXHQgIGx2aXBbbHZfaXhdLnBwc19wZXJfbHYgKiBwcF9ibG9ja3Nfc2l6ZSk7XFxuLVxcdFxcdFxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFxcdTAwM2Mlc1xcdTAwM2VcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFxcdTAwM2MlLipzXFx1MDAzZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIChpbnQpc2l6ZW9mKG5bbHZfaXhdLm5hbWUpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgbltsdl9peF0ubmFtZSk7XFxuIFxcdFxcdFxcdFxcdGx2aXBbbHZfaXhdLmx2X2lzX2NvbnRpZ3VvdXMgPSAxO1xcbiBcXHRcXHRcXHRcXHRyZXQgPSAxO1xcbkBAIC0yNzEsMTIgKzI3MiwxMCBAQCBpbnQgYWl4X3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbiBcXHRcXHR9XFxuIFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzdGF0ZS1cXHUwMDNlbGltaXQ7IGkgKz0gMSlcXG4gXFx0XFx0XFx0aWYgKGx2aXBbaV0ucHBzX2ZvdW5kIFxcdTAwMjZcXHUwMDI2ICFsdmlwW2ldLmx2X2lzX2NvbnRpZ3VvdXMpIHtcXG4tXFx0XFx0XFx0XFx0Y2hhciB0bXBbc2l6ZW9mKG5baV0ubmFtZSkgKyAxXTsgLy8gbnVsbCBjaGFyXFxuLVxcbi1cXHRcXHRcXHRcXHRzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCBcXFwiJXNcXFwiLCBuW2ldLm5hbWUpO1xcbi1cXHRcXHRcXHRcXHRwcl93YXJuKFxcXCJwYXJ0aXRpb24gJXMgKCV1IHBwJ3MgZm91bmQpIGlzIFxcXCJcXG4rXFx0XFx0XFx0XFx0cHJfd2FybihcXFwicGFydGl0aW9uICUuKnMgKCV1IHBwJ3MgZm91bmQpIGlzIFxcXCJcXG4gXFx0XFx0XFx0XFx0XFx0XFxcIm5vdCBjb250aWd1b3VzXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHR0bXAsIGx2aXBbaV0ucHBzX2ZvdW5kKTtcXG4rXFx0XFx0XFx0XFx0XFx0KGludClzaXplb2YobltpXS5uYW1lKSwgbltpXS5uYW1lLFxcbitcXHRcXHRcXHRcXHRcXHRsdmlwW2ldLnBwc19mb3VuZCk7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0a2ZyZWUocHZkKTtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo1MDoyMC4zNzczMDg0ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODY4MjQxNjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGxvZ2dpbmcgc3RhdGVtZW50cyAoc2VxX2J1Zl9wcmludGYgYW5kIHByX3dhcm4pIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByaW50aW5nIHBhcnRpdGlvbiBuYW1lcy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcGFydGl0aW9uIHBhcnNlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDMwNTk4NjU3ZmFhODgzMmZhMTUwOWU1NjdmMzExYjg1ODFkNGJhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjUwOjE3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYmxvY2svcGFydGl0aW9ucy9haXguYyBiL2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmNcbmluZGV4IGYzYzQxNzRlMDAzZTlkLi5mZTJkMmNiMGM0ZTc4NSAxMDA2NDRcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmNcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvYWl4LmNcbkBAIC0yNjEsNyArMjYxLDggQEAgaW50IGFpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbiBcdFx0XHRcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIGx2X2l4ICsgMSxcbiBcdFx0XHRcdCAgKGkgKyAxIC0gbHBfaXgpICogcHBfYmxvY2tzX3NpemUgKyBwc25fcGFydDEsXG4gXHRcdFx0XHQgIGx2aXBbbHZfaXhdLnBwc19wZXJfbHYgKiBwcF9ibG9ja3Nfc2l6ZSk7XG4tXHRcdFx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwiIFx1MDAzYyVzXHUwMDNlXFxuXCIsXG4rXHRcdFx0XHRzZXFfYnVmX3ByaW50ZihcdTAwMjZzdGF0ZS1cdTAwM2VwcF9idWYsIFwiIFx1MDAzYyUuKnNcdTAwM2VcXG5cIixcbitcdFx0XHRcdFx0ICAgICAgIChpbnQpc2l6ZW9mKG5bbHZfaXhdLm5hbWUpLFxuIFx0XHRcdFx0XHQgICAgICAgbltsdl9peF0ubmFtZSk7XG4gXHRcdFx0XHRsdmlwW2x2X2l4XS5sdl9pc19jb250aWd1b3VzID0gMTtcbiBcdFx0XHRcdHJldCA9IDE7XG5AQCAtMjcxLDEyICsyNzIsMTAgQEAgaW50IGFpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbiBcdFx0fVxuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzdGF0ZS1cdTAwM2VsaW1pdDsgaSArPSAxKVxuIFx0XHRcdGlmIChsdmlwW2ldLnBwc19mb3VuZCBcdTAwMjZcdTAwMjYgIWx2aXBbaV0ubHZfaXNfY29udGlndW91cykge1xuLVx0XHRcdFx0Y2hhciB0bXBbc2l6ZW9mKG5baV0ubmFtZSkgKyAxXTsgLy8gbnVsbCBjaGFyXG4tXG4tXHRcdFx0XHRzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCBcIiVzXCIsIG5baV0ubmFtZSk7XG4tXHRcdFx0XHRwcl93YXJuKFwicGFydGl0aW9uICVzICgldSBwcCdzIGZvdW5kKSBpcyBcIlxuK1x0XHRcdFx0cHJfd2FybihcInBhcnRpdGlvbiAlLipzICgldSBwcCdzIGZvdW5kKSBpcyBcIlxuIFx0XHRcdFx0XHRcIm5vdCBjb250aWd1b3VzXFxuXCIsXG4tXHRcdFx0XHRcdHRtcCwgbHZpcFtpXS5wcHNfZm91bmQpO1xuK1x0XHRcdFx0XHQoaW50KXNpemVvZihuW2ldLm5hbWUpLCBuW2ldLm5hbWUsXG4rXHRcdFx0XHRcdGx2aXBbaV0ucHBzX2ZvdW5kKTtcbiBcdFx0XHR9XG4gXHRcdGtmcmVlKHB2ZCk7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo1MDoyMC4zNzczMTEzNDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTA2MTUwNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJsb2NrIFBhcnRpdGlvbmluZyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBibG9jay9wYXJ0aXRpb25zL2FpeC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0IHNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgY2xlYW51cCwgc3dhcHBpbmcgb3V0IHRoZSBvbGQgYCVzYCBmb3JtYXR0aW5nIHdpdGggYCUuKnNgIGFuZCBhIGAoaW50KXNpemVvZihuW2x2X2l4XS5uYW1lKWAgaW4gYHNlcV9idWZfcHJpbnRmYCBhbmQgYHByX3dhcm5gLiBJIHNhdyB0aGF0IGl0IHdhcyBqdXN0IGEgc3RyaW5nIGZvcm1hdHRpbmcgZml4IGluIGxvZ2dpbmcgYW5kIHBhcnRpdGlvbiBuYW1lIHByaW50aW5nLiBUaGUgZ29hbCBpcyBsaWtlbHkgdG8gcHJldmVudCBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHN0cmluZyByZWFkLCBvciBhdCB0aGUgbGVhc3QsIGF2b2lkIHRoZSBvdmVyaGVhZCBvZiBjb3B5aW5nIHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4gTm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXMgZGVlcGx5IGFyY2hpdGVjdHVyYWwuXG5cbkJ1dCB3YWl0IGEgbWludXRl4oCmIEkgc2VlIGBzZXFfYnVmX3ByaW50ZmAgaXMgcHJpbnRpbmcgdG8gYHN0YXRlLVx1MDAzZXBwX2J1ZmAsIGFuZCB0aGF0IGJ1ZmZlciBpcyB1c2VkIGZvciBwYXJ0aXRpb24gaW5mb3JtYXRpb24gdGhhdCAqY291bGQqIGJlIGV4cG9zZWQgdG8gdXNlcnNwYWNlIOKAkyBgL3Byb2MvcGFydGl0aW9uc2AsIGRtZXNnLCBldGMuIE5vdyBpdCBpcyBzdGFydGluZyB0byBsb29rIGxpa2UgYSBwb3NzaWJsZSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhpcyBgJS4qc2AgdXNhZ2Ugd291bGQgcHJldmVudCByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiBgbltsdl9peF0ubmFtZWAsIHdoaWNoIG1pZ2h0IG5vdCBiZSBudWxsLXRlcm1pbmF0ZWQuIFNvIHRoaXMgKmNvdWxkKiBiZSBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgc2VjdXJpdHkgaXNzdWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIHdhc24ndCBudWxsLXRlcm1pbmF0ZWQuXG5cbkFscmlnaHQsIEkgbmVlZCB0byBkaWcgaW50byBgYmxvY2svcGFydGl0aW9ucy9haXguY2AgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjI1LjI4MzQ2NDU2MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQxNjY2MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWl4X3BhcnRpdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9wYXJ0aXRpb25zL2FpeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvYWl4LmM9MTM4PXN0YXRpYyBzdHJ1Y3QgbHZuYW1lICphbGxvY19sdm4oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTMyIGxiYSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTUzLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTU0OmludCBhaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xNTUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo1MDoyNS40Mzc2NDQwNjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQ3MjQwODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgVmFyaWFibGUgJ24nKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gb24gbXkgbWluZCwgZ2l2ZW4gd2hhdGV2ZXIgY29udGV4dCB3ZSdyZSBpbiwgaXMgdGhlIG5hdHVyZSBvZiB0aGUgdmFyaWFibGUgJ24nLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaXRzIGRlZmluaXRpb24sIGl0cyBkb21haW4sIGFuZCBpdHMgcG90ZW50aWFsIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIHN5c3RlbSB3ZSdyZSBleGFtaW5pbmcuIElzIHRoaXMgYSBzY2FsYXIsIGEgdmVjdG9yLCBvciBwZXJoYXBzIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggbGlrZSBhIGZ1bmN0aW9uPyBEb2VzICduJyByZXByZXNlbnQgYSBudW1iZXIsIGFuIGluZGV4LCBhIGRpbWVuc2lvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzcGVjaWZpYyBmaWVsZCBjb250ZXh0IHdpbGwgZHJhbWF0aWNhbGx5IGluZmx1ZW5jZSBteSB1bmRlcnN0YW5kaW5nLiBGb3IgZXhhbXBsZSwgaW4gY29tcHV0YXRpb25hbCBudW1iZXIgdGhlb3J5LCAnbicgbWlnaHQgcmVwcmVzZW50IGEgbW9kdWx1cywgd2hpbGUgaW4gZ3JhcGggdGhlb3J5LCBpdCdzIGxpa2VseSB0aGUgbnVtYmVyIG9mIG5vZGVzLiBLbm93aW5nIHRoaXMsIEkgY2FuIGJlZ2luIHRvIGFudGljaXBhdGUgaXRzIGltcGFjdCBvbiB0aGUgYWxnb3JpdGhtcyBvciBwcmluY2lwbGVzIGF0IHBsYXkuIEkgaGF2ZSB0byBhc3Nlc3MgaG93IHNpZ25pZmljYW50IHRoaXMgdmFsdWUgaXMsIHdoYXQgcmVzdHJpY3Rpb25zIGFyZSBwbGFjZWQgdXBvbiBpdCwgYW5kIGhvdyB0aGV5IHNoYXBlIHRoZSBwcm9ibGVtLiBPbmx5IHdpdGggdGhpcyBwcmVsaW1pbmFyeSB1bmRlcnN0YW5kaW5nIHdpbGwgSSBiZSBhYmxlIHRvIGVmZmVjdGl2ZWx5IGRpc3NlY3QgdGhlIHByb2JsZW0gYXQgaGFuZCBhbmQgYmVnaW4gYSBtZWFuaW5nZnVsIHNvbHV0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NTA6MjguMzg0ODg3ODc1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDI4NjM0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgbHZuYW1lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvYWl4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svcGFydGl0aW9ucy9haXguYz0zND1zdHJ1Y3QgbHZkIHtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtNDUtXFxuYmxvY2svcGFydGl0aW9ucy9haXguYzo0NjpzdHJ1Y3QgbHZuYW1lIHtcXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTQ3LVxcdGNoYXIgbmFtZVs2NF07XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jPTExMz1zdGF0aWMgc3RydWN0IHB2ZCAqYWxsb2NfcHZkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHUzMiBsYmEpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTEzNy0gKi9cXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jOjEzODpzdGF0aWMgc3RydWN0IGx2bmFtZSAqYWxsb2NfbHZuKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHUzMiBsYmEpXFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xMzkte1xcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTQwOlxcdHNpemVfdCBjb3VudCA9IHNpemVvZihzdHJ1Y3QgbHZuYW1lKSAqIExWTV9NQVhMVlM7XFxuYmxvY2svcGFydGl0aW9ucy9haXguYzoxNDE6XFx0c3RydWN0IGx2bmFtZSAqcDtcXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE0Mi1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM9MTU0PWludCBhaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE2OS1cXHR9ICpsdmlwO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MTcwOlxcdHN0cnVjdCBsdm5hbWUgKm4gPSBOVUxMO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTcxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo1MDoyOC42NTUxNzk2MjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjE3NzcxOTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQUlYIFBhcnRpdGlvbiBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjaGFuZ2UgaW4gYGFpeF9wYXJ0aXRpb25gLiBJdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIHJlcGxhY2luZyB0aGUgZGlyZWN0IHVzZSBvZiBgJXNgIGluIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYCB3aXRoIGAlLipzYC4gVGhlIGtleSBpcyB0aGF0IHRoZSBjaGFuZ2UgaW50cm9kdWNlcyBhbiBleHBsaWNpdCBsZW5ndGggc3BlY2lmaWVyIHdoZW4gcHJpbnRpbmcgdGhlIHBhcnRpdGlvbiBuYW1lLCBjYWxjdWxhdGVkIGZyb20gYHNpemVvZihuW2x2X2l4XS5uYW1lKWAuIFRoaXMgaXMgY2xlYXJseSBhIGRlZmVuc2l2ZSBtZWFzdXJlLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgdG8gYXZvaWQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGlmIHRoZSBgbltsdl9peF0ubmFtZWAgYnVmZmVyIGlzICpub3QqIG51bGwtdGVybWluYXRlZC4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgaXNzdWUgdGhhdCBjYW4gbGVhZCB0byBzdWJ0bGUgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBpcyB0aGlzIHdvcnRoeSBvZiBmdXp6aW5nPyBJdCBpbnZvbHZlcyBhIHBhcnRpdGlvbiBwYXJzZXIsIHNwZWNpZmljYWxseSBgYWl4X3BhcnRpdGlvbmAuIEFuZCwgZnJvbSBleHBlcmllbmNlLCBmdXp6aW5nIHBhcnRpdGlvbiBwYXJzZXJzICppcyogdmlhYmxlLiBZb3UgY2FuIGNyZWF0ZSBtYWxpY2lvdXMgcGFydGl0aW9uIHRhYmxlcyBhbmQgZmVlZCB0aGVtIHRvIHRoZSBwYXJzZXIg4oCTIHRoZSBsb29wIGRldmljZSBhcHByb2FjaCB3aXRoIGNyYWZ0ZWQgaW1hZ2VzIGhhcyBhbHdheXMgYmVlbiBhIHNvbGlkIG1ldGhvZC4gQnV0IEkgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhpcyBmaXRzIGludG8gdGhlIG92ZXJhbGwgc2NoZW1lLi4uIE9oLCByaWdodCEgYGFpeF9wYXJ0aXRpb25gIGlzIHBhcnQgb2YgdGhlIGJsb2NrIHBhcnRpdGlvbiBwYXJzZXJzLiBUaGF0IGlzIGEgdmFsdWFibGUgcGllY2Ugb2YgaW5mb3JtYXRpb24uIExldCdzIG1ha2Ugc3VyZSB0aGUgYEFJWF9QQVJUSVRJT05gIGNvbmZpZ3VyYXRpb24gZXhpc3RzIGJlZm9yZSB3ZSBjb25zaWRlciB0aGlzIGZ1bGx5LiBUaGlzIHdpbGwgaW5mb3JtIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgYWN0dWFsbHkgYWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjMzLjg3Mjk1NDM3NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI3NjYzMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQUlYX1BBUlRJVElPTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9wYXJ0aXRpb25zL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9wYXJ0aXRpb25zL0tjb25maWc9NjU9Y29uZmlnIEFDT1JOX1BBUlRJVElPTl9SSVNDSVhcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvS2NvbmZpZy03My1cXG5ibG9jay9wYXJ0aXRpb25zL0tjb25maWc6NzQ6Y29uZmlnIEFJWF9QQVJUSVRJT05cXG5ibG9jay9wYXJ0aXRpb25zL0tjb25maWctNzUtXFx0Ym9vbCBcXFwiQUlYIGJhc2ljIHBhcnRpdGlvbiB0YWJsZSBzdXBwb3J0XFxcIiBpZiBQQVJUSVRJT05fQURWQU5DRURcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfQVRBUklfUEFSVElUSU9OKSArPSBhdGFyaS5vXFxuYmxvY2svcGFydGl0aW9ucy9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQUlYX1BBUlRJVElPTikgKz0gYWl4Lm9cXG5ibG9jay9wYXJ0aXRpb25zL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19DTURMSU5FX1BBUlRJVElPTikgKz0gY21kbGluZS5vXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM9NTYwPWludCBtc2Rvc19wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy01ODAtXFx0XFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjU4MTojaWZkZWYgQ09ORklHX0FJWF9QQVJUSVRJT05cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTgyLVxcdFxcdHJldHVybiBhaXhfcGFydGl0aW9uKHN0YXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NTA6MzQuMTQ1NzI2MTk3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3MTgxMDIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgYENPTkZJR19BSVhfUEFSVElUSU9OYCBGaXgqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX0FJWF9QQVJUSVRJT05gIGlzIGRlZmluaXRlbHkgYSB0aGluZy4gTm93IHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzdHJpbmcgZm9ybWF0dGluZyBmaXggd29ydGggdGhlIGZ1enppbmcgZWZmb3J0PyBUaGUgcGF0Y2ggc2VlbXMgcHJldHR5IGNvbnRhaW5lZDsgaXQncyBqdXN0IGFib3V0IHByZXZlbnRpbmcgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBgc2VxX2J1Zl9wcmludGZgIGFuZCBgcHJfd2FybmAuIEhtbSwgbGV0IG1lIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZyBsaWtlIGBwcl9lcnJgLCBoYXJtbGVzcyBjb25zdGFudC9tYWNybyBjaGFuZ2VzLCBvciB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuVGhlIGNvcmUgY2hhbmdlIGlzIHRvIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGl0IGxvb2tzIGxpa2UgdGhhdCdzIHVzZWQgdG8gYnVpbGQgdGhlIHBhcnRpdGlvbiBzdHJpbmcgdGhhdCBlbmRzIHVwIGluIGRtZXNnIG9yIGAvcHJvYy9wYXJ0aXRpb25zYC4gT2theSwgc28gYHN0YXRlLVx1MDAzZXBwX2J1ZmAsIGxldCBtZSBjb25maXJtIHdoZXJlIHRoYXQncyB1c2VkLiBSaWdodCwgaXQgbG9va3MgbGlrZSBgc3RhdGUtXHUwMDNlcHBfYnVmYCBpcyB1c2VkIGluIGBibG9jay9wYXJ0aXRpb25zL2NvcmUuY2AuIExldCBtZSBkaXZlIGluIHRoZXJlIGZvciBhIGNsb3NlciBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzQ2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjM4LjUxNzUzODYyM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1NDI3Nzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBwX2J1ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9wYXJ0aXRpb25zL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM9MjY9YWRmc19wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgY2hhciAqbmFtZSwgY2hhciAqZGF0YSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00My1cXHRpZiAobmFtZSkge1xcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzo0NDpcXHRcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBbJXNdXFxcIiwgbmFtZSk7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTQ1LVxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz02OT1zdGF0aWMgaW50IHJpc2NpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy03OS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6ODA6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFtSSVNDaVhdXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTgxLVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTg2LVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzo4NzpcXHRcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgXFx1MDAzY1xcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy04OC1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy05NS1cXHRcXHRcXHRcXHRcXHRsZTMyX3RvX2NwdShyci1cXHUwMDNlcGFydFtwYXJ0XS5sZW5ndGgpKTtcXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6OTY6XFx0XFx0XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIoJXMpXFxcIiwgcnItXFx1MDAzZXBhcnRbcGFydF0ubmFtZSk7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTk3LVxcdFxcdFxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy05OS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6MTAwOlxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTAxLVxcdH0gZWxzZSB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM9MTIyPXN0YXRpYyBpbnQgbGludXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTI5LVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzoxMzA6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFtMaW51eF1cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTMxLVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTEzNy1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6MTM4OlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNjXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTEzOS1cXHR3aGlsZSAobGludXhwLVxcdTAwM2VtYWdpYyA9PSBjcHVfdG9fbGUzMihMSU5VWF9OQVRJVkVfTUFHSUMpIHx8XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMTQ3LVxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6MTQ4OlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTE0OS1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYz0yNDc9aW50IGFkZnNwYXJ0X2NoZWNrX0FERlMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0yOTItXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzoyOTM6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMjk0LVxcdHJldHVybiAxO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jPTM0Nz1pbnQgYWRmc3BhcnRfY2hlY2tfSUNTKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtMzY1LVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzozNjY6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFtJQ1NdXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTM2Ny1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy0zOTktXFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjQwMDpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00MDEtXFx0cmV0dXJuIDE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM9NDQzPWludCBhZGZzcGFydF9jaGVja19QT1dFUlRFQyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTQ1OS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM6NDYwOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBbUE9XRVJURUNdXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTQ2MS1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00NzAtXFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jOjQ3MTpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYy00NzItXFx0cmV0dXJuIDE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmM9NTA0PWludCBhZGZzcGFydF9jaGVja19FRVNPWChzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hY29ybi5jLTU0MS1cXHRcXHRwdXRfcGFydGl0aW9uKHN0YXRlLCBzbG90KyssIHN0YXJ0LCBzaXplIC0gc3RhcnQpO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWNvcm4uYzo1NDI6XFx0XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2Fjb3JuLmMtNTQzLVxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM9MTU0PWludCBhaXhfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTE4MS1cXHRcXHRcXHRwcF9ibG9ja3Nfc2l6ZSA9IHBwX2J5dGVzX3NpemUgLyA1MTI7XFxuYmxvY2svcGFydGl0aW9ucy9haXguYzoxODI6XFx0XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsXFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xODMtXFx0XFx0XFx0XFx0ICAgICAgIFxcXCIgQUlYIExWTSBoZWFkZXIgdmVyc2lvbiAldSBmb3VuZFxcXFxuXFxcIixcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmMtMTg3LVxcdFxcdH0gZWxzZSB7XFxuYmxvY2svcGFydGl0aW9ucy9haXguYzoxODg6XFx0XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsXFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0xODktXFx0XFx0XFx0XFx0ICAgICAgIFxcXCIgdW5zdXBwb3J0ZWQgQUlYIExWTSB2ZXJzaW9uICVkIGZvdW5kXFxcXG5cXFwiLFxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9haXguYy0yNjMtXFx0XFx0XFx0XFx0ICBsdmlwW2x2X2l4XS5wcHNfcGVyX2x2ICogcHBfYmxvY2tzX3NpemUpO1xcbmJsb2NrL3BhcnRpdGlvbnMvYWl4LmM6MjY0OlxcdFxcdFxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFxcdTAwM2MlLipzXFx1MDAzZVxcXFxuXFxcIixcXG5ibG9jay9wYXJ0aXRpb25zL2FpeC5jLTI2NS1cXHRcXHRcXHRcXHRcXHQgICAgICAgKGludClzaXplb2Yobltsdl9peF0ubmFtZSksXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmM9MzY9aW50IGFtaWdhX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTg0LVxcdC8qIEJlIG1vcmUgaW5mb3JtYXRpdmUgKi9cXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmM6ODU6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgUkRTSyAoJWQpXFxcIiwgYmxrc2l6ZSAqIDUxMik7XFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTg2LVxcdGJsayA9IGJlMzJfdG9fY3B1KHJkYi1cXHUwMDNlcmRiX1BhcnRpdGlvbkxpc3QpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE4MC1cXHRcXHRcXHRpZiAoZG9zdHlwZVszXSBcXHUwMDNjICcgJylcXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmM6MTgxOlxcdFxcdFxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLFxcbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYy0xODItXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXCIgKCVjJWMlY14lYylcXFwiLFxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE4Ni1cXHRcXHRcXHRlbHNlXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jOjE4NzpcXHRcXHRcXHRcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZixcXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtMTg4LVxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFwiICglYyVjJWMlYylcXFwiLFxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE5MC1cXHRcXHRcXHRcXHRcXHQgICAgICAgZG9zdHlwZVsyXSwgZG9zdHlwZVszXSk7XFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jOjE5MTpcXHRcXHRcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIihyZXMgJWQgc3BiICVkKVxcXCIsXFxuYmxvY2svcGFydGl0aW9ucy9hbWlnYS5jLTE5Mi1cXHRcXHRcXHRcXHQgICAgICAgYmUzMl90b19jcHUocGItXFx1MDAzZXBiX0Vudmlyb25tZW50WzZdKSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYy0xOTYtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvYW1pZ2EuYzoxOTc6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMtMTk4LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jPTM0PWludCBhdGFyaV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy03Mi1cXHRwaSA9IFxcdTAwMjZycy1cXHUwMDNlcGFydFswXTtcXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6NzM6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIEFIRElcXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtNzQtXFx0Zm9yIChzbG90ID0gMTsgcGkgXFx1MDAzYyBcXHUwMDI2cnMtXFx1MDAzZXBhcnRbNF0gXFx1MDAyNlxcdTAwMjYgc2xvdCBcXHUwMDNjIHN0YXRlLVxcdTAwM2VsaW1pdDsgc2xvdCsrLCBwaSsrKSB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtOTEtI2VuZGlmXFxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jOjkyOlxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBYR01cXHUwMDNjXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTkzLVxcdFxcdHBhcnRzZWN0ID0gZXh0ZW5zZWN0ID0gYmUzMl90b19jcHUocGktXFx1MDAzZXN0KTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy0xMzAtXFx0XFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYzoxMzE6XFx0XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFxcdTAwM2VcXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtMTMyLVxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYy0xMzctXFx0XFx0aWYgKE9LX2lkKHBpLVxcdTAwM2VpZCkpIHtcXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6MTM4OlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBJQ0RcXHUwMDNjXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTEzOS1cXHRcXHRcXHRmb3IgKDsgcGkgXFx1MDAzYyBcXHUwMDI2cnMtXFx1MDAzZWljZHBhcnRbOF0gXFx1MDAyNlxcdTAwMjYgc2xvdCBcXHUwMDNjIHN0YXRlLVxcdTAwM2VsaW1pdDsgc2xvdCsrLCBwaSsrKSB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtMTQ2LVxcdFxcdFxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmM6MTQ3OlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9hdGFyaS5jLTE0OC1cXHRcXHR9XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtMTUyLVxcbmJsb2NrL3BhcnRpdGlvbnMvYXRhcmkuYzoxNTM6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2F0YXJpLmMtMTU0LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oPTExPXN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmgtMjMtXFx0Ym9vbCBhY2Nlc3NfYmV5b25kX2VvZDtcXG5ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmg6MjQ6XFx0c3RydWN0IHNlcV9idWYgcHBfYnVmO1xcbmJsb2NrL3BhcnRpdGlvbnMvY2hlY2suaC0yNS19O1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oPTM4PXB1dF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpwLCBpbnQgbiwgc2VjdG9yX3QgZnJvbSwgc2VjdG9yX3Qgc2l6ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvY2hlY2suaC00Mi1cXHRcXHRwLVxcdTAwM2VwYXJ0c1tuXS5zaXplID0gc2l6ZTtcXG5ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmg6NDM6XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnAtXFx1MDAzZXBwX2J1ZiwgXFxcIiAlcyVkXFxcIiwgcC1cXHUwMDNlbmFtZSwgbik7XFxuYmxvY2svcGFydGl0aW9ucy9jaGVjay5oLTQ0LVxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvY21kbGluZS5jPTIyOD1zdGF0aWMgaW50IGFkZF9wYXJ0KGludCBzbG90LCBzdHJ1Y3QgY21kbGluZV9zdWJwYXJ0ICpzdWJwYXJ0LFxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmMtMjQ1LVxcbmJsb2NrL3BhcnRpdGlvbnMvY21kbGluZS5jOjI0NjpcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiglcylcXFwiLCBpbmZvLVxcdTAwM2V2b2xuYW1lKTtcXG5ibG9jay9wYXJ0aXRpb25zL2NtZGxpbmUuYy0yNDctXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2NtZGxpbmUuYz0zNTI9aW50IGNtZGxpbmVfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2NtZGxpbmUuYy0zNzktXFxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmM6MzgwOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9jbWRsaW5lLmMtMzgxLVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM9MTE5PXN0YXRpYyBzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKmNoZWNrX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqaGQpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xMjYtXFx0XFx0cmV0dXJuIE5VTEw7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTI3OlxcdHN0YXRlLVxcdTAwM2VwcF9idWYuYnVmZmVyID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jOjEyODpcXHRpZiAoIXN0YXRlLVxcdTAwM2VwcF9idWYuYnVmZmVyKSB7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTI5LVxcdFxcdGZyZWVfcGFydGl0aW9ucyhzdGF0ZSk7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xMzEtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jOjEzMjpcXHRzZXFfYnVmX2luaXQoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIHN0YXRlLVxcdTAwM2VwcF9idWYuYnVmZmVyLCBQQUdFX1NJWkUpO1xcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTEzMy1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTEzNS1cXHRzdHJzY3B5KHN0YXRlLVxcdTAwM2VuYW1lLCBoZC1cXHUwMDNlZGlza19uYW1lKTtcXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxMzY6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgJXM6XFxcIiwgc3RhdGUtXFx1MDAzZW5hbWUpO1xcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTEzNy1cXHRpZiAoaXNkaWdpdChzdGF0ZS1cXHUwMDNlbmFtZVtzdHJsZW4oc3RhdGUtXFx1MDAzZW5hbWUpLTFdKSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTE1NC1cXHRpZiAocmVzIFxcdTAwM2UgMCkge1xcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jOjE1NTpcXHRcXHRwcmludGsoS0VSTl9JTkZPIFxcXCIlc1xcXCIsIHNlcV9idWZfc3RyKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmKSk7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTU2LVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jOjE1NzpcXHRcXHRrZnJlZShzdGF0ZS1cXHUwMDNlcHBfYnVmLmJ1ZmZlcik7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmMtMTU4LVxcdFxcdHJldHVybiBzdGF0ZTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTE2Ny1cXHRpZiAocmVzKSB7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTY4OlxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZixcXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xNjktXFx0XFx0XFx0ICAgICBcXFwiIHVuYWJsZSB0byByZWFkIHBhcnRpdGlvbiB0YWJsZVxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9jb3JlLmM6MTcwOlxcdFxcdHByaW50ayhLRVJOX0lORk8gXFxcIiVzXFxcIiwgc2VxX2J1Zl9zdHIoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYpKTtcXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYy0xNzEtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTE3Mi1cXG5ibG9jay9wYXJ0aXRpb25zL2NvcmUuYzoxNzM6XFx0a2ZyZWUoc3RhdGUtXFx1MDAzZXBwX2J1Zi5idWZmZXIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvY29yZS5jLTE3NC1cXHRmcmVlX3BhcnRpdGlvbnMoc3RhdGUpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz03MTI9aW50IGVmaV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzUzLVxcdGtmcmVlKGdwdCk7XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo3NTQ6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTc1NS1cXHRyZXR1cm4gMTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM9MTY4PXN0YXRpYyBpbnQgZmluZF92b2wxX3BhcnRpdGlvbnMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMTgxLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MTgyOlxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiVk9MMS8lOHM6XFxcIiwgbmFtZSk7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0xODMtXFx0LypcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjE5LVxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjIyMDpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjIxLVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYz0yMjg9c3RhdGljIGludCBmaW5kX2xueDFfcGFydGl0aW9ucyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLFxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yMzktXFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYzoyNDA6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJMTlgxLyU4czpcXFwiLCBuYW1lKTtcXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI0MS1cXHRzZWNwZXJibGsgPSBibG9ja3NpemUgXFx1MDAzZVxcdTAwM2UgOTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMjU2LVxcdFxcdFxcdGlmICghaW5mbykge1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MjU3OlxcdFxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yNTgtXFx0XFx0XFx0XFx0cmV0dXJuIDE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI2OC1cXHRwdXRfcGFydGl0aW9uKHN0YXRlLCAxLCBvZmZzZXQsIHNpemUgLSBvZmZzZXQpO1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MjY5OlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yNzAtXFx0cmV0dXJuIDE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jPTI3Mz1zdGF0aWMgaW50IGZpbmRfY21zMV9wYXJ0aXRpb25zKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI4OC1cXHRpZiAobGFiZWwtXFx1MDAzZWNtcy5kaXNrX29mZnNldCAhPSAwKSB7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYzoyODk6XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJDTVMxLyU4cyhNRFNLKTpcXFwiLCBuYW1lKTtcXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI5MC1cXHRcXHQvKiBkaXNrIGlzIHJlc2VydmVkIG1pbmlkaXNrICovXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTI5My1cXHR9IGVsc2Uge1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6Mjk0OlxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiQ01TMS8lOHM6XFxcIiwgbmFtZSk7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0yOTUtXFx0XFx0LypcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzA5LVxcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIDEsIG9mZnNldCwgc2l6ZS1vZmZzZXQpO1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MzEwOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0zMTEtXFx0cmV0dXJuIDE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2libS5jPTMxOD1pbnQgaWJtX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0zODYtXFx0XFx0aWYgKGluZm8tXFx1MDAzZWZvcm1hdCA9PSBEQVNEX0ZPUk1BVF9MREwpIHtcXG5ibG9jay9wYXJ0aXRpb25zL2libS5jOjM4NzpcXHRcXHRcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIobm9ubClcXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2libS5jLTM4OC1cXHRcXHRcXHRzaXplID0gbnJfc2VjdG9ycztcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmMtMzkwLVxcdFxcdFxcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIDEsIG9mZnNldCwgc2l6ZS1vZmZzZXQpO1xcbmJsb2NrL3BhcnRpdGlvbnMvaWJtLmM6MzkxOlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9pYm0uYy0zOTItXFx0XFx0fVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9rYXJtYS5jPTE1PWludCBrYXJtYV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMva2FybWEuYy01NS1cXHR9XFxuYmxvY2svcGFydGl0aW9ucy9rYXJtYS5jOjU2OlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9rYXJtYS5jLTU3LVxcdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9sZG0uYz01Njg9c3RhdGljIGJvb2wgbGRtX2NyZWF0ZV9kYXRhX3BhcnRpdGlvbnMgKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqcHAsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jLTU4NC1cXG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jOjU4NTpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnBwLVxcdTAwM2VwcF9idWYsIFxcXCIgW0xETV1cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL2xkbS5jLTU4Ni1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbGRtLmMtNTk5LVxcbmJsb2NrL3BhcnRpdGlvbnMvbGRtLmM6NjAwOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2cHAtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9sZG0uYy02MDEtXFx0cmV0dXJuIHRydWU7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21hYy5jPTMzPWludCBtYWNfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21hYy5jLTg4LVxcbmJsb2NrL3BhcnRpdGlvbnMvbWFjLmM6ODk6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFttYWNdXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9tYWMuYy05MC1cXHRmb3IgKHNsb3QgPSAxOyBzbG90IFxcdTAwM2M9IGJsb2Nrc19pbl9tYXA7ICsrc2xvdCkge1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9tYWMuYy0xNTQtXFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy9tYWMuYzoxNTU6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL21hYy5jLTE1Ni1cXHRyZXR1cm4gMTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz0yNTA9c3RhdGljIHZvaWQgcGFyc2Vfc29sYXJpc194ODYoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0yNjUtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzoyNjY6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgJXMlZDogXFx1MDAzY3NvbGFyaXM6XFxcIiwgc3RhdGUtXFx1MDAzZW5hbWUsIG9yaWdpbik7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTI2Ny1cXHRpZiAobGUzMl90b19jcHUodi1cXHUwMDNldl92ZXJzaW9uKSAhPSAxKSB7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjI2ODpcXHRcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZixcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMjY5LVxcdFxcdFxcdCAgICAgICBcXFwiICBjYW5ub3QgaGFuZGxlIHZlcnNpb24gJWQgdnRvY1xcdTAwM2VcXFxcblxcXCIsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMjgwLVxcdFxcdFxcdGNvbnRpbnVlO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzoyODE6XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgW3MlZF1cXFwiLCBpKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMjgyLVxcdFxcdC8qIHNvbGFyaXMgcGFydGl0aW9ucyBhcmUgcmVsYXRpdmUgdG8gY3VycmVudCBNUy1ET1NcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0yODgtXFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjI4OTpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgXFx1MDAzZVxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTI5MC0jZW5kaWZcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz0zNDY9c3RhdGljIHZvaWQgcGFyc2VfYnNkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzYxLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzozNjI6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgJXMlZDogXFx1MDAzYyVzOlxcXCIsIHN0YXRlLVxcdTAwM2VuYW1lLCBvcmlnaW4sIGZsYXZvdXIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zNjMtXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzgyLVxcdFxcdGlmIChvZmZzZXQgXFx1MDAzZSBic2Rfc3RhcnQgfHwgb2Zmc2V0K3NpemUgXFx1MDAzYyBic2Rfc3RhcnQrYnNkX3NpemUpIHtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6MzgzOlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcImJhZCBzdWJwYXJ0aXRpb24gLSBpZ25vcmVkXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzg0LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTM4OS1cXHRpZiAobGUxNl90b19jcHUobC1cXHUwMDNlZF9ucGFydGl0aW9ucykgXFx1MDAzZSBtYXhfcGFydGl0aW9ucylcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6MzkwOlxcdFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIChpZ25vcmVkICVkIG1vcmUpXFxcIixcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzkxLVxcdFxcdFxcdCAgICAgICBsZTE2X3RvX2NwdShsLVxcdTAwM2VkX25wYXJ0aXRpb25zKSAtIG1heF9wYXJ0aXRpb25zKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6MzkyOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtMzkzLX1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz00NzA9c3RhdGljIHZvaWQgcGFyc2VfdW5peHdhcmUoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy00ODUtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo0ODY6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgJXMlZDogXFx1MDAzY3VuaXh3YXJlOlxcXCIsIHN0YXRlLVxcdTAwM2VuYW1lLCBvcmlnaW4pO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy00ODctXFx0cCA9IFxcdTAwMjZsLVxcdTAwM2V2dG9jLnZfc2xpY2VbMV07XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNDk5LVxcdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo1MDA6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFxcdTAwM2VcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy01MDEtI2VuZGlmXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM9NTExPXN0YXRpYyB2b2lkIHBhcnNlX21pbml4KHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTMwLVxcdCAgICBwLVxcdTAwM2VzeXNfaW5kID09IE1JTklYX1BBUlRJVElPTikgeyAvKiBzdWJwYXJ0aXRpb24gdGFibGUgcHJlc2VudCAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo1MzE6XFx0XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgJXMlZDogXFx1MDAzY21pbml4OlxcXCIsIHN0YXRlLVxcdTAwM2VuYW1lLCBvcmlnaW4pO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy01MzItXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1JTklYX05SX1NVQlBBUlRJVElPTlM7IGkrKywgcCsrKSB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTM5LVxcdFxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NTQwOlxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNTQxLVxcdH1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYz01NjA9aW50IG1zZG9zX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU4My0jZWxzZVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYzo1ODQ6XFx0XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiIFtBSVhdXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTU4NS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02MTAtXFx0XFx0XFx0XFx0XFx1MDAyNlxcdTAwMjYgZmF0X3ZhbGlkX21lZGlhKGZiLVxcdTAwM2VtZWRpYSkpIHtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NjExOlxcdFxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTYxMi1cXHRcXHRcXHRcXHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NTktXFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjY2MDpcXHRcXHRcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIgXFx1MDAzY1xcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NjEtXFx0XFx0XFx0cGFyc2VfZXh0ZW5kZWQoc3RhdGUsIHN0YXJ0LCBzaXplLCBkaXNrc2lnKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NjYyOlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIiBcXHUwMDNlXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jLTY2My1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NjktXFx0XFx0aWYgKHAtXFx1MDAzZXN5c19pbmQgPT0gRE02X1BBUlRJVElPTilcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6NjcwOlxcdFxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIltETV1cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmMtNjcxLVxcdFxcdGlmIChwLVxcdTAwM2VzeXNfaW5kID09IEVaRF9QQVJUSVRJT04pXFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjY3MjpcXHRcXHRcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJbRVpEXVxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NzMtXFx0fVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NzQtXFxuYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jOjY3NTpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy02NzYtXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL29mLmM9MzU9c3RhdGljIHZvaWQgYWRkX29mX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLCBpbnQgc2xvdCxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvb2YuYy02NC1cXG5ibG9jay9wYXJ0aXRpb25zL29mLmM6NjU6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCIoJXMpXFxcIiwgaW5mby1cXHUwMDNldm9sbmFtZSk7XFxuYmxvY2svcGFydGl0aW9ucy9vZi5jLTY2LX1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvb2YuYz02OD1pbnQgb2ZfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL29mLmMtMTA2LVxcbmJsb2NrL3BhcnRpdGlvbnMvb2YuYzoxMDc6XFx0c2VxX2J1Zl9wdXRzKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiXFxcXG5cXFwiKTtcXG5ibG9jay9wYXJ0aXRpb25zL29mLmMtMTA4LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9vc2YuYz0xNj1pbnQgb3NmX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9vc2YuYy04My1cXHR9XFxuYmxvY2svcGFydGl0aW9ucy9vc2YuYzo4NDpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvb3NmLmMtODUtXFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL3NnaS5jPTM2PWludCBzZ2lfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL3NnaS5jLTgxLVxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL3NnaS5jOjgyOlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9zZ2kuYy04My1cXHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvc3VuLmM9MjE9aW50IHN1bl9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvc3VuLmMtMTIzLVxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL3N1bi5jOjEyNDpcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvc3VuLmMtMTI1LVxcdHB1dF9kZXZfc2VjdG9yKHNlY3QpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYz00OT1pbnQgc3lzdjY4X3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYy03NS1cXHRzbGljZXMgLT0gMTsgLyogbGFzdCBzbGljZSBpcyB0aGUgd2hvbGUgZGlzayAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvc3lzdjY4LmM6NzY6XFx0c2VxX2J1Zl9wcmludGYoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJzeXNWNjg6ICVzKHMldSlcXFwiLCBzdGF0ZS1cXHUwMDNlbmFtZSwgc2xpY2VzKTtcXG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jLTc3LVxcdHNsaWNlID0gKHN0cnVjdCBzbGljZSAqKWRhdGE7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jLTg0LVxcdFxcdFxcdFxcdGJlMzJfdG9fY3B1KHNsaWNlLVxcdTAwM2VuYmxvY2tzKSk7XFxuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYzo4NTpcXHRcXHRcXHRzZXFfYnVmX3ByaW50ZihcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIihzJXUpXFxcIiwgaSk7XFxuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYy04Ni1cXHRcXHR9XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jLTg4LVxcdH1cXG5ibG9jay9wYXJ0aXRpb25zL3N5c3Y2OC5jOjg5OlxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuYmxvY2svcGFydGl0aW9ucy9zeXN2NjguYy05MC1cXHRwdXRfZGV2X3NlY3RvcihzZWN0KTtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvdWx0cml4LmM9MTI9aW50IHVsdHJpeF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvdWx0cml4LmMtNDEtXFx0XFx0cHV0X2Rldl9zZWN0b3Ioc2VjdCk7XFxuYmxvY2svcGFydGl0aW9ucy91bHRyaXguYzo0MjpcXHRcXHRzZXFfYnVmX3B1dHMoXFx1MDAyNnN0YXRlLVxcdTAwM2VwcF9idWYsIFxcXCJcXFxcblxcXCIpO1xcbmJsb2NrL3BhcnRpdGlvbnMvdWx0cml4LmMtNDMtXFx0XFx0cmV0dXJuIDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjM4Ljc3Mjk3MTg2OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjQ3MjUxNzYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIGEgTG9nZ2luZy1SZWxhdGVkIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSd2ZSBnb3QgYSBwYXRjaCB0aGF0IGFkZHJlc3NlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwcmludGluZyBwYXJ0aXRpb24gbmFtZXMgdG8gZG1lc2cgdmlhIGBwcmludGtgIHdpdGhpbiBgY2hlY2tfcGFydGl0aW9uYC4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBmaXggd29ydGggZnV6emluZz8gU3l6a2FsbGVyIGFscmVhZHkgZm91bmQgdGhlIG9yaWdpbmFsIGJ1ZyAoY29uZmlybWVkIGJ5IHRoZSBjb21taXQgYXV0aG9yIGJlaW5nIGBzeXotY2x1c3RlcmApLCBzbyB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgKmZpeCogbmVlZHMgZnV6emluZy5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoYXQgdGhlIGZpeCBzZWVtcyB0byBib2lsIGRvd24gdG8gc3RyaW5nIGZvcm1hdHRpbmcgY2hhbmdlcy4gVGhpcyB0cmlnZ2VycyB0aGUgcHJvbXB0J3MgY3JpdGVyaWE6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlwiIEl0IGFwcGVhcnMgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgc2VxX2J1Zl9wcmludGZgIGFuZCBgcHJfd2FybmAgY2FsbHMsIGJvdGggb2Ygd2hpY2ggYXJlIHVzZWQgZm9yIGxvZ2dpbmcuIFNwZWNpZmljYWxseSwgYHNlcV9idWZfcHJpbnRmYCBjb25zdHJ1Y3RzIHRoZSBzdHJpbmcgdGhhdCBgcHJpbnRrYCB0aGVuIHVzZXMgdG8gd3JpdGUgdG8gZG1lc2cuXG5cblRoZSBjb3JlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgc3RyaW5nIGZvcm1hdHRpbmcgY2hhbmdlIGNvbnN0aXR1dGUgYSAqZnVuY3Rpb25hbCogYWx0ZXJhdGlvbj8gSXQgKnByZXZlbnRzKiBhbiBPT0IgcmVhZCwgd2hpY2ggY291bGQsIHRoZW9yZXRpY2FsbHksIGNhdXNlIGEga2VybmVsIGNyYXNoIG9yIGluZm9ybWF0aW9uIGxlYWsgaW50byBkbWVzZy4gSG93ZXZlciwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IGxvZ2dpbmcuIFRoZSBwcm9tcHQgc2VlbXMgdG8gY2xhc3NpZnkgYHNlcV9idWZfcHJpbnRmYCAod2hpY2ggYnVpbGRzIHRoZSBwcmludCBzdHJpbmcpIGFzIHBhcnQgb2YgbG9nZ2luZy4gVGhlIGNoYW5nZSBpdHNlbGYgcHJldmVudHMgcmVhZGluZyBwYXN0IHRoZSBlbmQgb2YgYSBub24tbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgd2hpY2ggaXMgcHVyZWx5IGFib3V0IHRoZSBmb3JtYXR0aW5nIGFuZCBzYWZldHkgb2YgdGhlIGxvZ2dpbmcgb3V0cHV0LlxuXG5Mb29raW5nIGF0IHRoZSBwYXRjaCBpdHNlbGYgY29uZmlybXMgdGhpcy4gSXQgY2hhbmdlcyBgc2VxX2J1Zl9wcmludGZgIGZyb20gYFwiJXNcImAgdG8gYFwiJS4qc1wiYCBhbmQgYWRkcyBhIGxlbmd0aCBhcmd1bWVudC4gU2ltaWxhcmx5LCBgcHJfd2FybmAgaXMgY2hhbmdlZCBmcm9tIHVzaW5nIGBzbnByaW50ZmAgdG8gYFwiJS4qc1wiYCB3aXRoIGFuIGV4cGxpY2l0IGxlbmd0aC4gSXQncyBzdHJpY3RseSBhYm91dCBwcmV2ZW50aW5nIHJlYWRzIGJleW9uZCB0aGUgYm91bmRzIG9mIHRoZSBwYXJ0aXRpb24gbmFtZSBzdHJpbmcuIEl0J3MgZGlyZWN0bHkgYWRkcmVzc2luZyB0aGUgbG9nZ2luZyBiZWhhdmlvciBpdHNlbGYuXG5cblRoZSBrZXkgaXMgdGhhdCBgc3RhdGUtXHUwMDNlcHBfYnVmYCAod2hpY2ggaXMgbW9kaWZpZWQgYnkgYHNlcV9idWZfcHJpbnRmYCkgaXMgKm9ubHkqIHVzZWQgZm9yIGBwcmludGtgLiBUaGUgcmVsZXZhbnQgY29kZSBzZWdtZW50IGNvbmZpcm1zIHRoaXMuIEl0IGlzIGZyZWVkIGRpcmVjdGx5IGFmdGVyIGJlaW5nIHByaW50ZWQuXG5cbldoaWxlIGZpeGluZyBhIHBvdGVudGlhbCBjcmFzaCBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIHN0YWJpbGl0eSwgdGhlIHByb21wdCBlbXBoYXNpemVzIHRoZSAqbmF0dXJlKiBvZiB0aGUgY2hhbmdlcy4gVGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBjaGFuZ2VzIHRvIGBzZXFfYnVmX3ByaW50ZmAgYW5kIGBwcl93YXJuYCwgdGhlcmVmb3JlIHRoZSBjaGFuZ2UgaXMgbG9nZ2luZyBjaGFuZ2VzLiBUaGlzIGFwcGVhcnMgdG8gZmFsbCBzcXVhcmVseSB1bmRlciBcIlB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlwiIEV2ZW4gaWYgdGhlIGxvZ2dpbmcgbm93IHByZXZlbnRzIGNyYXNoZXMsIHRoZSBjaGFuZ2UgaXMgaW4gdGhlIGxvZ2dpbmcgc3RhdGVtZW50IGl0c2VsZiwgYW5kIGRvZXMgbm90IGFsdGVyIHRoZSBwYXJ0aXRpb24gcGFyc2VyIGxvZ2ljLlxuXG5UaGVyZWZvcmUsIGRlc3BpdGUgdGhlIHBvdGVudGlhbCBjcmFzaCBhdm9pZGFuY2UsIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgYmVjYXVzZSB0aGUgcGF0Y2ggaXMgbGltaXRlZCB0byBtb2RpZnlpbmcgbG9nZ2luZyBzdGF0ZW1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjAzNywiT3V0cHV0VG9rZW5zIjo3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NTA6NTEuMjQ1NDkxOTU1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBsb2dnaW5nIHN0YXRlbWVudHMgKHNlcV9idWZfcHJpbnRmIGFuZCBwcl93YXJuKSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwcmludGluZyBwYXJ0aXRpb24gbmFtZXMuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIHBhcnRpdGlvbiBwYXJzZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGxvZ2dpbmcgc3RhdGVtZW50cyAoc2VxX2J1Zl9wcmludGYgYW5kIHByX3dhcm4pIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByaW50aW5nIHBhcnRpdGlvbiBuYW1lcy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcGFydGl0aW9uIHBhcnNlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdrlrr[1] Phase: Running StartedAt: 2026-07-12 00:52:03 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdrlrr[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-12 00:52:03 +0000 UTC FinishedAt: 2026-07-12 00:52:43 +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,}