Name: series-workflowknr7p Phase: Failed StartedAt: 2026-08-22 16:49:08 +0000 UTC FinishedAt: 2026-08-22 17:22:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowknr7p[0] Phase: Succeeded StartedAt: 2026-08-22 16:49:08 +0000 UTC FinishedAt: 2026-08-22 17:22:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowknr7p[0].run-triage Phase: Succeeded StartedAt: 2026-08-22 16:49:08 +0000 UTC FinishedAt: 2026-08-22 17:22:10 +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+CgkJCTx0ZD4yMDI2LzA4LzIyIDE3OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmb3IgZGF0YSByYWNlcywgd2hpY2ggZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJjNTM2NDk3M2ViNGE5ODU1ZjQwZDlmZDVmOTQxYTY5ZWFiYjExNTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAyMiAxNzoxODoyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jXG5pbmRleCBiNDE0Mjc0Njc3N2VlLi5iZWM2ZmVhMGZkYjQ3IDEwMDY0NFxuLS0tIGEvbW0va3NtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2tzbS5jXG5AQCAtMTExNiw3ICYjNDM7MTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdFx0XHRcdFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxuIHtcbiBcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgUGFnZUFub25FeGNsdXNpdmUoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSksIGZvbGlvKTtcbi1cdGZvbGlvLVx1MDAzZW1hcHBpbmcgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKTtcbiYjNDM7XHRXUklURV9PTkNFKGZvbGlvLVx1MDAzZW1hcHBpbmcsXG4mIzQzO1x0XHQgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7XG4gfVxuIFxuICNpZmRlZiBDT05GSUdfU1lTRlNcbkBAIC0zMzE4LDcgJiM0MzszMzE5LDcgQEAgdm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0c3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7XG4gXHRpZiAoc3RhYmxlX25vZGUpIHtcbiBcdFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gIT0gZm9saW9fcGZuKGZvbGlvKSwgZm9saW8pO1xuLVx0XHRzdGFibGVfbm9kZS1cdTAwM2VrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtXHUwMDNla3BmbiwgZm9saW9fcGZuKG5ld2ZvbGlvKSk7XG4gXHRcdC8qXG4gXHRcdCAqIG5ld2ZvbGlvLVx1MDAzZW1hcHBpbmcgd2FzIHNldCBpbiBhZHZhbmNlOyBub3cgd2UgbmVlZCBzbXBfd21iKClcbiBcdFx0ICogdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5ldyBzdGFibGVfbm9kZS1cdTAwM2VrcGZuIGlzIHZpc2libGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmb3IgZGF0YSByYWNlcywgd2hpY2ggZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJjNTM2NDk3M2ViNGE5ODU1ZjQwZDlmZDVmOTQxYTY5ZWFiYjExNTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyMiAxNzoxODoyOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2tzbS5jIGIvbW0va3NtLmMKaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDQKLS0tIGEvbW0va3NtLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0va3NtLmMKQEAgLTExMTYsNyAmIzQzOzExMTYsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fc2V0X3N0YWJsZV9ub2RlKHN0cnVjdCBmb2xpbyAqZm9saW8sCiAJCQkJCSBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSkKIHsKIAlWTV9XQVJOX09OX0ZPTElPKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgJmFtcDsmYW1wOyBQYWdlQW5vbkV4Y2x1c2l2ZSgmYW1wO2ZvbGlvLSZndDtwYWdlKSwgZm9saW8pOwotCWZvbGlvLSZndDttYXBwaW5nID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSk7CiYjNDM7CVdSSVRFX09OQ0UoZm9saW8tJmd0O21hcHBpbmcsCiYjNDM7CQkgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7CiB9CiAKICNpZmRlZiBDT05GSUdfU1lTRlMKQEAgLTMzMTgsNyAmIzQzOzMzMTksNyBAQCB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJc3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7CiAJaWYgKHN0YWJsZV9ub2RlKSB7CiAJCVZNX0JVR19PTl9GT0xJTyhzdGFibGVfbm9kZS0mZ3Q7a3BmbiAhPSBmb2xpb19wZm4oZm9saW8pLCBmb2xpbyk7Ci0JCXN0YWJsZV9ub2RlLSZndDtrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTsKJiM0MzsJCVdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtJmd0O2twZm4sIGZvbGlvX3BmbihuZXdmb2xpbykpOwogCQkvKgogCQkgKiBuZXdmb2xpby0mZ3Q7bWFwcGluZyB3YXMgc2V0IGluIGFkdmFuY2U7IG5vdyB3ZSBuZWVkIHNtcF93bWIoKQogCQkgKiB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmV3IHN0YWJsZV9ub2RlLSZndDtrcGZuIGlzIHZpc2libGUKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMTc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3OQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDY2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLU00gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbW0va3NtLmNgLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIGBmb2xpb19zZXRfc3RhYmxlX25vZGVgIGFuZCBgZm9saW9fbWlncmF0ZV9rc21gLiBJJiMzOTttIHNlZWluZyBjaGFuZ2VzIGxpa2UgYGZvbGlvLSZndDttYXBwaW5nID0gLi4uYCBiZWNvbWluZyBgV1JJVEVfT05DRShmb2xpby0mZ3Q7bWFwcGluZywgLi4uKWAgYW5kIGBzdGFibGVfbm9kZS0mZ3Q7a3BmbiA9IGZvbGlvX3BmbihuZXdmb2xpbylgIGJlY29taW5nIGBXUklURV9PTkNFKHN0YWJsZV9ub2RlLSZndDtrcGZuLCBmb2xpb19wZm4obmV3Zm9saW8pKWAuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGlzIGlzIGp1c3QgYSBgV1JJVEVfT05DRWAgd3JhcHBlci4gVGhleSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gc3RvcmUgdGVhcmluZyBvciByZW9yZGVyaW5nLiBBbmQgdGhlIGNvbW1lbnQgY29uZmlybXMgaXQsIGJhc2ljYWxseSBhIG1lbW9yeSBtb2RlbC9jb25jdXJyZW5jeSBmaXguIE5vIG5ldyBmZWF0dXJlcywgbm8gbG9naWMgY2hhbmdlcy4KClRoZSBxdWVzdGlvbiBub3cgaXMsIGRvZXMgdGhpcyB3YXJyYW50IGZ1enppbmc/IFR5cGljYWxseSwgYWRkaW5nIGBSRUFEX09OQ0VgL2BXUklURV9PTkNFYCBpcyBhIGRhdGEgcmFjZSBmaXgsIHNvIGl0IHBvaW50cyB0byBzb21lIHNvcnQgb2YgYnVnLCBidXQgdGhlIGNvcmUgbG9naWMgcmVtYWlucyB0aGUgc2FtZS4gTGV0JiMzOTtzIHNlZSwgYXJlIHRoZXJlIGFueSBvdGhlciBtb2RpZmljYXRpb25zPyBOb3BlLiBKdXN0IHRoZXNlIGBXUklURV9PTkNFYCBhZGRpdGlvbnMuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgaW5zdHJ1Y3Rpb25zIG9uIGRldGVybWluaW5nIHdoZXRoZXIgc29tZXRoaW5nIGlzIHdvcnRoIGZ1enppbmcuIEkgaGF2ZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgdGhpbmdzIGxpa2UgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24gZmxvdywgdW5yZWFjaGFibGUgY29kZSwgb3Igc3BlY2lmaWMgZHJpdmVyLXJlbGF0ZWQgdGVhcmRvd24uCgpBZGRpbmcgYFdSSVRFX09OQ0VgIGRvZXNuJiMzOTt0ICpzdHJpY3RseSogZmFsbCBpbnRvICYjMzQ7ZGVjb3JhdGl2ZSYjMzQ7IG9yICYjMzQ7bnVtZXJpYyBjb25zdGFudHMmIzM0OywgYnV0IGl0JiMzOTtzIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBzZW5zZSBvZiBhZGRpbmcgYSBuZXcgZmVhdHVyZSBvciBhbHRlcmluZyB0aGUgY29yZSBhbGdvcml0aG0uIEl0IGp1c3QgZW5mb3JjZXMgYSBzaW5nbGUgc3RvcmUgaW5zdHJ1Y3Rpb24sIHdoaWNoIGlzIGtpbmQgb2Ygc2ltaWxhciB0byB0aGUgaW50ZW50aW9uIGJlaGluZCBudW1lcmljIGNvbnN0YW50cy4KCldhaXQsIEtDU0FOIG1pZ2h0IGFjdHVhbGx5IGJlIGFibGUgdG8gY2F0Y2ggZGF0YSByYWNlcyB3aXRob3V0IHRoZSBgV1JJVEVfT05DRWAgYW5kIGFkZGluZyB0aGVtIG1ha2VzIGl0IGltcG9zc2libGUuIFRoYXQmIzM5O3MgYSBwb2ludC4KCkJ1dCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgaXMgaXQgKndvcnRoKiBmb2N1c2luZyBmdXp6aW5nIG9uIHRoaXMgc3BlY2lmaWMgcGF0Y2g/IEl0JiMzOTtzIHJlbGF0ZWQgdG8gdGhlIGNvbmN1cnJlbmN5IGFzcGVjdHMsIGJ1dCBkb2VzIGl0IGp1c3RpZnkgdGhlIGZ1enppbmcgZWZmb3J0PwoKT2theSwgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBpbnZvbHZlZDogYGZvbGlvX3NldF9zdGFibGVfbm9kZWAgYW5kIGBmb2xpb19taWdyYXRlX2tzbWAuIEJvdGggb2YgdGhlc2UgYXJlIHBhcnQgb2YgS1NNIOKAkyBLZXJuZWwgU2FtZXBhZ2UgTWVyZ2luZy4gSSBoYXZlIHR3byBjaG9pY2VzOiBJIGNhbiBpbnRlcnByZXQgdGhpcyBhcyBhIGNoYW5nZSB3aXRoaW4gdGhlIEtTTSBjb250ZXh0IGFuZCBmb2N1cyBmdXp6aW5nIG9uIGBmb2xpb19taWdyYXRlX2tzbWAgYW5kIHRoZSBLU00gc3Vic3lzdGVtIGluIGdlbmVyYWwsIHJldHVybmluZyBgV29ydGhGdXp6aW5nPXRydWVgLiBPciwgSSBjYW4gZm9jdXMgb24gdGhlIGZhY3QgdGhhdCB0aGlzIGlzICpqdXN0KiBhIGBXUklURV9PTkNFYCBhZGRpdGlvbiBhbmQgc2F5LCBubywgbm90IHdvcnRoIGZvY3VzaW5nIG9uLCByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpIb3dldmVyLCB0aGUgbW9yZSBJIHRoaW5rIGFib3V0IGl0LCB0aGUgbW9yZSBJIHJlYWxpemUgdGhhdCAqYWRkaW5nKiBgV1JJVEVfT05DRWAgaXMgaXRzZWxmIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgY29uY3VycmVuY3kgYmVoYXZpb3IgY2hhbmdlLiBTbywgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAgaXMgdGhlIHJpZ2h0IGFuc3dlci4gV2UmIzM5O2xsIGNvbmNlbnRyYXRlIG9uIHRoZSBjb25jdXJyZW5jeS1yZWxhdGVkIGFzcGVjdHMgb2YgS1NNIGFuZCBgZm9saW9fbWlncmF0ZV9rc21gLiBOb3csIGxldCYjMzk7cyBsb29rIGF0IGBmb2xpb19taWdyYXRlX2tzbWAgc3BlY2lmaWNhbGx5LCBhbmQgc2VhcmNoIGZvciBpdCB3aXRoaW4gYG1tL2tzbS5jYCB0byBzZWUgaG93IGl0JiMzOTtzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMTc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm9saW9fbWlncmF0ZV9rc20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9rc20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9rc20uYz05Njc9c3RhdGljIHN0cnVjdCBmb2xpbyAqa3NtX2dldF9mb2xpbyhzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSxcbi0tXG5tbS9rc20uYy0xMDMyLVx0ICogc3VnZ2VzdHMgdGhhdCB0aGUgbm9kZSBpcyBzdGFsZTsgYnV0IGl0IG1pZ2h0IGJlIHVuZGVyIG1pZ3JhdGlvbi5cbm1tL2tzbS5jOjEwMzM6XHQgKiBXZSBuZWVkIHNtcF9ybWIoKSwgbWF0Y2hpbmcgdGhlIHNtcF93bWIoKSBpbiBmb2xpb19taWdyYXRlX2tzbSgpLFxubW0va3NtLmMtMTAzNC1cdCAqIGJlZm9yZSBjaGVja2luZyB3aGV0aGVyIG5vZGUtXHUwMDNla3BmbiBoYXMgYmVlbiBjaGFuZ2VkLlxuLS1cbm1tL2tzbS5jPTMyNzE9dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5tbS9rc20uYy0zMzEwLSNpZmRlZiBDT05GSUdfTUlHUkFUSU9OXG5tbS9rc20uYzozMzExOnZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL2tzbS5jLTMzMTIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDE3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyBgZm9saW9fc2V0X3N0YWJsZV9ub2RlYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCBgZm9saW9fc2V0X3N0YWJsZV9ub2RlYC4gVGhhdCBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gb3IgbWVjaGFuaXNtIHdpdGhpbiBhIGZvbGlvIHN5c3RlbSwgcHJvYmFibHkgcmVsYXRlZCB0byBzb21lIGFzcGVjdCBvZiBtYWludGFpbmluZyBhIGNvbnNpc3RlbnQgYW5kIHN0YWJsZSByZXByZXNlbnRhdGlvbiBvZiBkYXRhLCBsaWtlbHkgYSBub2RlIHdpdGhpbiBhIGdyYXBoIG9yIHRyZWUgc3RydWN0dXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnk6CgoqICAgKipUaGUgY29udGV4dDoqKiBXaGF0IGlzIGNhbGxpbmcgaXQ/IElzIGl0IGludm9rZWQgZHVyaW5nIGRhdGEgaW5nZXN0aW9uLCB2YWxpZGF0aW9uLCBvciBwcm9wYWdhdGlvbj8gS25vd2luZyB0aGUgY2FsbGVyIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBpbnRlbmRlZCB1c2UuCiogICAqKlRoZSBpbnB1dHM6KiogV2hhdCBhcmd1bWVudHMgZG9lcyBpdCB0YWtlPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIG5vZGUgaWRlbnRpZmllciwgc29tZSBzb3J0IG9mIHZlcnNpb25pbmcgaW5mb3JtYXRpb24sIHRpbWVzdGFtcHMsIGRhdGEgcGF5bG9hZHMsIG9yIHBlcmhhcHMgY29udGV4dCBtZXRhZGF0YT8gVW5kZXJzdGFuZGluZyB0aGUgaW5wdXRzIGRlZmluZXMgaXRzIG9wZXJhdGluZyBzY29wZS4KKiAgICoqVGhlIGNvcmUgbG9naWM6KiogV2hhdCBkb2VzIGl0ICpkbyo/IERvZXMgaXQgdXBkYXRlIGluLXBsYWNlLCBjcmVhdGUgYSBuZXcgbm9kZSwgb3Igc2ltcGx5IGNoZWNrIHRoZSBjdXJyZW50IHN0YXRlIGFnYWluc3Qgc29tZSBjcml0ZXJpYT8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBmb3JtIG9mIHN0YXRlIGNvbXBhcmlzb24sIHVwZGF0ZSwgb3IgdmFsaWRhdGlvbiB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgb3IgaW1tdXRhYmlsaXR5LgoqICAgKipUaGUgb3V0cHV0cy9zaWRlIGVmZmVjdHM6KiogV2hhdCBkb2VzIGl0IHJldHVybj8gQW55IHJldHVybiBjb2RlcywgYm9vbGVhbiBmbGFncywgb3IgcG9pbnRlcnMgdG8gYSBuZXcgc3RydWN0dXJlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbGx5IHByb2JsZW1hdGljIHNpZGUgZWZmZWN0cyB0aGF0IGNvdWxkIGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgZGF0YSBpbmNvbnNpc3RlbmNpZXM/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgaGlkZGVuIGdvdGNoYXMuCiogICAqKkVkZ2UgQ2FzZXM6KiogSGF2ZSB0aGVyZSBiZWVuIGFueSByZXBvcnRlZCBzdGFiaWxpdHkgaXNzdWVzPyBJcyB0aGVyZSBhIHRlc3Qgc3VpdGUgZm9yIHRoaXMgY29tcG9uZW50IHRoYXQgSSBjYW4gY2hlY2s/CgpCYXNpY2FsbHksIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgdG8ga2VlcCB0aGUgZGF0YSBpbnRlZ3JpdHkgc3RhYmxlLCBhbmQgaG93IHdlbGwgaXQgaXMgZG9pbmcgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb2xpb19zZXRfc3RhYmxlX25vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9rc20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9rc20uYz0xMTEwPXN0cnVjdCBrc21fc3RhYmxlX25vZGUgKmZvbGlvX3N0YWJsZV9ub2RlKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0va3NtLmMtMTExNC1cbm1tL2tzbS5jOjExMTU6c3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3NldF9zdGFibGVfbm9kZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxubW0va3NtLmMtMTExNi1cdFx0XHRcdFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxuLS1cbm1tL2tzbS5jPTExMjc9c3RhdGljIGludCByZW1vdmVfc3RhYmxlX25vZGUoc3RydWN0IGtzbV9zdGFibGVfbm9kZSAqc3RhYmxlX25vZGUpXG4tLVxubW0va3NtLmMtMTE1NC1cdFx0ICovXG5tbS9rc20uYzoxMTU1Olx0XHRmb2xpb19zZXRfc3RhYmxlX25vZGUoZm9saW8sIE5VTEwpO1xubW0va3NtLmMtMTE1Ni1cdFx0cmVtb3ZlX25vZGVfZnJvbV9zdGFibGVfdHJlZShzdGFibGVfbm9kZSk7XG4tLVxubW0va3NtLmM9MTQ5OD1zdGF0aWMgaW50IHRyeV90b19tZXJnZV9vbmVfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9rc20uYy0xNTM4LVx0XHRcdCAqL1xubW0va3NtLmM6MTUzOTpcdFx0XHRmb2xpb19zZXRfc3RhYmxlX25vZGUoZm9saW8sIE5VTEwpO1xubW0va3NtLmMtMTU0MC1cdFx0XHRmb2xpb19tYXJrX2FjY2Vzc2VkKGZvbGlvKTtcbi0tXG5tbS9rc20uYz0yMDY5PXN0YXRpYyBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfdHJlZV9pbnNlcnQoc3RydWN0IGZvbGlvICprZm9saW8pXG4tLVxubW0va3NtLmMtMjE0My1cbm1tL2tzbS5jOjIxNDQ6XHRmb2xpb19zZXRfc3RhYmxlX25vZGUoa2ZvbGlvLCBzdGFibGVfbm9kZV9kdXApO1xubW0va3NtLmMtMjE0NS1cbi0tXG5tbS9rc20uYz0zMzExPXZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9rc20uYy0zMzI5LVx0XHRzbXBfd21iKCk7XG5tbS9rc20uYzozMzMwOlx0XHRmb2xpb19zZXRfc3RhYmxlX25vZGUoZm9saW8sIE5VTEwpO1xubW0va3NtLmMtMzMzMS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzM2CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emluZyBJbXBhY3Qgb2YgYSBDb25jdXJyZW5jeSBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCAqb25seSogYWRkcyBgV1JJVEVfT05DRWAgdG8gYSBjb3VwbGUgb2YgYXNzaWdubWVudHMuIEl0JiMzOTtzIGEgY29uY3VycmVuY3kgZml4LCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGEgZGF0YSByYWNlLCBidXQgYXQgZmlyc3QgZ2xhbmNlLCBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGludHJvZHVjZSBhbnkgbmV3IGV4ZWN1dGlvbiBwYXRocyB0aGF0ICpyZXF1aXJlKiBmdXp6aW5nIGNvdmVyYWdlLiBJdOKAmXMganVzdCBhIGJ1ZyBmaXguIFdhaXQsIGhvbGQgb24g4oCTIGRvZXMgaXQgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93IGF0IGFsbD8KCkxldCBtZSByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4uLiBva2F5LCB0aGV5IHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIGNvbnN0YW50cy9tYWNyb3MgdGhhdCAqZG9uJiMzOTt0KiBjaGFuZ2UgZXhlY3V0aW9uLCB1bnJlYWNoYWJsZSBjb2RlLCBvciB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgc3BlY2lhbCBoYXJkd2FyZS4gQWRkaW5nIGBXUklURV9PTkNFYCBpc24mIzM5O3QgKmV4cGxpY2l0bHkqIGxpc3RlZCwgYnV0IGl0IHNlZW1zIHRvIGZhbGwgdW5kZXIgdGhlICYjMzQ7bWFjcm9zIHRoYXQgZG9uJiMzOTt0IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdyYjMzQ7IGNhdGVnb3J5LiBJdCYjMzk7cyBlc3NlbnRpYWxseSBlbmZvcmNpbmcgYSB2b2xhdGlsZSBzdG9yZS4KCkJ1dC4uLiB0aGlzICppcyogYSBkYXRhIHJhY2UgZml4LiBBIHJhY2UgY29uZGl0aW9uIGNvdWxkIGJlIHN1YnRsZTsgZnV6emluZyBtaWdodCBiZSB2YWx1YWJsZSB0byBlaXRoZXIgZW5zdXJlIHRoZSBmaXggaXMgZWZmZWN0aXZlLCBvciBwb3NzaWJseSB0byB0cmlnZ2VyIHRoZSByYWNlLiBIb3dldmVyLCBmdXp6aW5nIHdvdWxkbiYjMzk7dCBiZSBhYmxlIHRvIHRhcmdldCB0aGUgV1JJVEVfT05DRSBkaXJlY3RseS4gU28sIHdoYXQgdG8gZG8/CgpMZXQmIzM5O3MgbG9vayBhdCB3aGF0IHRoZSBmaXggaXMgYWN0dWFsbHkgYmVpbmcgYXBwbGllZCB0by4gSXQmIzM5O3MgaW4gYGZvbGlvX21pZ3JhdGVfa3NtYC4gVGhhdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHBhZ2UgbWlncmF0aW9uLiBJZiBJICpkbyogbWFyayB0aGlzIGFzIHdvcnRoIGZ1enppbmcsIEkmIzM5O2Qgd2FudCB0byBmb2N1cyBvbiBgZm9saW9fbWlncmF0ZV9rc21gLiBBbmQgaGV5LCBwYWdlIG1pZ3JhdGlvbiBhbmQgS1NNIGFyZSBjb3JlLCBmdW5kYW1lbnRhbCBrZXJuZWwgZmVhdHVyZXMuIFNvIHllYWgsIEkmIzM5O2QgYXJndWUgaXQmIzM5O3Mgd29ydGggZnV6emluZyEgTm93IGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSwgbGV0JiMzOTtzIGxvb2sgYXQgYGZvbGlvX21pZ3JhdGVfa3NtYCBjYWxsZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDE3OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZvbGlvX21pZ3JhdGVfa3NtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgva3NtLmg9OTc9dm9pZCBybWFwX3dhbGtfa3NtKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBybWFwX3dhbGtfY29udHJvbCAqcndjKTtcbmluY2x1ZGUvbGludXgva3NtLmg6OTg6dm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbmluY2x1ZGUvbGludXgva3NtLmgtOTktdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5pbmNsdWRlL2xpbnV4L2tzbS5oPTE1Mz1zdGF0aWMgaW5saW5lIHZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLS1cbmluY2x1ZGUvbGludXgva3NtLmgtMTU3LVxuaW5jbHVkZS9saW51eC9rc20uaDoxNTg6c3RhdGljIGlubGluZSB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqb2xkKVxuaW5jbHVkZS9saW51eC9rc20uaC0xNTkte1xuLS1cbm1tL2tzbS5jPTk2Nz1zdGF0aWMgc3RydWN0IGZvbGlvICprc21fZ2V0X2ZvbGlvKHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlLFxuLS1cbm1tL2tzbS5jLTEwMzItXHQgKiBzdWdnZXN0cyB0aGF0IHRoZSBub2RlIGlzIHN0YWxlOyBidXQgaXQgbWlnaHQgYmUgdW5kZXIgbWlncmF0aW9uLlxubW0va3NtLmM6MTAzMzpcdCAqIFdlIG5lZWQgc21wX3JtYigpLCBtYXRjaGluZyB0aGUgc21wX3dtYigpIGluIGZvbGlvX21pZ3JhdGVfa3NtKCksXG5tbS9rc20uYy0xMDM0LVx0ICogYmVmb3JlIGNoZWNraW5nIHdoZXRoZXIgbm9kZS1cdTAwM2VrcGZuIGhhcyBiZWVuIGNoYW5nZWQuXG4tLVxubW0va3NtLmM9MzI3MT12b2lkIGNvbGxlY3RfcHJvY3Nfa3NtKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8sIGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbm1tL2tzbS5jLTMzMTAtI2lmZGVmIENPTkZJR19NSUdSQVRJT05cbm1tL2tzbS5jOjMzMTE6dm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0va3NtLmMtMzMxMi17XG4tLVxubW0vbWlncmF0ZS5jPTc3NT12b2lkIGZvbGlvX21pZ3JhdGVfZmxhZ3Moc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9taWdyYXRlLmMtODI5LVxubW0vbWlncmF0ZS5jOjgzMDpcdGZvbGlvX21pZ3JhdGVfa3NtKG5ld2ZvbGlvLCBmb2xpbyk7XG5tbS9taWdyYXRlLmMtODMxLVx0LypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTI1CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgZm9saW9fbWlncmF0ZV9mbGFnc2AqKgoKQWxyaWdodCwgc28gdGhlIG1pZ3JhdGlvbiBjb2RlIGNhbGxzIGBmb2xpb19taWdyYXRlX2ZsYWdzYCBmcm9tIHdpdGhpbiBgbW0vbWlncmF0ZS5jYC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgdG8gbXkgbWluZCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aG9zZSBjYWxscy4gS25vd2luZyB0aGUgY2FsbGVyIGZ1bmN0aW9uIGlzIGdvb2QsIGJ1dCBJIG5lZWQgdG8gc2VlICp3aG8qIGlzIGNhbGxpbmcgKnRoYXQqIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBmb2xpb19taWdyYXRlX2ZsYWdzYCBhbmQgY2hlY2sgaXRzIGNhbGwgc2l0ZXMgdG8gZnVsbHkgZ3Jhc3AgaXRzIHJvbGUgaW4gdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdXBzdHJlYW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDE3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZvbGlvX21pZ3JhdGVfZmxhZ3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYWlvLmM9NDYwPXN0YXRpYyBpbnQgYWlvX21pZ3JhdGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZHN0LFxuLS1cbmZzL2Fpby5jLTUxMi1cdGZvbGlvX2NvcHkoZHN0LCBzcmMpO1xuZnMvYWlvLmM6NTEzOlx0Zm9saW9fbWlncmF0ZV9mbGFncyhkc3QsIHNyYyk7XG5mcy9haW8uYy01MTQtXHRCVUdfT04oY3R4LVx1MDAzZXJpbmdfZm9saW9zW2lkeF0gIT0gc3JjKTtcbi0tXG5mcy9odWdldGxiZnMvaW5vZGUuYz0xMDI0PXN0YXRpYyBpbnQgaHVnZXRsYmZzX21pZ3JhdGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvaHVnZXRsYmZzL2lub2RlLmMtMTAzOS1cbmZzL2h1Z2V0bGJmcy9pbm9kZS5jOjEwNDA6XHRmb2xpb19taWdyYXRlX2ZsYWdzKGRzdCwgc3JjKTtcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTEwNDEtXG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9Njk9dm9pZCBzb2Z0bGVhZl9lbnRyeV93YWl0X29uX2xvY2tlZChzb2Z0bGVhZl90IGVudHJ5LCBzcGlubG9ja190ICpwdGwpXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC03MC1cdFx0X19yZWxlYXNlcyhwdGwpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6NzE6dm9pZCBmb2xpb19taWdyYXRlX2ZsYWdzKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtNzItaW50IGZvbGlvX21pZ3JhdGVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbi0tXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oPTI4NT1zdGF0aWMgaW5saW5lIGJvb2wgbHJ1X2dlbl9kZWxfZm9saW8oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBib29sIHJlY2xhaW1pbmcpXG4tLVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC0yOTUtXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oOjI5NjpcdC8qIGZvciBmb2xpb19taWdyYXRlX2ZsYWdzKCkgKi9cbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmgtMjk3LVx0ZmxhZ3MgPSAhcmVjbGFpbWluZyBcdTAwMjZcdTAwMjYgbHJ1X2dlbl9pc19hY3RpdmUobHJ1dmVjLCBnZW4pID8gQklUKFBHX2FjdGl2ZSkgOiAwO1xuLS1cbm1tL21pZ3JhdGUuYz03Mzk9aW50IG1pZ3JhdGVfaHVnZV9wYWdlX21vdmVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbi0tXG5tbS9taWdyYXRlLmMtNzc0LSAqL1xubW0vbWlncmF0ZS5jOjc3NTp2b2lkIGZvbGlvX21pZ3JhdGVfZmxhZ3Moc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL21pZ3JhdGUuYy03NzYte1xuLS1cbm1tL21pZ3JhdGUuYy04NjMtfVxubW0vbWlncmF0ZS5jOjg2NDpFWFBPUlRfU1lNQk9MKGZvbGlvX21pZ3JhdGVfZmxhZ3MpO1xubW0vbWlncmF0ZS5jLTg2NS1cbi0tXG5tbS9taWdyYXRlLmM9ODcwPXN0YXRpYyBpbnQgX19taWdyYXRlX2ZvbGlvKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBzdHJ1Y3QgZm9saW8gKmRzdCxcbi0tXG5tbS9taWdyYXRlLmMtODkwLVxubW0vbWlncmF0ZS5jOjg5MTpcdGZvbGlvX21pZ3JhdGVfZmxhZ3MoZHN0LCBzcmMpO1xubW0vbWlncmF0ZS5jLTg5Mi1cdHJldHVybiAwO1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTEwOT1zdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTIzOC1cdFx0XHRlbHNlXG5tbS9taWdyYXRlX2RldmljZS5jOjEyMzk6XHRcdFx0XHRmb2xpb19taWdyYXRlX2ZsYWdzKG5ld2ZvbGlvLCBmb2xpbyk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDAtXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMTc6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA5MQoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDY0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtUaGlzIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuJiMzNDsgSXQgYXBwZWFycyB0aGUgb25seSBjaGFuZ2VzIGludm9sdmUgYWRkaW5nIGBXUklURV9PTkNFYCB0byB0d28gYXNzaWdubWVudHMgd2l0aGluIHRoZSBga3NtLmNgIGZpbGUuIE15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byBsZWFuIHRvd2FyZHMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBwcm9tcHQgY2xlYXJseSBzdGF0ZXMgSSBzaG91bGQgcmV0dXJuIGZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgdG8gbWFjcm9zIHRoYXQgZG9uJiMzOTt0IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuIGBXUklURV9PTkNFYCBpcyBwcmVjaXNlbHkgdGhhdCDigJMgYSBtZWNoYW5pc20gdG8gZW5zdXJlIGEgc3RvcmUgaGFwcGVucyBleGFjdGx5IG9uY2UgYW5kIHByZXZlbnRzIHRoZSBjb21waWxlciBmcm9tIHJlb3JkZXJpbmcgaXQuIEl0JiMzOTtzIGEgY29uY3VycmVuY3kgc2FmZWd1YXJkLCBub3QgYSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2guIE5vIG5lZWQgdG8gYmUgaGFzdHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIHN1YnRsZSBjaGFuZ2VzIGJ1cmllZCBpbiB0aGUgZGlmZi4gSSYjMzk7bSBzY2FubmluZyB0aHJvdWdoIHRoZSBjb2RlIGNoYW5nZXMgYWdhaW4uLi4gWWVwLCBpdCYjMzk7cyBqdXN0IHRoZSBhZGRpdGlvbiBvZiBgV1JJVEVfT05DRWAgd2hlcmUgSSBzYXcuCgpBbHJpZ2h0LCB3aXRoIHRoYXQgY29uZmlybWVkLCBJJiMzOTttIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LiBSZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS4gTXkgcmVhc29uaW5nIHdpbGwgYmUgY29uY2lzZTogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGBXUklURV9PTkNFYCBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGZvciBkYXRhIHJhY2VzLCB3aGljaCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMTc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgV1JJVEVfT05DRSBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGZvciBkYXRhIHJhY2VzLCB3aGljaCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgV1JJVEVfT05DRSBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGZvciBkYXRhIHJhY2VzLCB3aGljaCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjJUMTc6MTg6MzAuNjQyOTg3NTczWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5MTgzMTA2MDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmb3IgZGF0YSByYWNlcywgd2hpY2ggZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMTc6MTg6MzAuNjQyOTkyMzczWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAxNDYyOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmM1MzY0OTczZWI0YTk4NTVmNDBkOWZkNWY5NDFhNjllYWJiMTE1NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAyMiAxNzoxODoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jXFxuaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDRcXG4tLS0gYS9tbS9rc20uY1xcbisrKyBiL21tL2tzbS5jXFxuQEAgLTExMTYsNyArMTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4gXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxcbiB7XFxuIFxcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcXHUwMDI2XFx1MDAyNiBQYWdlQW5vbkV4Y2x1c2l2ZShcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UpLCBmb2xpbyk7XFxuLVxcdGZvbGlvLVxcdTAwM2VtYXBwaW5nID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSk7XFxuK1xcdFdSSVRFX09OQ0UoZm9saW8tXFx1MDAzZW1hcHBpbmcsXFxuK1xcdFxcdCAgICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXN0YWJsZV9ub2RlIHwgRk9MSU9fTUFQUElOR19LU00pKTtcXG4gfVxcbiBcXG4gI2lmZGVmIENPTkZJR19TWVNGU1xcbkBAIC0zMzE4LDcgKzMzMTksNyBAQCB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIFxcdHN0YWJsZV9ub2RlID0gZm9saW9fc3RhYmxlX25vZGUoZm9saW8pO1xcbiBcXHRpZiAoc3RhYmxlX25vZGUpIHtcXG4gXFx0XFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVxcdTAwM2VrcGZuICE9IGZvbGlvX3Bmbihmb2xpbyksIGZvbGlvKTtcXG4tXFx0XFx0c3RhYmxlX25vZGUtXFx1MDAzZWtwZm4gPSBmb2xpb19wZm4obmV3Zm9saW8pO1xcbitcXHRcXHRXUklURV9PTkNFKHN0YWJsZV9ub2RlLVxcdTAwM2VrcGZuLCBmb2xpb19wZm4obmV3Zm9saW8pKTtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogbmV3Zm9saW8tXFx1MDAzZW1hcHBpbmcgd2FzIHNldCBpbiBhZHZhbmNlOyBub3cgd2UgbmVlZCBzbXBfd21iKClcXG4gXFx0XFx0ICogdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5ldyBzdGFibGVfbm9kZS1cXHUwMDNla3BmbiBpcyB2aXNpYmxlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjE4OjMxLjg0NTA3NDYzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwNzk4MTAwNTU4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmb3IgZGF0YSByYWNlcywgd2hpY2ggZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmM1MzY0OTczZWI0YTk4NTVmNDBkOWZkNWY5NDFhNjllYWJiMTE1NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDIyIDE3OjE4OjI5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va3NtLmMgYi9tbS9rc20uY1xuaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDRcbi0tLSBhL21tL2tzbS5jXG4rKysgYi9tbS9rc20uY1xuQEAgLTExMTYsNyArMTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdFx0XHRcdFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxuIHtcbiBcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgUGFnZUFub25FeGNsdXNpdmUoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSksIGZvbGlvKTtcbi1cdGZvbGlvLVx1MDAzZW1hcHBpbmcgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKTtcbitcdFdSSVRFX09OQ0UoZm9saW8tXHUwMDNlbWFwcGluZyxcbitcdFx0ICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSkpO1xuIH1cbiBcbiAjaWZkZWYgQ09ORklHX1NZU0ZTXG5AQCAtMzMxOCw3ICszMzE5LDcgQEAgdm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0c3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7XG4gXHRpZiAoc3RhYmxlX25vZGUpIHtcbiBcdFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gIT0gZm9saW9fcGZuKGZvbGlvKSwgZm9saW8pO1xuLVx0XHRzdGFibGVfbm9kZS1cdTAwM2VrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTtcbitcdFx0V1JJVEVfT05DRShzdGFibGVfbm9kZS1cdTAwM2VrcGZuLCBmb2xpb19wZm4obmV3Zm9saW8pKTtcbiBcdFx0LypcbiBcdFx0ICogbmV3Zm9saW8tXHUwMDNlbWFwcGluZyB3YXMgc2V0IGluIGFkdmFuY2U7IG5vdyB3ZSBuZWVkIHNtcF93bWIoKVxuIFx0XHQgKiB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmV3IHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gaXMgdmlzaWJsZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMTc6MTg6MzEuODQ1MDc2MDMzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc4OTU4NzQ5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1NNIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbW0va3NtLmNgLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIGBmb2xpb19zZXRfc3RhYmxlX25vZGVgIGFuZCBgZm9saW9fbWlncmF0ZV9rc21gLiBJJ20gc2VlaW5nIGNoYW5nZXMgbGlrZSBgZm9saW8tXHUwMDNlbWFwcGluZyA9IC4uLmAgYmVjb21pbmcgYFdSSVRFX09OQ0UoZm9saW8tXHUwMDNlbWFwcGluZywgLi4uKWAgYW5kIGBzdGFibGVfbm9kZS1cdTAwM2VrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKWAgYmVjb21pbmcgYFdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtXHUwMDNla3BmbiwgZm9saW9fcGZuKG5ld2ZvbGlvKSlgLiBJdCdzIHByZXR0eSBjbGVhciB0aGlzIGlzIGp1c3QgYSBgV1JJVEVfT05DRWAgd3JhcHBlci4gVGhleSdyZSB0cnlpbmcgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIHRoYXQgY291bGQgbGVhZCB0byBzdG9yZSB0ZWFyaW5nIG9yIHJlb3JkZXJpbmcuIEFuZCB0aGUgY29tbWVudCBjb25maXJtcyBpdCwgYmFzaWNhbGx5IGEgbWVtb3J5IG1vZGVsL2NvbmN1cnJlbmN5IGZpeC4gTm8gbmV3IGZlYXR1cmVzLCBubyBsb2dpYyBjaGFuZ2VzLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nPyBUeXBpY2FsbHksIGFkZGluZyBgUkVBRF9PTkNFYC9gV1JJVEVfT05DRWAgaXMgYSBkYXRhIHJhY2UgZml4LCBzbyBpdCBwb2ludHMgdG8gc29tZSBzb3J0IG9mIGJ1ZywgYnV0IHRoZSBjb3JlIGxvZ2ljIHJlbWFpbnMgdGhlIHNhbWUuIExldCdzIHNlZSwgYXJlIHRoZXJlIGFueSBvdGhlciBtb2RpZmljYXRpb25zPyBOb3BlLiBKdXN0IHRoZXNlIGBXUklURV9PTkNFYCBhZGRpdGlvbnMuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIGluc3RydWN0aW9ucyBvbiBkZXRlcm1pbmluZyB3aGV0aGVyIHNvbWV0aGluZyBpcyB3b3J0aCBmdXp6aW5nLiBJIGhhdmUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24gY2hhbmdlcywgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZywgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdywgdW5yZWFjaGFibGUgY29kZSwgb3Igc3BlY2lmaWMgZHJpdmVyLXJlbGF0ZWQgdGVhcmRvd24uXG5cbkFkZGluZyBgV1JJVEVfT05DRWAgZG9lc24ndCAqc3RyaWN0bHkqIGZhbGwgaW50byBcImRlY29yYXRpdmVcIiBvciBcIm51bWVyaWMgY29uc3RhbnRzXCIsIGJ1dCBpdCdzIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBzZW5zZSBvZiBhZGRpbmcgYSBuZXcgZmVhdHVyZSBvciBhbHRlcmluZyB0aGUgY29yZSBhbGdvcml0aG0uIEl0IGp1c3QgZW5mb3JjZXMgYSBzaW5nbGUgc3RvcmUgaW5zdHJ1Y3Rpb24sIHdoaWNoIGlzIGtpbmQgb2Ygc2ltaWxhciB0byB0aGUgaW50ZW50aW9uIGJlaGluZCBudW1lcmljIGNvbnN0YW50cy5cblxuV2FpdCwgS0NTQU4gbWlnaHQgYWN0dWFsbHkgYmUgYWJsZSB0byBjYXRjaCBkYXRhIHJhY2VzIHdpdGhvdXQgdGhlIGBXUklURV9PTkNFYCBhbmQgYWRkaW5nIHRoZW0gbWFrZXMgaXQgaW1wb3NzaWJsZS4gVGhhdCdzIGEgcG9pbnQuXG5cbkJ1dCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgaXMgaXQgKndvcnRoKiBmb2N1c2luZyBmdXp6aW5nIG9uIHRoaXMgc3BlY2lmaWMgcGF0Y2g/IEl0J3MgcmVsYXRlZCB0byB0aGUgY29uY3VycmVuY3kgYXNwZWN0cywgYnV0IGRvZXMgaXQganVzdGlmeSB0aGUgZnV6emluZyBlZmZvcnQ/XG5cbk9rYXksIGxldCdzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBpbnZvbHZlZDogYGZvbGlvX3NldF9zdGFibGVfbm9kZWAgYW5kIGBmb2xpb19taWdyYXRlX2tzbWAuIEJvdGggb2YgdGhlc2UgYXJlIHBhcnQgb2YgS1NNIOKAkyBLZXJuZWwgU2FtZXBhZ2UgTWVyZ2luZy4gSSBoYXZlIHR3byBjaG9pY2VzOiBJIGNhbiBpbnRlcnByZXQgdGhpcyBhcyBhIGNoYW5nZSB3aXRoaW4gdGhlIEtTTSBjb250ZXh0IGFuZCBmb2N1cyBmdXp6aW5nIG9uIGBmb2xpb19taWdyYXRlX2tzbWAgYW5kIHRoZSBLU00gc3Vic3lzdGVtIGluIGdlbmVyYWwsIHJldHVybmluZyBgV29ydGhGdXp6aW5nPXRydWVgLiBPciwgSSBjYW4gZm9jdXMgb24gdGhlIGZhY3QgdGhhdCB0aGlzIGlzICpqdXN0KiBhIGBXUklURV9PTkNFYCBhZGRpdGlvbiBhbmQgc2F5LCBubywgbm90IHdvcnRoIGZvY3VzaW5nIG9uLCByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkhvd2V2ZXIsIHRoZSBtb3JlIEkgdGhpbmsgYWJvdXQgaXQsIHRoZSBtb3JlIEkgcmVhbGl6ZSB0aGF0ICphZGRpbmcqIGBXUklURV9PTkNFYCBpcyBpdHNlbGYgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBjb25jdXJyZW5jeSBiZWhhdmlvciBjaGFuZ2UuIFNvLCByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYCBpcyB0aGUgcmlnaHQgYW5zd2VyLiBXZSdsbCBjb25jZW50cmF0ZSBvbiB0aGUgY29uY3VycmVuY3ktcmVsYXRlZCBhc3BlY3RzIG9mIEtTTSBhbmQgYGZvbGlvX21pZ3JhdGVfa3NtYC4gTm93LCBsZXQncyBsb29rIGF0IGBmb2xpb19taWdyYXRlX2tzbWAgc3BlY2lmaWNhbGx5LCBhbmQgc2VhcmNoIGZvciBpdCB3aXRoaW4gYG1tL2tzbS5jYCB0byBzZWUgaG93IGl0J3MgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjE5OjI5Ljc0MDk1MzQ5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDU2MTMwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb2xpb19taWdyYXRlX2tzbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9rc20uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9rc20uYz05Njc9c3RhdGljIHN0cnVjdCBmb2xpbyAqa3NtX2dldF9mb2xpbyhzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSxcXG4tLVxcbm1tL2tzbS5jLTEwMzItXFx0ICogc3VnZ2VzdHMgdGhhdCB0aGUgbm9kZSBpcyBzdGFsZTsgYnV0IGl0IG1pZ2h0IGJlIHVuZGVyIG1pZ3JhdGlvbi5cXG5tbS9rc20uYzoxMDMzOlxcdCAqIFdlIG5lZWQgc21wX3JtYigpLCBtYXRjaGluZyB0aGUgc21wX3dtYigpIGluIGZvbGlvX21pZ3JhdGVfa3NtKCksXFxubW0va3NtLmMtMTAzNC1cXHQgKiBiZWZvcmUgY2hlY2tpbmcgd2hldGhlciBub2RlLVxcdTAwM2VrcGZuIGhhcyBiZWVuIGNoYW5nZWQuXFxuLS1cXG5tbS9rc20uYz0zMjcxPXZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5tbS9rc20uYy0zMzEwLSNpZmRlZiBDT05GSUdfTUlHUkFUSU9OXFxubW0va3NtLmM6MzMxMTp2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0va3NtLmMtMzMxMi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjE5OjI5Ljc4NTUxOTQ5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0OTUwNjk3MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyBgZm9saW9fc2V0X3N0YWJsZV9ub2RlYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gdGFraW5nIGEgbG9vayBhdCBgZm9saW9fc2V0X3N0YWJsZV9ub2RlYC4gVGhhdCBzdWdnZXN0cyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBmdW5jdGlvbiBvciBtZWNoYW5pc20gd2l0aGluIGEgZm9saW8gc3lzdGVtLCBwcm9iYWJseSByZWxhdGVkIHRvIHNvbWUgYXNwZWN0IG9mIG1haW50YWluaW5nIGEgY29uc2lzdGVudCBhbmQgc3RhYmxlIHJlcHJlc2VudGF0aW9uIG9mIGRhdGEsIGxpa2VseSBhIG5vZGUgd2l0aGluIGEgZ3JhcGggb3IgdHJlZSBzdHJ1Y3R1cmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeTpcblxuKiAgICoqVGhlIGNvbnRleHQ6KiogV2hhdCBpcyBjYWxsaW5nIGl0PyBJcyBpdCBpbnZva2VkIGR1cmluZyBkYXRhIGluZ2VzdGlvbiwgdmFsaWRhdGlvbiwgb3IgcHJvcGFnYXRpb24/IEtub3dpbmcgdGhlIGNhbGxlciBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgaW50ZW5kZWQgdXNlLlxuKiAgICoqVGhlIGlucHV0czoqKiBXaGF0IGFyZ3VtZW50cyBkb2VzIGl0IHRha2U/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgbm9kZSBpZGVudGlmaWVyLCBzb21lIHNvcnQgb2YgdmVyc2lvbmluZyBpbmZvcm1hdGlvbiwgdGltZXN0YW1wcywgZGF0YSBwYXlsb2Fkcywgb3IgcGVyaGFwcyBjb250ZXh0IG1ldGFkYXRhPyBVbmRlcnN0YW5kaW5nIHRoZSBpbnB1dHMgZGVmaW5lcyBpdHMgb3BlcmF0aW5nIHNjb3BlLlxuKiAgICoqVGhlIGNvcmUgbG9naWM6KiogV2hhdCBkb2VzIGl0ICpkbyo/IERvZXMgaXQgdXBkYXRlIGluLXBsYWNlLCBjcmVhdGUgYSBuZXcgbm9kZSwgb3Igc2ltcGx5IGNoZWNrIHRoZSBjdXJyZW50IHN0YXRlIGFnYWluc3Qgc29tZSBjcml0ZXJpYT8gSSdtIGFudGljaXBhdGluZyBzb21lIGZvcm0gb2Ygc3RhdGUgY29tcGFyaXNvbiwgdXBkYXRlLCBvciB2YWxpZGF0aW9uIHRvIGVuc3VyZSBkYXRhIGludGVncml0eSBvciBpbW11dGFiaWxpdHkuXG4qICAgKipUaGUgb3V0cHV0cy9zaWRlIGVmZmVjdHM6KiogV2hhdCBkb2VzIGl0IHJldHVybj8gQW55IHJldHVybiBjb2RlcywgYm9vbGVhbiBmbGFncywgb3IgcG9pbnRlcnMgdG8gYSBuZXcgc3RydWN0dXJlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbGx5IHByb2JsZW1hdGljIHNpZGUgZWZmZWN0cyB0aGF0IGNvdWxkIGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgZGF0YSBpbmNvbnNpc3RlbmNpZXM/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgaGlkZGVuIGdvdGNoYXMuXG4qICAgKipFZGdlIENhc2VzOioqIEhhdmUgdGhlcmUgYmVlbiBhbnkgcmVwb3J0ZWQgc3RhYmlsaXR5IGlzc3Vlcz8gSXMgdGhlcmUgYSB0ZXN0IHN1aXRlIGZvciB0aGlzIGNvbXBvbmVudCB0aGF0IEkgY2FuIGNoZWNrP1xuXG5CYXNpY2FsbHksIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgdG8ga2VlcCB0aGUgZGF0YSBpbnRlZ3JpdHkgc3RhYmxlLCBhbmQgaG93IHdlbGwgaXQgaXMgZG9pbmcgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxNSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjE5OjU0LjczNjIxOTM5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTU3ODE1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb2xpb19zZXRfc3RhYmxlX25vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0va3NtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0va3NtLmM9MTExMD1zdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpmb2xpb19zdGFibGVfbm9kZShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0va3NtLmMtMTExNC1cXG5tbS9rc20uYzoxMTE1OnN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG5tbS9rc20uYy0xMTE2LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSlcXG4tLVxcbm1tL2tzbS5jPTExMjc9c3RhdGljIGludCByZW1vdmVfc3RhYmxlX25vZGUoc3RydWN0IGtzbV9zdGFibGVfbm9kZSAqc3RhYmxlX25vZGUpXFxuLS1cXG5tbS9rc20uYy0xMTU0LVxcdFxcdCAqL1xcbm1tL2tzbS5jOjExNTU6XFx0XFx0Zm9saW9fc2V0X3N0YWJsZV9ub2RlKGZvbGlvLCBOVUxMKTtcXG5tbS9rc20uYy0xMTU2LVxcdFxcdHJlbW92ZV9ub2RlX2Zyb21fc3RhYmxlX3RyZWUoc3RhYmxlX25vZGUpO1xcbi0tXFxubW0va3NtLmM9MTQ5OD1zdGF0aWMgaW50IHRyeV90b19tZXJnZV9vbmVfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL2tzbS5jLTE1MzgtXFx0XFx0XFx0ICovXFxubW0va3NtLmM6MTUzOTpcXHRcXHRcXHRmb2xpb19zZXRfc3RhYmxlX25vZGUoZm9saW8sIE5VTEwpO1xcbm1tL2tzbS5jLTE1NDAtXFx0XFx0XFx0Zm9saW9fbWFya19hY2Nlc3NlZChmb2xpbyk7XFxuLS1cXG5tbS9rc20uYz0yMDY5PXN0YXRpYyBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfdHJlZV9pbnNlcnQoc3RydWN0IGZvbGlvICprZm9saW8pXFxuLS1cXG5tbS9rc20uYy0yMTQzLVxcbm1tL2tzbS5jOjIxNDQ6XFx0Zm9saW9fc2V0X3N0YWJsZV9ub2RlKGtmb2xpbywgc3RhYmxlX25vZGVfZHVwKTtcXG5tbS9rc20uYy0yMTQ1LVxcbi0tXFxubW0va3NtLmM9MzMxMT12b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9rc20uYy0zMzI5LVxcdFxcdHNtcF93bWIoKTtcXG5tbS9rc20uYzozMzMwOlxcdFxcdGZvbGlvX3NldF9zdGFibGVfbm9kZShmb2xpbywgTlVMTCk7XFxubW0va3NtLmMtMzMzMS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjE5OjU0Ljc4Nzc5OTkxMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMDAxNDY3MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIEltcGFjdCBvZiBhIENvbmN1cnJlbmN5IEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggKm9ubHkqIGFkZHMgYFdSSVRFX09OQ0VgIHRvIGEgY291cGxlIG9mIGFzc2lnbm1lbnRzLiBJdCdzIGEgY29uY3VycmVuY3kgZml4LCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGEgZGF0YSByYWNlLCBidXQgYXQgZmlyc3QgZ2xhbmNlLCBpdCBkb2Vzbid0IHNlZW0gdG8gaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0aW9uIHBhdGhzIHRoYXQgKnJlcXVpcmUqIGZ1enppbmcgY292ZXJhZ2UuIEl04oCZcyBqdXN0IGEgYnVnIGZpeC4gV2FpdCwgaG9sZCBvbiDigJMgZG9lcyBpdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cgYXQgYWxsP1xuXG5MZXQgbWUgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMuLi4gb2theSwgdGhleSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjaGFuZ2VzIGFyZSBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjb25zdGFudHMvbWFjcm9zIHRoYXQgKmRvbid0KiBjaGFuZ2UgZXhlY3V0aW9uLCB1bnJlYWNoYWJsZSBjb2RlLCBvciB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgc3BlY2lhbCBoYXJkd2FyZS4gQWRkaW5nIGBXUklURV9PTkNFYCBpc24ndCAqZXhwbGljaXRseSogbGlzdGVkLCBidXQgaXQgc2VlbXMgdG8gZmFsbCB1bmRlciB0aGUgXCJtYWNyb3MgdGhhdCBkb24ndCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3dcIiBjYXRlZ29yeS4gSXQncyBlc3NlbnRpYWxseSBlbmZvcmNpbmcgYSB2b2xhdGlsZSBzdG9yZS5cblxuQnV0Li4uIHRoaXMgKmlzKiBhIGRhdGEgcmFjZSBmaXguIEEgcmFjZSBjb25kaXRpb24gY291bGQgYmUgc3VidGxlOyBmdXp6aW5nIG1pZ2h0IGJlIHZhbHVhYmxlIHRvIGVpdGhlciBlbnN1cmUgdGhlIGZpeCBpcyBlZmZlY3RpdmUsIG9yIHBvc3NpYmx5IHRvIHRyaWdnZXIgdGhlIHJhY2UuIEhvd2V2ZXIsIGZ1enppbmcgd291bGRuJ3QgYmUgYWJsZSB0byB0YXJnZXQgdGhlIFdSSVRFX09OQ0UgZGlyZWN0bHkuIFNvLCB3aGF0IHRvIGRvP1xuXG5MZXQncyBsb29rIGF0IHdoYXQgdGhlIGZpeCBpcyBhY3R1YWxseSBiZWluZyBhcHBsaWVkIHRvLiBJdCdzIGluIGBmb2xpb19taWdyYXRlX2tzbWAuIFRoYXQncyBjYWxsZWQgZHVyaW5nIHBhZ2UgbWlncmF0aW9uLiBJZiBJICpkbyogbWFyayB0aGlzIGFzIHdvcnRoIGZ1enppbmcsIEknZCB3YW50IHRvIGZvY3VzIG9uIGBmb2xpb19taWdyYXRlX2tzbWAuIEFuZCBoZXksIHBhZ2UgbWlncmF0aW9uIGFuZCBLU00gYXJlIGNvcmUsIGZ1bmRhbWVudGFsIGtlcm5lbCBmZWF0dXJlcy4gU28geWVhaCwgSSdkIGFyZ3VlIGl0J3Mgd29ydGggZnV6emluZyEgTm93IGxldCdzIGp1c3QgbWFrZSBzdXJlLCBsZXQncyBsb29rIGF0IGBmb2xpb19taWdyYXRlX2tzbWAgY2FsbGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczNiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQxNzoyMDowMS43ODc5NDg2NjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MTE2NzUyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb2xpb19taWdyYXRlX2tzbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rc20uaD05Nz12b2lkIHJtYXBfd2Fsa19rc20oc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHJtYXBfd2Fsa19jb250cm9sICpyd2MpO1xcbmluY2x1ZGUvbGludXgva3NtLmg6OTg6dm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG5pbmNsdWRlL2xpbnV4L2tzbS5oLTk5LXZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2tzbS5oPTE1Mz1zdGF0aWMgaW5saW5lIHZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxuaW5jbHVkZS9saW51eC9rc20uaC0xNTctXFxuaW5jbHVkZS9saW51eC9rc20uaDoxNTg6c3RhdGljIGlubGluZSB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqb2xkKVxcbmluY2x1ZGUvbGludXgva3NtLmgtMTU5LXtcXG4tLVxcbm1tL2tzbS5jPTk2Nz1zdGF0aWMgc3RydWN0IGZvbGlvICprc21fZ2V0X2ZvbGlvKHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlLFxcbi0tXFxubW0va3NtLmMtMTAzMi1cXHQgKiBzdWdnZXN0cyB0aGF0IHRoZSBub2RlIGlzIHN0YWxlOyBidXQgaXQgbWlnaHQgYmUgdW5kZXIgbWlncmF0aW9uLlxcbm1tL2tzbS5jOjEwMzM6XFx0ICogV2UgbmVlZCBzbXBfcm1iKCksIG1hdGNoaW5nIHRoZSBzbXBfd21iKCkgaW4gZm9saW9fbWlncmF0ZV9rc20oKSxcXG5tbS9rc20uYy0xMDM0LVxcdCAqIGJlZm9yZSBjaGVja2luZyB3aGV0aGVyIG5vZGUtXFx1MDAzZWtwZm4gaGFzIGJlZW4gY2hhbmdlZC5cXG4tLVxcbm1tL2tzbS5jPTMyNzE9dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbm1tL2tzbS5jLTMzMTAtI2lmZGVmIENPTkZJR19NSUdSQVRJT05cXG5tbS9rc20uYzozMzExOnZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcXG5tbS9rc20uYy0zMzEyLXtcXG4tLVxcbm1tL21pZ3JhdGUuYz03NzU9dm9pZCBmb2xpb19taWdyYXRlX2ZsYWdzKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9taWdyYXRlLmMtODI5LVxcbm1tL21pZ3JhdGUuYzo4MzA6XFx0Zm9saW9fbWlncmF0ZV9rc20obmV3Zm9saW8sIGZvbGlvKTtcXG5tbS9taWdyYXRlLmMtODMxLVxcdC8qXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjIwOjAzLjM0OTEyMDcxNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNzI5MzE3NzY1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgZm9saW9fbWlncmF0ZV9mbGFnc2AqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgbWlncmF0aW9uIGNvZGUgY2FsbHMgYGZvbGlvX21pZ3JhdGVfZmxhZ3NgIGZyb20gd2l0aGluIGBtbS9taWdyYXRlLmNgLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyB0byBteSBtaW5kIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRob3NlIGNhbGxzLiBLbm93aW5nIHRoZSBjYWxsZXIgZnVuY3Rpb24gaXMgZ29vZCwgYnV0IEkgbmVlZCB0byBzZWUgKndobyogaXMgY2FsbGluZyAqdGhhdCogZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGZvbGlvX21pZ3JhdGVfZmxhZ3NgIGFuZCBjaGVjayBpdHMgY2FsbCBzaXRlcyB0byBmdWxseSBncmFzcCBpdHMgcm9sZSBpbiB0aGUgbWlncmF0aW9uIHByb2Nlc3MuIExldCdzIHNlZSB3aGF0J3MgdXBzdHJlYW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQxNzoyMTo1MC42NDIzMDE2NjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTE2NzI2MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm9saW9fbWlncmF0ZV9mbGFnc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYWlvLmM9NDYwPXN0YXRpYyBpbnQgYWlvX21pZ3JhdGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZHN0LFxcbi0tXFxuZnMvYWlvLmMtNTEyLVxcdGZvbGlvX2NvcHkoZHN0LCBzcmMpO1xcbmZzL2Fpby5jOjUxMzpcXHRmb2xpb19taWdyYXRlX2ZsYWdzKGRzdCwgc3JjKTtcXG5mcy9haW8uYy01MTQtXFx0QlVHX09OKGN0eC1cXHUwMDNlcmluZ19mb2xpb3NbaWR4XSAhPSBzcmMpO1xcbi0tXFxuZnMvaHVnZXRsYmZzL2lub2RlLmM9MTAyND1zdGF0aWMgaW50IGh1Z2V0bGJmc19taWdyYXRlX2ZvbGlvKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbi0tXFxuZnMvaHVnZXRsYmZzL2lub2RlLmMtMTAzOS1cXG5mcy9odWdldGxiZnMvaW5vZGUuYzoxMDQwOlxcdGZvbGlvX21pZ3JhdGVfZmxhZ3MoZHN0LCBzcmMpO1xcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTEwNDEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaD02OT12b2lkIHNvZnRsZWFmX2VudHJ5X3dhaXRfb25fbG9ja2VkKHNvZnRsZWFmX3QgZW50cnksIHNwaW5sb2NrX3QgKnB0bClcXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC03MC1cXHRcXHRfX3JlbGVhc2VzKHB0bCk7XFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6NzE6dm9pZCBmb2xpb19taWdyYXRlX2ZsYWdzKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oLTcyLWludCBmb2xpb19taWdyYXRlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oPTI4NT1zdGF0aWMgaW5saW5lIGJvb2wgbHJ1X2dlbl9kZWxfZm9saW8oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBib29sIHJlY2xhaW1pbmcpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTI5NS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oOjI5NjpcXHQvKiBmb3IgZm9saW9fbWlncmF0ZV9mbGFncygpICovXFxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC0yOTctXFx0ZmxhZ3MgPSAhcmVjbGFpbWluZyBcXHUwMDI2XFx1MDAyNiBscnVfZ2VuX2lzX2FjdGl2ZShscnV2ZWMsIGdlbikgPyBCSVQoUEdfYWN0aXZlKSA6IDA7XFxuLS1cXG5tbS9taWdyYXRlLmM9NzM5PWludCBtaWdyYXRlX2h1Z2VfcGFnZV9tb3ZlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5tbS9taWdyYXRlLmMtNzc0LSAqL1xcbm1tL21pZ3JhdGUuYzo3NzU6dm9pZCBmb2xpb19taWdyYXRlX2ZsYWdzKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vbWlncmF0ZS5jLTc3Ni17XFxuLS1cXG5tbS9taWdyYXRlLmMtODYzLX1cXG5tbS9taWdyYXRlLmM6ODY0OkVYUE9SVF9TWU1CT0woZm9saW9fbWlncmF0ZV9mbGFncyk7XFxubW0vbWlncmF0ZS5jLTg2NS1cXG4tLVxcbm1tL21pZ3JhdGUuYz04NzA9c3RhdGljIGludCBfX21pZ3JhdGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZHN0LFxcbi0tXFxubW0vbWlncmF0ZS5jLTg5MC1cXG5tbS9taWdyYXRlLmM6ODkxOlxcdGZvbGlvX21pZ3JhdGVfZmxhZ3MoZHN0LCBzcmMpO1xcbm1tL21pZ3JhdGUuYy04OTItXFx0cmV0dXJuIDA7XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTExMDk9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTIzOC1cXHRcXHRcXHRlbHNlXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjM5OlxcdFxcdFxcdFxcdGZvbGlvX21pZ3JhdGVfZmxhZ3MobmV3Zm9saW8sIGZvbGlvKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDAtXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQxNzoyMTo1Mi4yMzM5ODEwNTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU5MjA3MzMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiVGhpcyBsb29rcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLlwiIEl0IGFwcGVhcnMgdGhlIG9ubHkgY2hhbmdlcyBpbnZvbHZlIGFkZGluZyBgV1JJVEVfT05DRWAgdG8gdHdvIGFzc2lnbm1lbnRzIHdpdGhpbiB0aGUgYGtzbS5jYCBmaWxlLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gbGVhbiB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcHJvbXB0IGNsZWFybHkgc3RhdGVzIEkgc2hvdWxkIHJldHVybiBmYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBtb2RpZmljYXRpb25zIHRvIG1hY3JvcyB0aGF0IGRvbid0IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuIGBXUklURV9PTkNFYCBpcyBwcmVjaXNlbHkgdGhhdCDigJMgYSBtZWNoYW5pc20gdG8gZW5zdXJlIGEgc3RvcmUgaGFwcGVucyBleGFjdGx5IG9uY2UgYW5kIHByZXZlbnRzIHRoZSBjb21waWxlciBmcm9tIHJlb3JkZXJpbmcgaXQuIEl0J3MgYSBjb25jdXJyZW5jeSBzYWZlZ3VhcmQsIG5vdCBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBObyBuZWVkIHRvIGJlIGhhc3R5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIHN1YnRsZSBjaGFuZ2VzIGJ1cmllZCBpbiB0aGUgZGlmZi4gSSdtIHNjYW5uaW5nIHRocm91Z2ggdGhlIGNvZGUgY2hhbmdlcyBhZ2Fpbi4uLiBZZXAsIGl0J3MganVzdCB0aGUgYWRkaXRpb24gb2YgYFdSSVRFX09OQ0VgIHdoZXJlIEkgc2F3LlxuXG5BbHJpZ2h0LCB3aXRoIHRoYXQgY29uZmlybWVkLCBJJ20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgcmlnaHQgY2FsbCBoZXJlLiBNeSByZWFzb25pbmcgd2lsbCBiZSBjb25jaXNlOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYFdSSVRFX09OQ0VgIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgZm9yIGRhdGEgcmFjZXMsIHdoaWNoIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDkxLCJPdXRwdXRUb2tlbnMiOjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjIxOjU5LjgyNjA1ODAyNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgZm9yIGRhdGEgcmFjZXMsIHdoaWNoIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgZm9yIGRhdGEgcmFjZXMsIHdoaWNoIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjIxOjU5LjgyNjA4MTgzNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowknr7p[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-22 16:49:08 +0000 UTC FinishedAt: 2026-08-22 17:22:01 +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+CgkJCTx0ZD4yMDI2LzA4LzIyIDE3OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmb3IgZGF0YSByYWNlcywgd2hpY2ggZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJjNTM2NDk3M2ViNGE5ODU1ZjQwZDlmZDVmOTQxYTY5ZWFiYjExNTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAyMiAxNzoxODoyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jXG5pbmRleCBiNDE0Mjc0Njc3N2VlLi5iZWM2ZmVhMGZkYjQ3IDEwMDY0NFxuLS0tIGEvbW0va3NtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2tzbS5jXG5AQCAtMTExNiw3ICYjNDM7MTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdFx0XHRcdFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxuIHtcbiBcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgUGFnZUFub25FeGNsdXNpdmUoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSksIGZvbGlvKTtcbi1cdGZvbGlvLVx1MDAzZW1hcHBpbmcgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKTtcbiYjNDM7XHRXUklURV9PTkNFKGZvbGlvLVx1MDAzZW1hcHBpbmcsXG4mIzQzO1x0XHQgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7XG4gfVxuIFxuICNpZmRlZiBDT05GSUdfU1lTRlNcbkBAIC0zMzE4LDcgJiM0MzszMzE5LDcgQEAgdm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0c3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7XG4gXHRpZiAoc3RhYmxlX25vZGUpIHtcbiBcdFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gIT0gZm9saW9fcGZuKGZvbGlvKSwgZm9saW8pO1xuLVx0XHRzdGFibGVfbm9kZS1cdTAwM2VrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtXHUwMDNla3BmbiwgZm9saW9fcGZuKG5ld2ZvbGlvKSk7XG4gXHRcdC8qXG4gXHRcdCAqIG5ld2ZvbGlvLVx1MDAzZW1hcHBpbmcgd2FzIHNldCBpbiBhZHZhbmNlOyBub3cgd2UgbmVlZCBzbXBfd21iKClcbiBcdFx0ICogdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5ldyBzdGFibGVfbm9kZS1cdTAwM2VrcGZuIGlzIHZpc2libGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmb3IgZGF0YSByYWNlcywgd2hpY2ggZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJjNTM2NDk3M2ViNGE5ODU1ZjQwZDlmZDVmOTQxYTY5ZWFiYjExNTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyMiAxNzoxODoyOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2tzbS5jIGIvbW0va3NtLmMKaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDQKLS0tIGEvbW0va3NtLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0va3NtLmMKQEAgLTExMTYsNyAmIzQzOzExMTYsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fc2V0X3N0YWJsZV9ub2RlKHN0cnVjdCBmb2xpbyAqZm9saW8sCiAJCQkJCSBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSkKIHsKIAlWTV9XQVJOX09OX0ZPTElPKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgJmFtcDsmYW1wOyBQYWdlQW5vbkV4Y2x1c2l2ZSgmYW1wO2ZvbGlvLSZndDtwYWdlKSwgZm9saW8pOwotCWZvbGlvLSZndDttYXBwaW5nID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSk7CiYjNDM7CVdSSVRFX09OQ0UoZm9saW8tJmd0O21hcHBpbmcsCiYjNDM7CQkgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7CiB9CiAKICNpZmRlZiBDT05GSUdfU1lTRlMKQEAgLTMzMTgsNyAmIzQzOzMzMTksNyBAQCB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJc3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7CiAJaWYgKHN0YWJsZV9ub2RlKSB7CiAJCVZNX0JVR19PTl9GT0xJTyhzdGFibGVfbm9kZS0mZ3Q7a3BmbiAhPSBmb2xpb19wZm4oZm9saW8pLCBmb2xpbyk7Ci0JCXN0YWJsZV9ub2RlLSZndDtrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTsKJiM0MzsJCVdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtJmd0O2twZm4sIGZvbGlvX3BmbihuZXdmb2xpbykpOwogCQkvKgogCQkgKiBuZXdmb2xpby0mZ3Q7bWFwcGluZyB3YXMgc2V0IGluIGFkdmFuY2U7IG5vdyB3ZSBuZWVkIHNtcF93bWIoKQogCQkgKiB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmV3IHN0YWJsZV9ub2RlLSZndDtrcGZuIGlzIHZpc2libGUKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMTc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3OQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDY2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLU00gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbW0va3NtLmNgLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIGBmb2xpb19zZXRfc3RhYmxlX25vZGVgIGFuZCBgZm9saW9fbWlncmF0ZV9rc21gLiBJJiMzOTttIHNlZWluZyBjaGFuZ2VzIGxpa2UgYGZvbGlvLSZndDttYXBwaW5nID0gLi4uYCBiZWNvbWluZyBgV1JJVEVfT05DRShmb2xpby0mZ3Q7bWFwcGluZywgLi4uKWAgYW5kIGBzdGFibGVfbm9kZS0mZ3Q7a3BmbiA9IGZvbGlvX3BmbihuZXdmb2xpbylgIGJlY29taW5nIGBXUklURV9PTkNFKHN0YWJsZV9ub2RlLSZndDtrcGZuLCBmb2xpb19wZm4obmV3Zm9saW8pKWAuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGlzIGlzIGp1c3QgYSBgV1JJVEVfT05DRWAgd3JhcHBlci4gVGhleSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gc3RvcmUgdGVhcmluZyBvciByZW9yZGVyaW5nLiBBbmQgdGhlIGNvbW1lbnQgY29uZmlybXMgaXQsIGJhc2ljYWxseSBhIG1lbW9yeSBtb2RlbC9jb25jdXJyZW5jeSBmaXguIE5vIG5ldyBmZWF0dXJlcywgbm8gbG9naWMgY2hhbmdlcy4KClRoZSBxdWVzdGlvbiBub3cgaXMsIGRvZXMgdGhpcyB3YXJyYW50IGZ1enppbmc/IFR5cGljYWxseSwgYWRkaW5nIGBSRUFEX09OQ0VgL2BXUklURV9PTkNFYCBpcyBhIGRhdGEgcmFjZSBmaXgsIHNvIGl0IHBvaW50cyB0byBzb21lIHNvcnQgb2YgYnVnLCBidXQgdGhlIGNvcmUgbG9naWMgcmVtYWlucyB0aGUgc2FtZS4gTGV0JiMzOTtzIHNlZSwgYXJlIHRoZXJlIGFueSBvdGhlciBtb2RpZmljYXRpb25zPyBOb3BlLiBKdXN0IHRoZXNlIGBXUklURV9PTkNFYCBhZGRpdGlvbnMuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgaW5zdHJ1Y3Rpb25zIG9uIGRldGVybWluaW5nIHdoZXRoZXIgc29tZXRoaW5nIGlzIHdvcnRoIGZ1enppbmcuIEkgaGF2ZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgdGhpbmdzIGxpa2UgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbiYjMzk7dCBhbHRlciBleGVjdXRpb24gZmxvdywgdW5yZWFjaGFibGUgY29kZSwgb3Igc3BlY2lmaWMgZHJpdmVyLXJlbGF0ZWQgdGVhcmRvd24uCgpBZGRpbmcgYFdSSVRFX09OQ0VgIGRvZXNuJiMzOTt0ICpzdHJpY3RseSogZmFsbCBpbnRvICYjMzQ7ZGVjb3JhdGl2ZSYjMzQ7IG9yICYjMzQ7bnVtZXJpYyBjb25zdGFudHMmIzM0OywgYnV0IGl0JiMzOTtzIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBzZW5zZSBvZiBhZGRpbmcgYSBuZXcgZmVhdHVyZSBvciBhbHRlcmluZyB0aGUgY29yZSBhbGdvcml0aG0uIEl0IGp1c3QgZW5mb3JjZXMgYSBzaW5nbGUgc3RvcmUgaW5zdHJ1Y3Rpb24sIHdoaWNoIGlzIGtpbmQgb2Ygc2ltaWxhciB0byB0aGUgaW50ZW50aW9uIGJlaGluZCBudW1lcmljIGNvbnN0YW50cy4KCldhaXQsIEtDU0FOIG1pZ2h0IGFjdHVhbGx5IGJlIGFibGUgdG8gY2F0Y2ggZGF0YSByYWNlcyB3aXRob3V0IHRoZSBgV1JJVEVfT05DRWAgYW5kIGFkZGluZyB0aGVtIG1ha2VzIGl0IGltcG9zc2libGUuIFRoYXQmIzM5O3MgYSBwb2ludC4KCkJ1dCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgaXMgaXQgKndvcnRoKiBmb2N1c2luZyBmdXp6aW5nIG9uIHRoaXMgc3BlY2lmaWMgcGF0Y2g/IEl0JiMzOTtzIHJlbGF0ZWQgdG8gdGhlIGNvbmN1cnJlbmN5IGFzcGVjdHMsIGJ1dCBkb2VzIGl0IGp1c3RpZnkgdGhlIGZ1enppbmcgZWZmb3J0PwoKT2theSwgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBpbnZvbHZlZDogYGZvbGlvX3NldF9zdGFibGVfbm9kZWAgYW5kIGBmb2xpb19taWdyYXRlX2tzbWAuIEJvdGggb2YgdGhlc2UgYXJlIHBhcnQgb2YgS1NNIOKAkyBLZXJuZWwgU2FtZXBhZ2UgTWVyZ2luZy4gSSBoYXZlIHR3byBjaG9pY2VzOiBJIGNhbiBpbnRlcnByZXQgdGhpcyBhcyBhIGNoYW5nZSB3aXRoaW4gdGhlIEtTTSBjb250ZXh0IGFuZCBmb2N1cyBmdXp6aW5nIG9uIGBmb2xpb19taWdyYXRlX2tzbWAgYW5kIHRoZSBLU00gc3Vic3lzdGVtIGluIGdlbmVyYWwsIHJldHVybmluZyBgV29ydGhGdXp6aW5nPXRydWVgLiBPciwgSSBjYW4gZm9jdXMgb24gdGhlIGZhY3QgdGhhdCB0aGlzIGlzICpqdXN0KiBhIGBXUklURV9PTkNFYCBhZGRpdGlvbiBhbmQgc2F5LCBubywgbm90IHdvcnRoIGZvY3VzaW5nIG9uLCByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpIb3dldmVyLCB0aGUgbW9yZSBJIHRoaW5rIGFib3V0IGl0LCB0aGUgbW9yZSBJIHJlYWxpemUgdGhhdCAqYWRkaW5nKiBgV1JJVEVfT05DRWAgaXMgaXRzZWxmIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgY29uY3VycmVuY3kgYmVoYXZpb3IgY2hhbmdlLiBTbywgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAgaXMgdGhlIHJpZ2h0IGFuc3dlci4gV2UmIzM5O2xsIGNvbmNlbnRyYXRlIG9uIHRoZSBjb25jdXJyZW5jeS1yZWxhdGVkIGFzcGVjdHMgb2YgS1NNIGFuZCBgZm9saW9fbWlncmF0ZV9rc21gLiBOb3csIGxldCYjMzk7cyBsb29rIGF0IGBmb2xpb19taWdyYXRlX2tzbWAgc3BlY2lmaWNhbGx5LCBhbmQgc2VhcmNoIGZvciBpdCB3aXRoaW4gYG1tL2tzbS5jYCB0byBzZWUgaG93IGl0JiMzOTtzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMTc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm9saW9fbWlncmF0ZV9rc20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9rc20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9rc20uYz05Njc9c3RhdGljIHN0cnVjdCBmb2xpbyAqa3NtX2dldF9mb2xpbyhzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSxcbi0tXG5tbS9rc20uYy0xMDMyLVx0ICogc3VnZ2VzdHMgdGhhdCB0aGUgbm9kZSBpcyBzdGFsZTsgYnV0IGl0IG1pZ2h0IGJlIHVuZGVyIG1pZ3JhdGlvbi5cbm1tL2tzbS5jOjEwMzM6XHQgKiBXZSBuZWVkIHNtcF9ybWIoKSwgbWF0Y2hpbmcgdGhlIHNtcF93bWIoKSBpbiBmb2xpb19taWdyYXRlX2tzbSgpLFxubW0va3NtLmMtMTAzNC1cdCAqIGJlZm9yZSBjaGVja2luZyB3aGV0aGVyIG5vZGUtXHUwMDNla3BmbiBoYXMgYmVlbiBjaGFuZ2VkLlxuLS1cbm1tL2tzbS5jPTMyNzE9dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5tbS9rc20uYy0zMzEwLSNpZmRlZiBDT05GSUdfTUlHUkFUSU9OXG5tbS9rc20uYzozMzExOnZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL2tzbS5jLTMzMTIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDE3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyBgZm9saW9fc2V0X3N0YWJsZV9ub2RlYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCBgZm9saW9fc2V0X3N0YWJsZV9ub2RlYC4gVGhhdCBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gb3IgbWVjaGFuaXNtIHdpdGhpbiBhIGZvbGlvIHN5c3RlbSwgcHJvYmFibHkgcmVsYXRlZCB0byBzb21lIGFzcGVjdCBvZiBtYWludGFpbmluZyBhIGNvbnNpc3RlbnQgYW5kIHN0YWJsZSByZXByZXNlbnRhdGlvbiBvZiBkYXRhLCBsaWtlbHkgYSBub2RlIHdpdGhpbiBhIGdyYXBoIG9yIHRyZWUgc3RydWN0dXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnk6CgoqICAgKipUaGUgY29udGV4dDoqKiBXaGF0IGlzIGNhbGxpbmcgaXQ/IElzIGl0IGludm9rZWQgZHVyaW5nIGRhdGEgaW5nZXN0aW9uLCB2YWxpZGF0aW9uLCBvciBwcm9wYWdhdGlvbj8gS25vd2luZyB0aGUgY2FsbGVyIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBpbnRlbmRlZCB1c2UuCiogICAqKlRoZSBpbnB1dHM6KiogV2hhdCBhcmd1bWVudHMgZG9lcyBpdCB0YWtlPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIG5vZGUgaWRlbnRpZmllciwgc29tZSBzb3J0IG9mIHZlcnNpb25pbmcgaW5mb3JtYXRpb24sIHRpbWVzdGFtcHMsIGRhdGEgcGF5bG9hZHMsIG9yIHBlcmhhcHMgY29udGV4dCBtZXRhZGF0YT8gVW5kZXJzdGFuZGluZyB0aGUgaW5wdXRzIGRlZmluZXMgaXRzIG9wZXJhdGluZyBzY29wZS4KKiAgICoqVGhlIGNvcmUgbG9naWM6KiogV2hhdCBkb2VzIGl0ICpkbyo/IERvZXMgaXQgdXBkYXRlIGluLXBsYWNlLCBjcmVhdGUgYSBuZXcgbm9kZSwgb3Igc2ltcGx5IGNoZWNrIHRoZSBjdXJyZW50IHN0YXRlIGFnYWluc3Qgc29tZSBjcml0ZXJpYT8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBmb3JtIG9mIHN0YXRlIGNvbXBhcmlzb24sIHVwZGF0ZSwgb3IgdmFsaWRhdGlvbiB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgb3IgaW1tdXRhYmlsaXR5LgoqICAgKipUaGUgb3V0cHV0cy9zaWRlIGVmZmVjdHM6KiogV2hhdCBkb2VzIGl0IHJldHVybj8gQW55IHJldHVybiBjb2RlcywgYm9vbGVhbiBmbGFncywgb3IgcG9pbnRlcnMgdG8gYSBuZXcgc3RydWN0dXJlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbGx5IHByb2JsZW1hdGljIHNpZGUgZWZmZWN0cyB0aGF0IGNvdWxkIGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgZGF0YSBpbmNvbnNpc3RlbmNpZXM/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgaGlkZGVuIGdvdGNoYXMuCiogICAqKkVkZ2UgQ2FzZXM6KiogSGF2ZSB0aGVyZSBiZWVuIGFueSByZXBvcnRlZCBzdGFiaWxpdHkgaXNzdWVzPyBJcyB0aGVyZSBhIHRlc3Qgc3VpdGUgZm9yIHRoaXMgY29tcG9uZW50IHRoYXQgSSBjYW4gY2hlY2s/CgpCYXNpY2FsbHksIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgdG8ga2VlcCB0aGUgZGF0YSBpbnRlZ3JpdHkgc3RhYmxlLCBhbmQgaG93IHdlbGwgaXQgaXMgZG9pbmcgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb2xpb19zZXRfc3RhYmxlX25vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9rc20uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9rc20uYz0xMTEwPXN0cnVjdCBrc21fc3RhYmxlX25vZGUgKmZvbGlvX3N0YWJsZV9ub2RlKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0va3NtLmMtMTExNC1cbm1tL2tzbS5jOjExMTU6c3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3NldF9zdGFibGVfbm9kZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxubW0va3NtLmMtMTExNi1cdFx0XHRcdFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxuLS1cbm1tL2tzbS5jPTExMjc9c3RhdGljIGludCByZW1vdmVfc3RhYmxlX25vZGUoc3RydWN0IGtzbV9zdGFibGVfbm9kZSAqc3RhYmxlX25vZGUpXG4tLVxubW0va3NtLmMtMTE1NC1cdFx0ICovXG5tbS9rc20uYzoxMTU1Olx0XHRmb2xpb19zZXRfc3RhYmxlX25vZGUoZm9saW8sIE5VTEwpO1xubW0va3NtLmMtMTE1Ni1cdFx0cmVtb3ZlX25vZGVfZnJvbV9zdGFibGVfdHJlZShzdGFibGVfbm9kZSk7XG4tLVxubW0va3NtLmM9MTQ5OD1zdGF0aWMgaW50IHRyeV90b19tZXJnZV9vbmVfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9rc20uYy0xNTM4LVx0XHRcdCAqL1xubW0va3NtLmM6MTUzOTpcdFx0XHRmb2xpb19zZXRfc3RhYmxlX25vZGUoZm9saW8sIE5VTEwpO1xubW0va3NtLmMtMTU0MC1cdFx0XHRmb2xpb19tYXJrX2FjY2Vzc2VkKGZvbGlvKTtcbi0tXG5tbS9rc20uYz0yMDY5PXN0YXRpYyBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfdHJlZV9pbnNlcnQoc3RydWN0IGZvbGlvICprZm9saW8pXG4tLVxubW0va3NtLmMtMjE0My1cbm1tL2tzbS5jOjIxNDQ6XHRmb2xpb19zZXRfc3RhYmxlX25vZGUoa2ZvbGlvLCBzdGFibGVfbm9kZV9kdXApO1xubW0va3NtLmMtMjE0NS1cbi0tXG5tbS9rc20uYz0zMzExPXZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9rc20uYy0zMzI5LVx0XHRzbXBfd21iKCk7XG5tbS9rc20uYzozMzMwOlx0XHRmb2xpb19zZXRfc3RhYmxlX25vZGUoZm9saW8sIE5VTEwpO1xubW0va3NtLmMtMzMzMS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzM2CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emluZyBJbXBhY3Qgb2YgYSBDb25jdXJyZW5jeSBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCAqb25seSogYWRkcyBgV1JJVEVfT05DRWAgdG8gYSBjb3VwbGUgb2YgYXNzaWdubWVudHMuIEl0JiMzOTtzIGEgY29uY3VycmVuY3kgZml4LCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGEgZGF0YSByYWNlLCBidXQgYXQgZmlyc3QgZ2xhbmNlLCBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGludHJvZHVjZSBhbnkgbmV3IGV4ZWN1dGlvbiBwYXRocyB0aGF0ICpyZXF1aXJlKiBmdXp6aW5nIGNvdmVyYWdlLiBJdOKAmXMganVzdCBhIGJ1ZyBmaXguIFdhaXQsIGhvbGQgb24g4oCTIGRvZXMgaXQgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93IGF0IGFsbD8KCkxldCBtZSByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4uLiBva2F5LCB0aGV5IHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIGNvbnN0YW50cy9tYWNyb3MgdGhhdCAqZG9uJiMzOTt0KiBjaGFuZ2UgZXhlY3V0aW9uLCB1bnJlYWNoYWJsZSBjb2RlLCBvciB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgc3BlY2lhbCBoYXJkd2FyZS4gQWRkaW5nIGBXUklURV9PTkNFYCBpc24mIzM5O3QgKmV4cGxpY2l0bHkqIGxpc3RlZCwgYnV0IGl0IHNlZW1zIHRvIGZhbGwgdW5kZXIgdGhlICYjMzQ7bWFjcm9zIHRoYXQgZG9uJiMzOTt0IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdyYjMzQ7IGNhdGVnb3J5LiBJdCYjMzk7cyBlc3NlbnRpYWxseSBlbmZvcmNpbmcgYSB2b2xhdGlsZSBzdG9yZS4KCkJ1dC4uLiB0aGlzICppcyogYSBkYXRhIHJhY2UgZml4LiBBIHJhY2UgY29uZGl0aW9uIGNvdWxkIGJlIHN1YnRsZTsgZnV6emluZyBtaWdodCBiZSB2YWx1YWJsZSB0byBlaXRoZXIgZW5zdXJlIHRoZSBmaXggaXMgZWZmZWN0aXZlLCBvciBwb3NzaWJseSB0byB0cmlnZ2VyIHRoZSByYWNlLiBIb3dldmVyLCBmdXp6aW5nIHdvdWxkbiYjMzk7dCBiZSBhYmxlIHRvIHRhcmdldCB0aGUgV1JJVEVfT05DRSBkaXJlY3RseS4gU28sIHdoYXQgdG8gZG8/CgpMZXQmIzM5O3MgbG9vayBhdCB3aGF0IHRoZSBmaXggaXMgYWN0dWFsbHkgYmVpbmcgYXBwbGllZCB0by4gSXQmIzM5O3MgaW4gYGZvbGlvX21pZ3JhdGVfa3NtYC4gVGhhdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHBhZ2UgbWlncmF0aW9uLiBJZiBJICpkbyogbWFyayB0aGlzIGFzIHdvcnRoIGZ1enppbmcsIEkmIzM5O2Qgd2FudCB0byBmb2N1cyBvbiBgZm9saW9fbWlncmF0ZV9rc21gLiBBbmQgaGV5LCBwYWdlIG1pZ3JhdGlvbiBhbmQgS1NNIGFyZSBjb3JlLCBmdW5kYW1lbnRhbCBrZXJuZWwgZmVhdHVyZXMuIFNvIHllYWgsIEkmIzM5O2QgYXJndWUgaXQmIzM5O3Mgd29ydGggZnV6emluZyEgTm93IGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSwgbGV0JiMzOTtzIGxvb2sgYXQgYGZvbGlvX21pZ3JhdGVfa3NtYCBjYWxsZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDE3OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZvbGlvX21pZ3JhdGVfa3NtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgva3NtLmg9OTc9dm9pZCBybWFwX3dhbGtfa3NtKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBybWFwX3dhbGtfY29udHJvbCAqcndjKTtcbmluY2x1ZGUvbGludXgva3NtLmg6OTg6dm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbmluY2x1ZGUvbGludXgva3NtLmgtOTktdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5pbmNsdWRlL2xpbnV4L2tzbS5oPTE1Mz1zdGF0aWMgaW5saW5lIHZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLS1cbmluY2x1ZGUvbGludXgva3NtLmgtMTU3LVxuaW5jbHVkZS9saW51eC9rc20uaDoxNTg6c3RhdGljIGlubGluZSB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqb2xkKVxuaW5jbHVkZS9saW51eC9rc20uaC0xNTkte1xuLS1cbm1tL2tzbS5jPTk2Nz1zdGF0aWMgc3RydWN0IGZvbGlvICprc21fZ2V0X2ZvbGlvKHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlLFxuLS1cbm1tL2tzbS5jLTEwMzItXHQgKiBzdWdnZXN0cyB0aGF0IHRoZSBub2RlIGlzIHN0YWxlOyBidXQgaXQgbWlnaHQgYmUgdW5kZXIgbWlncmF0aW9uLlxubW0va3NtLmM6MTAzMzpcdCAqIFdlIG5lZWQgc21wX3JtYigpLCBtYXRjaGluZyB0aGUgc21wX3dtYigpIGluIGZvbGlvX21pZ3JhdGVfa3NtKCksXG5tbS9rc20uYy0xMDM0LVx0ICogYmVmb3JlIGNoZWNraW5nIHdoZXRoZXIgbm9kZS1cdTAwM2VrcGZuIGhhcyBiZWVuIGNoYW5nZWQuXG4tLVxubW0va3NtLmM9MzI3MT12b2lkIGNvbGxlY3RfcHJvY3Nfa3NtKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8sIGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbm1tL2tzbS5jLTMzMTAtI2lmZGVmIENPTkZJR19NSUdSQVRJT05cbm1tL2tzbS5jOjMzMTE6dm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0va3NtLmMtMzMxMi17XG4tLVxubW0vbWlncmF0ZS5jPTc3NT12b2lkIGZvbGlvX21pZ3JhdGVfZmxhZ3Moc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9taWdyYXRlLmMtODI5LVxubW0vbWlncmF0ZS5jOjgzMDpcdGZvbGlvX21pZ3JhdGVfa3NtKG5ld2ZvbGlvLCBmb2xpbyk7XG5tbS9taWdyYXRlLmMtODMxLVx0LypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTI1CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgZm9saW9fbWlncmF0ZV9mbGFnc2AqKgoKQWxyaWdodCwgc28gdGhlIG1pZ3JhdGlvbiBjb2RlIGNhbGxzIGBmb2xpb19taWdyYXRlX2ZsYWdzYCBmcm9tIHdpdGhpbiBgbW0vbWlncmF0ZS5jYC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgdG8gbXkgbWluZCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aG9zZSBjYWxscy4gS25vd2luZyB0aGUgY2FsbGVyIGZ1bmN0aW9uIGlzIGdvb2QsIGJ1dCBJIG5lZWQgdG8gc2VlICp3aG8qIGlzIGNhbGxpbmcgKnRoYXQqIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBmb2xpb19taWdyYXRlX2ZsYWdzYCBhbmQgY2hlY2sgaXRzIGNhbGwgc2l0ZXMgdG8gZnVsbHkgZ3Jhc3AgaXRzIHJvbGUgaW4gdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdXBzdHJlYW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDE3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZvbGlvX21pZ3JhdGVfZmxhZ3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYWlvLmM9NDYwPXN0YXRpYyBpbnQgYWlvX21pZ3JhdGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZHN0LFxuLS1cbmZzL2Fpby5jLTUxMi1cdGZvbGlvX2NvcHkoZHN0LCBzcmMpO1xuZnMvYWlvLmM6NTEzOlx0Zm9saW9fbWlncmF0ZV9mbGFncyhkc3QsIHNyYyk7XG5mcy9haW8uYy01MTQtXHRCVUdfT04oY3R4LVx1MDAzZXJpbmdfZm9saW9zW2lkeF0gIT0gc3JjKTtcbi0tXG5mcy9odWdldGxiZnMvaW5vZGUuYz0xMDI0PXN0YXRpYyBpbnQgaHVnZXRsYmZzX21pZ3JhdGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvaHVnZXRsYmZzL2lub2RlLmMtMTAzOS1cbmZzL2h1Z2V0bGJmcy9pbm9kZS5jOjEwNDA6XHRmb2xpb19taWdyYXRlX2ZsYWdzKGRzdCwgc3JjKTtcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTEwNDEtXG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9Njk9dm9pZCBzb2Z0bGVhZl9lbnRyeV93YWl0X29uX2xvY2tlZChzb2Z0bGVhZl90IGVudHJ5LCBzcGlubG9ja190ICpwdGwpXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC03MC1cdFx0X19yZWxlYXNlcyhwdGwpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6NzE6dm9pZCBmb2xpb19taWdyYXRlX2ZsYWdzKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtNzItaW50IGZvbGlvX21pZ3JhdGVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbi0tXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oPTI4NT1zdGF0aWMgaW5saW5lIGJvb2wgbHJ1X2dlbl9kZWxfZm9saW8oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBib29sIHJlY2xhaW1pbmcpXG4tLVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC0yOTUtXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oOjI5NjpcdC8qIGZvciBmb2xpb19taWdyYXRlX2ZsYWdzKCkgKi9cbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmgtMjk3LVx0ZmxhZ3MgPSAhcmVjbGFpbWluZyBcdTAwMjZcdTAwMjYgbHJ1X2dlbl9pc19hY3RpdmUobHJ1dmVjLCBnZW4pID8gQklUKFBHX2FjdGl2ZSkgOiAwO1xuLS1cbm1tL21pZ3JhdGUuYz03Mzk9aW50IG1pZ3JhdGVfaHVnZV9wYWdlX21vdmVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbi0tXG5tbS9taWdyYXRlLmMtNzc0LSAqL1xubW0vbWlncmF0ZS5jOjc3NTp2b2lkIGZvbGlvX21pZ3JhdGVfZmxhZ3Moc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL21pZ3JhdGUuYy03NzYte1xuLS1cbm1tL21pZ3JhdGUuYy04NjMtfVxubW0vbWlncmF0ZS5jOjg2NDpFWFBPUlRfU1lNQk9MKGZvbGlvX21pZ3JhdGVfZmxhZ3MpO1xubW0vbWlncmF0ZS5jLTg2NS1cbi0tXG5tbS9taWdyYXRlLmM9ODcwPXN0YXRpYyBpbnQgX19taWdyYXRlX2ZvbGlvKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBzdHJ1Y3QgZm9saW8gKmRzdCxcbi0tXG5tbS9taWdyYXRlLmMtODkwLVxubW0vbWlncmF0ZS5jOjg5MTpcdGZvbGlvX21pZ3JhdGVfZmxhZ3MoZHN0LCBzcmMpO1xubW0vbWlncmF0ZS5jLTg5Mi1cdHJldHVybiAwO1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTEwOT1zdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTIzOC1cdFx0XHRlbHNlXG5tbS9taWdyYXRlX2RldmljZS5jOjEyMzk6XHRcdFx0XHRmb2xpb19taWdyYXRlX2ZsYWdzKG5ld2ZvbGlvLCBmb2xpbyk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDAtXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMTc6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA5MQoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDY0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtUaGlzIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuJiMzNDsgSXQgYXBwZWFycyB0aGUgb25seSBjaGFuZ2VzIGludm9sdmUgYWRkaW5nIGBXUklURV9PTkNFYCB0byB0d28gYXNzaWdubWVudHMgd2l0aGluIHRoZSBga3NtLmNgIGZpbGUuIE15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byBsZWFuIHRvd2FyZHMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBwcm9tcHQgY2xlYXJseSBzdGF0ZXMgSSBzaG91bGQgcmV0dXJuIGZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgdG8gbWFjcm9zIHRoYXQgZG9uJiMzOTt0IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuIGBXUklURV9PTkNFYCBpcyBwcmVjaXNlbHkgdGhhdCDigJMgYSBtZWNoYW5pc20gdG8gZW5zdXJlIGEgc3RvcmUgaGFwcGVucyBleGFjdGx5IG9uY2UgYW5kIHByZXZlbnRzIHRoZSBjb21waWxlciBmcm9tIHJlb3JkZXJpbmcgaXQuIEl0JiMzOTtzIGEgY29uY3VycmVuY3kgc2FmZWd1YXJkLCBub3QgYSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2guIE5vIG5lZWQgdG8gYmUgaGFzdHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIHN1YnRsZSBjaGFuZ2VzIGJ1cmllZCBpbiB0aGUgZGlmZi4gSSYjMzk7bSBzY2FubmluZyB0aHJvdWdoIHRoZSBjb2RlIGNoYW5nZXMgYWdhaW4uLi4gWWVwLCBpdCYjMzk7cyBqdXN0IHRoZSBhZGRpdGlvbiBvZiBgV1JJVEVfT05DRWAgd2hlcmUgSSBzYXcuCgpBbHJpZ2h0LCB3aXRoIHRoYXQgY29uZmlybWVkLCBJJiMzOTttIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LiBSZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS4gTXkgcmVhc29uaW5nIHdpbGwgYmUgY29uY2lzZTogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGBXUklURV9PTkNFYCBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGZvciBkYXRhIHJhY2VzLCB3aGljaCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMTc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgV1JJVEVfT05DRSBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGZvciBkYXRhIHJhY2VzLCB3aGljaCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgV1JJVEVfT05DRSBtYWNyb3MgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIGZvciBkYXRhIHJhY2VzLCB3aGljaCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAxNzoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjJUMTc6MTg6MzAuNjQyOTg3NTczWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5MTgzMTA2MDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmb3IgZGF0YSByYWNlcywgd2hpY2ggZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMTc6MTg6MzAuNjQyOTkyMzczWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAxNDYyOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmM1MzY0OTczZWI0YTk4NTVmNDBkOWZkNWY5NDFhNjllYWJiMTE1NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAyMiAxNzoxODoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jXFxuaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDRcXG4tLS0gYS9tbS9rc20uY1xcbisrKyBiL21tL2tzbS5jXFxuQEAgLTExMTYsNyArMTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4gXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxcbiB7XFxuIFxcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcXHUwMDI2XFx1MDAyNiBQYWdlQW5vbkV4Y2x1c2l2ZShcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UpLCBmb2xpbyk7XFxuLVxcdGZvbGlvLVxcdTAwM2VtYXBwaW5nID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSk7XFxuK1xcdFdSSVRFX09OQ0UoZm9saW8tXFx1MDAzZW1hcHBpbmcsXFxuK1xcdFxcdCAgICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXN0YWJsZV9ub2RlIHwgRk9MSU9fTUFQUElOR19LU00pKTtcXG4gfVxcbiBcXG4gI2lmZGVmIENPTkZJR19TWVNGU1xcbkBAIC0zMzE4LDcgKzMzMTksNyBAQCB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIFxcdHN0YWJsZV9ub2RlID0gZm9saW9fc3RhYmxlX25vZGUoZm9saW8pO1xcbiBcXHRpZiAoc3RhYmxlX25vZGUpIHtcXG4gXFx0XFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVxcdTAwM2VrcGZuICE9IGZvbGlvX3Bmbihmb2xpbyksIGZvbGlvKTtcXG4tXFx0XFx0c3RhYmxlX25vZGUtXFx1MDAzZWtwZm4gPSBmb2xpb19wZm4obmV3Zm9saW8pO1xcbitcXHRcXHRXUklURV9PTkNFKHN0YWJsZV9ub2RlLVxcdTAwM2VrcGZuLCBmb2xpb19wZm4obmV3Zm9saW8pKTtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogbmV3Zm9saW8tXFx1MDAzZW1hcHBpbmcgd2FzIHNldCBpbiBhZHZhbmNlOyBub3cgd2UgbmVlZCBzbXBfd21iKClcXG4gXFx0XFx0ICogdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5ldyBzdGFibGVfbm9kZS1cXHUwMDNla3BmbiBpcyB2aXNpYmxlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjE4OjMxLjg0NTA3NDYzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwNzk4MTAwNTU4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIHByZXZlbnQgY29tcGlsZXIgb3B0aW1pemF0aW9ucyBmb3IgZGF0YSByYWNlcywgd2hpY2ggZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmM1MzY0OTczZWI0YTk4NTVmNDBkOWZkNWY5NDFhNjllYWJiMTE1NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDIyIDE3OjE4OjI5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va3NtLmMgYi9tbS9rc20uY1xuaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDRcbi0tLSBhL21tL2tzbS5jXG4rKysgYi9tbS9rc20uY1xuQEAgLTExMTYsNyArMTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdFx0XHRcdFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxuIHtcbiBcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgUGFnZUFub25FeGNsdXNpdmUoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSksIGZvbGlvKTtcbi1cdGZvbGlvLVx1MDAzZW1hcHBpbmcgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKTtcbitcdFdSSVRFX09OQ0UoZm9saW8tXHUwMDNlbWFwcGluZyxcbitcdFx0ICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSkpO1xuIH1cbiBcbiAjaWZkZWYgQ09ORklHX1NZU0ZTXG5AQCAtMzMxOCw3ICszMzE5LDcgQEAgdm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0c3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7XG4gXHRpZiAoc3RhYmxlX25vZGUpIHtcbiBcdFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gIT0gZm9saW9fcGZuKGZvbGlvKSwgZm9saW8pO1xuLVx0XHRzdGFibGVfbm9kZS1cdTAwM2VrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTtcbitcdFx0V1JJVEVfT05DRShzdGFibGVfbm9kZS1cdTAwM2VrcGZuLCBmb2xpb19wZm4obmV3Zm9saW8pKTtcbiBcdFx0LypcbiBcdFx0ICogbmV3Zm9saW8tXHUwMDNlbWFwcGluZyB3YXMgc2V0IGluIGFkdmFuY2U7IG5vdyB3ZSBuZWVkIHNtcF93bWIoKVxuIFx0XHQgKiB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmV3IHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gaXMgdmlzaWJsZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMTc6MTg6MzEuODQ1MDc2MDMzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc4OTU4NzQ5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1NNIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbW0va3NtLmNgLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIGBmb2xpb19zZXRfc3RhYmxlX25vZGVgIGFuZCBgZm9saW9fbWlncmF0ZV9rc21gLiBJJ20gc2VlaW5nIGNoYW5nZXMgbGlrZSBgZm9saW8tXHUwMDNlbWFwcGluZyA9IC4uLmAgYmVjb21pbmcgYFdSSVRFX09OQ0UoZm9saW8tXHUwMDNlbWFwcGluZywgLi4uKWAgYW5kIGBzdGFibGVfbm9kZS1cdTAwM2VrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKWAgYmVjb21pbmcgYFdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtXHUwMDNla3BmbiwgZm9saW9fcGZuKG5ld2ZvbGlvKSlgLiBJdCdzIHByZXR0eSBjbGVhciB0aGlzIGlzIGp1c3QgYSBgV1JJVEVfT05DRWAgd3JhcHBlci4gVGhleSdyZSB0cnlpbmcgdG8gcHJldmVudCBjb21waWxlciBvcHRpbWl6YXRpb25zIHRoYXQgY291bGQgbGVhZCB0byBzdG9yZSB0ZWFyaW5nIG9yIHJlb3JkZXJpbmcuIEFuZCB0aGUgY29tbWVudCBjb25maXJtcyBpdCwgYmFzaWNhbGx5IGEgbWVtb3J5IG1vZGVsL2NvbmN1cnJlbmN5IGZpeC4gTm8gbmV3IGZlYXR1cmVzLCBubyBsb2dpYyBjaGFuZ2VzLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nPyBUeXBpY2FsbHksIGFkZGluZyBgUkVBRF9PTkNFYC9gV1JJVEVfT05DRWAgaXMgYSBkYXRhIHJhY2UgZml4LCBzbyBpdCBwb2ludHMgdG8gc29tZSBzb3J0IG9mIGJ1ZywgYnV0IHRoZSBjb3JlIGxvZ2ljIHJlbWFpbnMgdGhlIHNhbWUuIExldCdzIHNlZSwgYXJlIHRoZXJlIGFueSBvdGhlciBtb2RpZmljYXRpb25zPyBOb3BlLiBKdXN0IHRoZXNlIGBXUklURV9PTkNFYCBhZGRpdGlvbnMuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIGluc3RydWN0aW9ucyBvbiBkZXRlcm1pbmluZyB3aGV0aGVyIHNvbWV0aGluZyBpcyB3b3J0aCBmdXp6aW5nLiBJIGhhdmUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24gY2hhbmdlcywgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZywgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdywgdW5yZWFjaGFibGUgY29kZSwgb3Igc3BlY2lmaWMgZHJpdmVyLXJlbGF0ZWQgdGVhcmRvd24uXG5cbkFkZGluZyBgV1JJVEVfT05DRWAgZG9lc24ndCAqc3RyaWN0bHkqIGZhbGwgaW50byBcImRlY29yYXRpdmVcIiBvciBcIm51bWVyaWMgY29uc3RhbnRzXCIsIGJ1dCBpdCdzIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBzZW5zZSBvZiBhZGRpbmcgYSBuZXcgZmVhdHVyZSBvciBhbHRlcmluZyB0aGUgY29yZSBhbGdvcml0aG0uIEl0IGp1c3QgZW5mb3JjZXMgYSBzaW5nbGUgc3RvcmUgaW5zdHJ1Y3Rpb24sIHdoaWNoIGlzIGtpbmQgb2Ygc2ltaWxhciB0byB0aGUgaW50ZW50aW9uIGJlaGluZCBudW1lcmljIGNvbnN0YW50cy5cblxuV2FpdCwgS0NTQU4gbWlnaHQgYWN0dWFsbHkgYmUgYWJsZSB0byBjYXRjaCBkYXRhIHJhY2VzIHdpdGhvdXQgdGhlIGBXUklURV9PTkNFYCBhbmQgYWRkaW5nIHRoZW0gbWFrZXMgaXQgaW1wb3NzaWJsZS4gVGhhdCdzIGEgcG9pbnQuXG5cbkJ1dCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgaXMgaXQgKndvcnRoKiBmb2N1c2luZyBmdXp6aW5nIG9uIHRoaXMgc3BlY2lmaWMgcGF0Y2g/IEl0J3MgcmVsYXRlZCB0byB0aGUgY29uY3VycmVuY3kgYXNwZWN0cywgYnV0IGRvZXMgaXQganVzdGlmeSB0aGUgZnV6emluZyBlZmZvcnQ/XG5cbk9rYXksIGxldCdzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBpbnZvbHZlZDogYGZvbGlvX3NldF9zdGFibGVfbm9kZWAgYW5kIGBmb2xpb19taWdyYXRlX2tzbWAuIEJvdGggb2YgdGhlc2UgYXJlIHBhcnQgb2YgS1NNIOKAkyBLZXJuZWwgU2FtZXBhZ2UgTWVyZ2luZy4gSSBoYXZlIHR3byBjaG9pY2VzOiBJIGNhbiBpbnRlcnByZXQgdGhpcyBhcyBhIGNoYW5nZSB3aXRoaW4gdGhlIEtTTSBjb250ZXh0IGFuZCBmb2N1cyBmdXp6aW5nIG9uIGBmb2xpb19taWdyYXRlX2tzbWAgYW5kIHRoZSBLU00gc3Vic3lzdGVtIGluIGdlbmVyYWwsIHJldHVybmluZyBgV29ydGhGdXp6aW5nPXRydWVgLiBPciwgSSBjYW4gZm9jdXMgb24gdGhlIGZhY3QgdGhhdCB0aGlzIGlzICpqdXN0KiBhIGBXUklURV9PTkNFYCBhZGRpdGlvbiBhbmQgc2F5LCBubywgbm90IHdvcnRoIGZvY3VzaW5nIG9uLCByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkhvd2V2ZXIsIHRoZSBtb3JlIEkgdGhpbmsgYWJvdXQgaXQsIHRoZSBtb3JlIEkgcmVhbGl6ZSB0aGF0ICphZGRpbmcqIGBXUklURV9PTkNFYCBpcyBpdHNlbGYgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBjb25jdXJyZW5jeSBiZWhhdmlvciBjaGFuZ2UuIFNvLCByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYCBpcyB0aGUgcmlnaHQgYW5zd2VyLiBXZSdsbCBjb25jZW50cmF0ZSBvbiB0aGUgY29uY3VycmVuY3ktcmVsYXRlZCBhc3BlY3RzIG9mIEtTTSBhbmQgYGZvbGlvX21pZ3JhdGVfa3NtYC4gTm93LCBsZXQncyBsb29rIGF0IGBmb2xpb19taWdyYXRlX2tzbWAgc3BlY2lmaWNhbGx5LCBhbmQgc2VhcmNoIGZvciBpdCB3aXRoaW4gYG1tL2tzbS5jYCB0byBzZWUgaG93IGl0J3MgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjE5OjI5Ljc0MDk1MzQ5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDU2MTMwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb2xpb19taWdyYXRlX2tzbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9rc20uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9rc20uYz05Njc9c3RhdGljIHN0cnVjdCBmb2xpbyAqa3NtX2dldF9mb2xpbyhzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSxcXG4tLVxcbm1tL2tzbS5jLTEwMzItXFx0ICogc3VnZ2VzdHMgdGhhdCB0aGUgbm9kZSBpcyBzdGFsZTsgYnV0IGl0IG1pZ2h0IGJlIHVuZGVyIG1pZ3JhdGlvbi5cXG5tbS9rc20uYzoxMDMzOlxcdCAqIFdlIG5lZWQgc21wX3JtYigpLCBtYXRjaGluZyB0aGUgc21wX3dtYigpIGluIGZvbGlvX21pZ3JhdGVfa3NtKCksXFxubW0va3NtLmMtMTAzNC1cXHQgKiBiZWZvcmUgY2hlY2tpbmcgd2hldGhlciBub2RlLVxcdTAwM2VrcGZuIGhhcyBiZWVuIGNoYW5nZWQuXFxuLS1cXG5tbS9rc20uYz0zMjcxPXZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5tbS9rc20uYy0zMzEwLSNpZmRlZiBDT05GSUdfTUlHUkFUSU9OXFxubW0va3NtLmM6MzMxMTp2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0va3NtLmMtMzMxMi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjE5OjI5Ljc4NTUxOTQ5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0OTUwNjk3MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyBgZm9saW9fc2V0X3N0YWJsZV9ub2RlYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gdGFraW5nIGEgbG9vayBhdCBgZm9saW9fc2V0X3N0YWJsZV9ub2RlYC4gVGhhdCBzdWdnZXN0cyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBmdW5jdGlvbiBvciBtZWNoYW5pc20gd2l0aGluIGEgZm9saW8gc3lzdGVtLCBwcm9iYWJseSByZWxhdGVkIHRvIHNvbWUgYXNwZWN0IG9mIG1haW50YWluaW5nIGEgY29uc2lzdGVudCBhbmQgc3RhYmxlIHJlcHJlc2VudGF0aW9uIG9mIGRhdGEsIGxpa2VseSBhIG5vZGUgd2l0aGluIGEgZ3JhcGggb3IgdHJlZSBzdHJ1Y3R1cmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeTpcblxuKiAgICoqVGhlIGNvbnRleHQ6KiogV2hhdCBpcyBjYWxsaW5nIGl0PyBJcyBpdCBpbnZva2VkIGR1cmluZyBkYXRhIGluZ2VzdGlvbiwgdmFsaWRhdGlvbiwgb3IgcHJvcGFnYXRpb24/IEtub3dpbmcgdGhlIGNhbGxlciBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgaW50ZW5kZWQgdXNlLlxuKiAgICoqVGhlIGlucHV0czoqKiBXaGF0IGFyZ3VtZW50cyBkb2VzIGl0IHRha2U/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgbm9kZSBpZGVudGlmaWVyLCBzb21lIHNvcnQgb2YgdmVyc2lvbmluZyBpbmZvcm1hdGlvbiwgdGltZXN0YW1wcywgZGF0YSBwYXlsb2Fkcywgb3IgcGVyaGFwcyBjb250ZXh0IG1ldGFkYXRhPyBVbmRlcnN0YW5kaW5nIHRoZSBpbnB1dHMgZGVmaW5lcyBpdHMgb3BlcmF0aW5nIHNjb3BlLlxuKiAgICoqVGhlIGNvcmUgbG9naWM6KiogV2hhdCBkb2VzIGl0ICpkbyo/IERvZXMgaXQgdXBkYXRlIGluLXBsYWNlLCBjcmVhdGUgYSBuZXcgbm9kZSwgb3Igc2ltcGx5IGNoZWNrIHRoZSBjdXJyZW50IHN0YXRlIGFnYWluc3Qgc29tZSBjcml0ZXJpYT8gSSdtIGFudGljaXBhdGluZyBzb21lIGZvcm0gb2Ygc3RhdGUgY29tcGFyaXNvbiwgdXBkYXRlLCBvciB2YWxpZGF0aW9uIHRvIGVuc3VyZSBkYXRhIGludGVncml0eSBvciBpbW11dGFiaWxpdHkuXG4qICAgKipUaGUgb3V0cHV0cy9zaWRlIGVmZmVjdHM6KiogV2hhdCBkb2VzIGl0IHJldHVybj8gQW55IHJldHVybiBjb2RlcywgYm9vbGVhbiBmbGFncywgb3IgcG9pbnRlcnMgdG8gYSBuZXcgc3RydWN0dXJlPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbGx5IHByb2JsZW1hdGljIHNpZGUgZWZmZWN0cyB0aGF0IGNvdWxkIGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgZGF0YSBpbmNvbnNpc3RlbmNpZXM/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgaGlkZGVuIGdvdGNoYXMuXG4qICAgKipFZGdlIENhc2VzOioqIEhhdmUgdGhlcmUgYmVlbiBhbnkgcmVwb3J0ZWQgc3RhYmlsaXR5IGlzc3Vlcz8gSXMgdGhlcmUgYSB0ZXN0IHN1aXRlIGZvciB0aGlzIGNvbXBvbmVudCB0aGF0IEkgY2FuIGNoZWNrP1xuXG5CYXNpY2FsbHksIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgdG8ga2VlcCB0aGUgZGF0YSBpbnRlZ3JpdHkgc3RhYmxlLCBhbmQgaG93IHdlbGwgaXQgaXMgZG9pbmcgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxNSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjE5OjU0LjczNjIxOTM5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTU3ODE1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb2xpb19zZXRfc3RhYmxlX25vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0va3NtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0va3NtLmM9MTExMD1zdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpmb2xpb19zdGFibGVfbm9kZShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0va3NtLmMtMTExNC1cXG5tbS9rc20uYzoxMTE1OnN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG5tbS9rc20uYy0xMTE2LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSlcXG4tLVxcbm1tL2tzbS5jPTExMjc9c3RhdGljIGludCByZW1vdmVfc3RhYmxlX25vZGUoc3RydWN0IGtzbV9zdGFibGVfbm9kZSAqc3RhYmxlX25vZGUpXFxuLS1cXG5tbS9rc20uYy0xMTU0LVxcdFxcdCAqL1xcbm1tL2tzbS5jOjExNTU6XFx0XFx0Zm9saW9fc2V0X3N0YWJsZV9ub2RlKGZvbGlvLCBOVUxMKTtcXG5tbS9rc20uYy0xMTU2LVxcdFxcdHJlbW92ZV9ub2RlX2Zyb21fc3RhYmxlX3RyZWUoc3RhYmxlX25vZGUpO1xcbi0tXFxubW0va3NtLmM9MTQ5OD1zdGF0aWMgaW50IHRyeV90b19tZXJnZV9vbmVfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL2tzbS5jLTE1MzgtXFx0XFx0XFx0ICovXFxubW0va3NtLmM6MTUzOTpcXHRcXHRcXHRmb2xpb19zZXRfc3RhYmxlX25vZGUoZm9saW8sIE5VTEwpO1xcbm1tL2tzbS5jLTE1NDAtXFx0XFx0XFx0Zm9saW9fbWFya19hY2Nlc3NlZChmb2xpbyk7XFxuLS1cXG5tbS9rc20uYz0yMDY5PXN0YXRpYyBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfdHJlZV9pbnNlcnQoc3RydWN0IGZvbGlvICprZm9saW8pXFxuLS1cXG5tbS9rc20uYy0yMTQzLVxcbm1tL2tzbS5jOjIxNDQ6XFx0Zm9saW9fc2V0X3N0YWJsZV9ub2RlKGtmb2xpbywgc3RhYmxlX25vZGVfZHVwKTtcXG5tbS9rc20uYy0yMTQ1LVxcbi0tXFxubW0va3NtLmM9MzMxMT12b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9rc20uYy0zMzI5LVxcdFxcdHNtcF93bWIoKTtcXG5tbS9rc20uYzozMzMwOlxcdFxcdGZvbGlvX3NldF9zdGFibGVfbm9kZShmb2xpbywgTlVMTCk7XFxubW0va3NtLmMtMzMzMS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjE5OjU0Ljc4Nzc5OTkxMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMDAxNDY3MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIEltcGFjdCBvZiBhIENvbmN1cnJlbmN5IEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggKm9ubHkqIGFkZHMgYFdSSVRFX09OQ0VgIHRvIGEgY291cGxlIG9mIGFzc2lnbm1lbnRzLiBJdCdzIGEgY29uY3VycmVuY3kgZml4LCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGEgZGF0YSByYWNlLCBidXQgYXQgZmlyc3QgZ2xhbmNlLCBpdCBkb2Vzbid0IHNlZW0gdG8gaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0aW9uIHBhdGhzIHRoYXQgKnJlcXVpcmUqIGZ1enppbmcgY292ZXJhZ2UuIEl04oCZcyBqdXN0IGEgYnVnIGZpeC4gV2FpdCwgaG9sZCBvbiDigJMgZG9lcyBpdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cgYXQgYWxsP1xuXG5MZXQgbWUgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMuLi4gb2theSwgdGhleSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjaGFuZ2VzIGFyZSBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjb25zdGFudHMvbWFjcm9zIHRoYXQgKmRvbid0KiBjaGFuZ2UgZXhlY3V0aW9uLCB1bnJlYWNoYWJsZSBjb2RlLCBvciB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgc3BlY2lhbCBoYXJkd2FyZS4gQWRkaW5nIGBXUklURV9PTkNFYCBpc24ndCAqZXhwbGljaXRseSogbGlzdGVkLCBidXQgaXQgc2VlbXMgdG8gZmFsbCB1bmRlciB0aGUgXCJtYWNyb3MgdGhhdCBkb24ndCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3dcIiBjYXRlZ29yeS4gSXQncyBlc3NlbnRpYWxseSBlbmZvcmNpbmcgYSB2b2xhdGlsZSBzdG9yZS5cblxuQnV0Li4uIHRoaXMgKmlzKiBhIGRhdGEgcmFjZSBmaXguIEEgcmFjZSBjb25kaXRpb24gY291bGQgYmUgc3VidGxlOyBmdXp6aW5nIG1pZ2h0IGJlIHZhbHVhYmxlIHRvIGVpdGhlciBlbnN1cmUgdGhlIGZpeCBpcyBlZmZlY3RpdmUsIG9yIHBvc3NpYmx5IHRvIHRyaWdnZXIgdGhlIHJhY2UuIEhvd2V2ZXIsIGZ1enppbmcgd291bGRuJ3QgYmUgYWJsZSB0byB0YXJnZXQgdGhlIFdSSVRFX09OQ0UgZGlyZWN0bHkuIFNvLCB3aGF0IHRvIGRvP1xuXG5MZXQncyBsb29rIGF0IHdoYXQgdGhlIGZpeCBpcyBhY3R1YWxseSBiZWluZyBhcHBsaWVkIHRvLiBJdCdzIGluIGBmb2xpb19taWdyYXRlX2tzbWAuIFRoYXQncyBjYWxsZWQgZHVyaW5nIHBhZ2UgbWlncmF0aW9uLiBJZiBJICpkbyogbWFyayB0aGlzIGFzIHdvcnRoIGZ1enppbmcsIEknZCB3YW50IHRvIGZvY3VzIG9uIGBmb2xpb19taWdyYXRlX2tzbWAuIEFuZCBoZXksIHBhZ2UgbWlncmF0aW9uIGFuZCBLU00gYXJlIGNvcmUsIGZ1bmRhbWVudGFsIGtlcm5lbCBmZWF0dXJlcy4gU28geWVhaCwgSSdkIGFyZ3VlIGl0J3Mgd29ydGggZnV6emluZyEgTm93IGxldCdzIGp1c3QgbWFrZSBzdXJlLCBsZXQncyBsb29rIGF0IGBmb2xpb19taWdyYXRlX2tzbWAgY2FsbGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczNiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQxNzoyMDowMS43ODc5NDg2NjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MTE2NzUyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb2xpb19taWdyYXRlX2tzbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rc20uaD05Nz12b2lkIHJtYXBfd2Fsa19rc20oc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHJtYXBfd2Fsa19jb250cm9sICpyd2MpO1xcbmluY2x1ZGUvbGludXgva3NtLmg6OTg6dm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG5pbmNsdWRlL2xpbnV4L2tzbS5oLTk5LXZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2tzbS5oPTE1Mz1zdGF0aWMgaW5saW5lIHZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxuaW5jbHVkZS9saW51eC9rc20uaC0xNTctXFxuaW5jbHVkZS9saW51eC9rc20uaDoxNTg6c3RhdGljIGlubGluZSB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqb2xkKVxcbmluY2x1ZGUvbGludXgva3NtLmgtMTU5LXtcXG4tLVxcbm1tL2tzbS5jPTk2Nz1zdGF0aWMgc3RydWN0IGZvbGlvICprc21fZ2V0X2ZvbGlvKHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlLFxcbi0tXFxubW0va3NtLmMtMTAzMi1cXHQgKiBzdWdnZXN0cyB0aGF0IHRoZSBub2RlIGlzIHN0YWxlOyBidXQgaXQgbWlnaHQgYmUgdW5kZXIgbWlncmF0aW9uLlxcbm1tL2tzbS5jOjEwMzM6XFx0ICogV2UgbmVlZCBzbXBfcm1iKCksIG1hdGNoaW5nIHRoZSBzbXBfd21iKCkgaW4gZm9saW9fbWlncmF0ZV9rc20oKSxcXG5tbS9rc20uYy0xMDM0LVxcdCAqIGJlZm9yZSBjaGVja2luZyB3aGV0aGVyIG5vZGUtXFx1MDAzZWtwZm4gaGFzIGJlZW4gY2hhbmdlZC5cXG4tLVxcbm1tL2tzbS5jPTMyNzE9dm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbm1tL2tzbS5jLTMzMTAtI2lmZGVmIENPTkZJR19NSUdSQVRJT05cXG5tbS9rc20uYzozMzExOnZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcXG5tbS9rc20uYy0zMzEyLXtcXG4tLVxcbm1tL21pZ3JhdGUuYz03NzU9dm9pZCBmb2xpb19taWdyYXRlX2ZsYWdzKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9taWdyYXRlLmMtODI5LVxcbm1tL21pZ3JhdGUuYzo4MzA6XFx0Zm9saW9fbWlncmF0ZV9rc20obmV3Zm9saW8sIGZvbGlvKTtcXG5tbS9taWdyYXRlLmMtODMxLVxcdC8qXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjIwOjAzLjM0OTEyMDcxNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNzI5MzE3NzY1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgZm9saW9fbWlncmF0ZV9mbGFnc2AqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgbWlncmF0aW9uIGNvZGUgY2FsbHMgYGZvbGlvX21pZ3JhdGVfZmxhZ3NgIGZyb20gd2l0aGluIGBtbS9taWdyYXRlLmNgLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyB0byBteSBtaW5kIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRob3NlIGNhbGxzLiBLbm93aW5nIHRoZSBjYWxsZXIgZnVuY3Rpb24gaXMgZ29vZCwgYnV0IEkgbmVlZCB0byBzZWUgKndobyogaXMgY2FsbGluZyAqdGhhdCogZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGZvbGlvX21pZ3JhdGVfZmxhZ3NgIGFuZCBjaGVjayBpdHMgY2FsbCBzaXRlcyB0byBmdWxseSBncmFzcCBpdHMgcm9sZSBpbiB0aGUgbWlncmF0aW9uIHByb2Nlc3MuIExldCdzIHNlZSB3aGF0J3MgdXBzdHJlYW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQxNzoyMTo1MC42NDIzMDE2NjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTE2NzI2MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm9saW9fbWlncmF0ZV9mbGFnc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYWlvLmM9NDYwPXN0YXRpYyBpbnQgYWlvX21pZ3JhdGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZHN0LFxcbi0tXFxuZnMvYWlvLmMtNTEyLVxcdGZvbGlvX2NvcHkoZHN0LCBzcmMpO1xcbmZzL2Fpby5jOjUxMzpcXHRmb2xpb19taWdyYXRlX2ZsYWdzKGRzdCwgc3JjKTtcXG5mcy9haW8uYy01MTQtXFx0QlVHX09OKGN0eC1cXHUwMDNlcmluZ19mb2xpb3NbaWR4XSAhPSBzcmMpO1xcbi0tXFxuZnMvaHVnZXRsYmZzL2lub2RlLmM9MTAyND1zdGF0aWMgaW50IGh1Z2V0bGJmc19taWdyYXRlX2ZvbGlvKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbi0tXFxuZnMvaHVnZXRsYmZzL2lub2RlLmMtMTAzOS1cXG5mcy9odWdldGxiZnMvaW5vZGUuYzoxMDQwOlxcdGZvbGlvX21pZ3JhdGVfZmxhZ3MoZHN0LCBzcmMpO1xcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTEwNDEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaD02OT12b2lkIHNvZnRsZWFmX2VudHJ5X3dhaXRfb25fbG9ja2VkKHNvZnRsZWFmX3QgZW50cnksIHNwaW5sb2NrX3QgKnB0bClcXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC03MC1cXHRcXHRfX3JlbGVhc2VzKHB0bCk7XFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6NzE6dm9pZCBmb2xpb19taWdyYXRlX2ZsYWdzKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oLTcyLWludCBmb2xpb19taWdyYXRlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oPTI4NT1zdGF0aWMgaW5saW5lIGJvb2wgbHJ1X2dlbl9kZWxfZm9saW8oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBib29sIHJlY2xhaW1pbmcpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTI5NS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oOjI5NjpcXHQvKiBmb3IgZm9saW9fbWlncmF0ZV9mbGFncygpICovXFxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC0yOTctXFx0ZmxhZ3MgPSAhcmVjbGFpbWluZyBcXHUwMDI2XFx1MDAyNiBscnVfZ2VuX2lzX2FjdGl2ZShscnV2ZWMsIGdlbikgPyBCSVQoUEdfYWN0aXZlKSA6IDA7XFxuLS1cXG5tbS9taWdyYXRlLmM9NzM5PWludCBtaWdyYXRlX2h1Z2VfcGFnZV9tb3ZlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5tbS9taWdyYXRlLmMtNzc0LSAqL1xcbm1tL21pZ3JhdGUuYzo3NzU6dm9pZCBmb2xpb19taWdyYXRlX2ZsYWdzKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vbWlncmF0ZS5jLTc3Ni17XFxuLS1cXG5tbS9taWdyYXRlLmMtODYzLX1cXG5tbS9taWdyYXRlLmM6ODY0OkVYUE9SVF9TWU1CT0woZm9saW9fbWlncmF0ZV9mbGFncyk7XFxubW0vbWlncmF0ZS5jLTg2NS1cXG4tLVxcbm1tL21pZ3JhdGUuYz04NzA9c3RhdGljIGludCBfX21pZ3JhdGVfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZHN0LFxcbi0tXFxubW0vbWlncmF0ZS5jLTg5MC1cXG5tbS9taWdyYXRlLmM6ODkxOlxcdGZvbGlvX21pZ3JhdGVfZmxhZ3MoZHN0LCBzcmMpO1xcbm1tL21pZ3JhdGUuYy04OTItXFx0cmV0dXJuIDA7XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTExMDk9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTIzOC1cXHRcXHRcXHRlbHNlXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjM5OlxcdFxcdFxcdFxcdGZvbGlvX21pZ3JhdGVfZmxhZ3MobmV3Zm9saW8sIGZvbGlvKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDAtXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQxNzoyMTo1Mi4yMzM5ODEwNTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU5MjA3MzMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiVGhpcyBsb29rcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLlwiIEl0IGFwcGVhcnMgdGhlIG9ubHkgY2hhbmdlcyBpbnZvbHZlIGFkZGluZyBgV1JJVEVfT05DRWAgdG8gdHdvIGFzc2lnbm1lbnRzIHdpdGhpbiB0aGUgYGtzbS5jYCBmaWxlLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gbGVhbiB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcHJvbXB0IGNsZWFybHkgc3RhdGVzIEkgc2hvdWxkIHJldHVybiBmYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBtb2RpZmljYXRpb25zIHRvIG1hY3JvcyB0aGF0IGRvbid0IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuIGBXUklURV9PTkNFYCBpcyBwcmVjaXNlbHkgdGhhdCDigJMgYSBtZWNoYW5pc20gdG8gZW5zdXJlIGEgc3RvcmUgaGFwcGVucyBleGFjdGx5IG9uY2UgYW5kIHByZXZlbnRzIHRoZSBjb21waWxlciBmcm9tIHJlb3JkZXJpbmcgaXQuIEl0J3MgYSBjb25jdXJyZW5jeSBzYWZlZ3VhcmQsIG5vdCBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2UuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBObyBuZWVkIHRvIGJlIGhhc3R5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIHN1YnRsZSBjaGFuZ2VzIGJ1cmllZCBpbiB0aGUgZGlmZi4gSSdtIHNjYW5uaW5nIHRocm91Z2ggdGhlIGNvZGUgY2hhbmdlcyBhZ2Fpbi4uLiBZZXAsIGl0J3MganVzdCB0aGUgYWRkaXRpb24gb2YgYFdSSVRFX09OQ0VgIHdoZXJlIEkgc2F3LlxuXG5BbHJpZ2h0LCB3aXRoIHRoYXQgY29uZmlybWVkLCBJJ20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgcmlnaHQgY2FsbCBoZXJlLiBNeSByZWFzb25pbmcgd2lsbCBiZSBjb25jaXNlOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYFdSSVRFX09OQ0VgIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgZm9yIGRhdGEgcmFjZXMsIHdoaWNoIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDkxLCJPdXRwdXRUb2tlbnMiOjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjIxOjU5LjgyNjA1ODAyNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgZm9yIGRhdGEgcmFjZXMsIHdoaWNoIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBwcmV2ZW50IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgZm9yIGRhdGEgcmFjZXMsIHdoaWNoIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDE3OjIxOjU5LjgyNjA4MTgzNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowknr7p[1] Phase: Running StartedAt: 2026-08-22 17:22:10 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowknr7p[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-22 17:22:10 +0000 UTC FinishedAt: 2026-08-22 17:22:16 +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,}