Name: series-workflow6pz8k Phase: Succeeded StartedAt: 2026-08-04 03:52:32 +0000 UTC FinishedAt: 2026-08-04 08:32:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[0] Phase: Succeeded StartedAt: 2026-08-04 03:52:32 +0000 UTC FinishedAt: 2026-08-04 04:49:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 03:52:32 +0000 UTC FinishedAt: 2026-08-04 04:49:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OVERLAY_FS", "FUSE_FS", "FUSE_PASSTHROUGH", "EROFS_FS", "EROFS_FS_PAGE_CACHE_SHARE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OVERLAY_FS", "FUSE_FS", "FUSE_PASSTHROUGH", "EROFS_FS", "EROFS_FS_PAGE_CACHE_SHARE" ], "series_id": "248a562f-c4f2-4e69-a243-a0a2440c3241" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "backing_file_open" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09WRVJMQVlfRlMmIzM0OywKICAgICYjMzQ7RlVTRV9GUyYjMzQ7LAogICAgJiMzNDtGVVNFX1BBU1NUSFJPVUdIJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtiYWNraW5nX2ZpbGVfb3BlbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgYmFja2luZ19maWxlX29wZW5gIHRvIHVzZSBgZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKWAgaW5zdGVhZCBvZiBgXHUwMDI2dXNlcl9maWxlLVx1MDAzZWZfcGF0aGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBWRlMgbG9naWMsIHNwZWNpZmljYWxseSBmb3Igc3RhY2tlZCBmaWxlc3lzdGVtcyBsaWtlIG92ZXJsYXlmcyBvciBmdXNlIHBhc3N0aHJvdWdoLCB3aGVyZSB0aGUgdXNlciBmaWxlIGl0c2VsZiBtaWdodCBiZSBhIGJhY2tpbmcgZmlsZS4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGFuZCBhZmZlY3RzIGhvdyBwYXRocyBhcmUgcmVzb2x2ZWQgZm9yIGJhY2tpbmcgZmlsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDQ6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZjNiYjVkMjk2MjE2ZTQ5OGQxZDdiYWM2ZWVkYmE0NGI1NDVkYzBkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwNDo0ODo0MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9iYWNraW5nLWZpbGUuYyBiL2ZzL2JhY2tpbmctZmlsZS5jXG5pbmRleCAwODBjOTk2OTZjZDBkLi5jYzEwMTE0M2Y5MjEyIDEwMDY0NFxuLS0tIGEvZnMvYmFja2luZy1maWxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2JhY2tpbmctZmlsZS5jXG5AQCAtMzUsNyAmIzQzOzM1LDcgQEAgc3RydWN0IGZpbGUgKmJhY2tpbmdfZmlsZV9vcGVuKGNvbnN0IHN0cnVjdCBmaWxlICp1c2VyX2ZpbGUsIGludCBmbGFncyxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBhdGggKnJlYWxfcGF0aCxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IHBhdGggKnVzZXJfcGF0aCA9IFx1MDAyNnVzZXJfZmlsZS1cdTAwM2VmX3BhdGg7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHBhdGggKnVzZXJfcGF0aCA9IGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSk7XG4gXHRzdHJ1Y3QgZmlsZSAqZjtcbiBcdGludCBlcnJvcjtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1ZFUkxBWV9GUyYjMzQ7LAogICAgJiMzNDtGVVNFX0ZTJiMzNDssCiAgICAmIzM0O0ZVU0VfUEFTU1RIUk9VR0gmIzM0OywKICAgICYjMzQ7RVJPRlNfRlMmIzM0OywKICAgICYjMzQ7RVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhY2tpbmdfZmlsZV9vcGVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIFZGUyBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBzdGFja2VkIGZpbGVzeXN0ZW1zIGxpa2Ugb3ZlcmxheWZzIG9yIGZ1c2UgcGFzc3Rocm91Z2gsIHdoZXJlIHRoZSB1c2VyIGZpbGUgaXRzZWxmIG1pZ2h0IGJlIGEgYmFja2luZyBmaWxlLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIGFmZmVjdHMgaG93IHBhdGhzIGFyZSByZXNvbHZlZCBmb3IgYmFja2luZyBmaWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVmM2JiNWQyOTYyMTZlNDk4ZDFkN2JhYzZlZWRiYTQ0YjU0NWRjMGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDA0OjQ4OjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvYmFja2luZy1maWxlLmMgYi9mcy9iYWNraW5nLWZpbGUuYwppbmRleCAwODBjOTk2OTZjZDBkLi5jYzEwMTE0M2Y5MjEyIDEwMDY0NAotLS0gYS9mcy9iYWNraW5nLWZpbGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9iYWNraW5nLWZpbGUuYwpAQCAtMzUsNyAmIzQzOzM1LDcgQEAgc3RydWN0IGZpbGUgKmJhY2tpbmdfZmlsZV9vcGVuKGNvbnN0IHN0cnVjdCBmaWxlICp1c2VyX2ZpbGUsIGludCBmbGFncywKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcmVhbF9wYXRoLAogCQkJICAgICAgIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKQogewotCWNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSAmYW1wO3VzZXJfZmlsZS0mZ3Q7Zl9wYXRoOwomIzQzOwljb25zdCBzdHJ1Y3QgcGF0aCAqdXNlcl9wYXRoID0gZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKTsKIAlzdHJ1Y3QgZmlsZSAqZjsKIAlpbnQgZXJyb3I7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzMwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaDogQSBRdWljayBEZWVwIERpdmUqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSBtb2RpZnlpbmcgYGZzL2JhY2tpbmctZmlsZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYGJhY2tpbmdfZmlsZV9vcGVuYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHJlcGxhY2VkIGAmYW1wO3VzZXJfZmlsZS0mZ3Q7Zl9wYXRoYCB3aXRoIGEgY2FsbCB0byBgZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBtZWFucyBJIG5lZWQgdG8gZGlnIGludG8gYm90aCBgZnMvYmFja2luZy1maWxlLmNgIGFuZCB0aGF0IGBmaWxlX3VzZXJfcGF0aGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCB0aGF0IHJlcGxhY2VtZW50IGRvZXMuIElzIHRoaXMganVzdCBhIHJlZmFjdG9yaW5nLCBvciBpcyB0aGVyZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGhhcHBlbmluZz8gQW5kIGlmIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGlzIHRoZXJlIGFueSBjaGFuY2UgdGhpcyBpcyBzb21ldGhpbmcgdGhhdCBtaWdodCBiZSBpbnRlcmVzdGluZyBmb3IgZnV6emluZz8gR290dGEgcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIG5ldyBjb2RlIHBhdGhzLCBvciBhIGRpZmZlcmVudCBpbnRlcnByZXRhdGlvbiBvZiBhbiBleGlzdGluZyBvbmUuIElmIHRoZXJl4oCZcyBhbiBhdHRhY2sgc3VyZmFjZSBjaGFuZ2UsIEkgbmVlZCB0byBrbm93LiBUaW1lIHRvIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDQ6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmFja2luZ19maWxlX29wZW4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYmFja2luZy1maWxlLmMtMTktLyoqXG5mcy9iYWNraW5nLWZpbGUuYzoyMDogKiBiYWNraW5nX2ZpbGVfb3BlbiAtIG9wZW4gYSBiYWNraW5nIGZpbGUgZm9yIGtlcm5lbCBpbnRlcm5hbCB1c2VcbmZzL2JhY2tpbmctZmlsZS5jLTIxLSAqIEB1c2VyX2ZpbGU6ICBmaWxlIHRoZSB1c2VyIHJlcXVlc3RlZCB0byBvcGVuXG4tLVxuZnMvYmFja2luZy1maWxlLmMtMzMtICovXG5mcy9iYWNraW5nLWZpbGUuYzozNDpzdHJ1Y3QgZmlsZSAqYmFja2luZ19maWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxuZnMvYmFja2luZy1maWxlLmMtMzUtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwYXRoICpyZWFsX3BhdGgsXG4tLVxuZnMvYmFja2luZy1maWxlLmMtNTUtfVxuZnMvYmFja2luZy1maWxlLmM6NTY6RVhQT1JUX1NZTUJPTF9HUEwoYmFja2luZ19maWxlX29wZW4pO1xuZnMvYmFja2luZy1maWxlLmMtNTctXG4tLVxuZnMvZXJvZnMvaXNoYXJlLmM9OTY9c3RhdGljIGludCBlcm9mc19pc2hhcmVfZmlsZV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2Vyb2ZzL2lzaGFyZS5jLTEwNi1cbmZzL2Vyb2ZzL2lzaGFyZS5jOjEwNzpcdHJmID0gYmFja2luZ19maWxlX29wZW4oZmlsZSwgZmlsZS1cdTAwM2VmX2ZsYWdzIHwgT19OT0FUSU1FLFxuZnMvZXJvZnMvaXNoYXJlLmMtMTA4LVx0XHRcdCAgICAgICBcdTAwMjZzaGFyZWRwYXRoLCBjdXJyZW50X2NyZWQoKSk7XG4tLVxuZnMvZnVzZS9wYXNzdGhyb3VnaC5jPTE1Mj1zdHJ1Y3QgZnVzZV9iYWNraW5nICpmdXNlX3Bhc3N0aHJvdWdoX29wZW4oc3RydWN0IGZpbGUgKmZpbGUsIGludCBiYWNraW5nX2lkKVxuLS1cbmZzL2Z1c2UvcGFzc3Rocm91Z2guYy0xNjktXHQvKiBBbGxvY2F0ZSBiYWNraW5nIGZpbGUgcGVyIGZ1c2UgZmlsZSB0byBzdG9yZSBmdXNlIHBhdGggKi9cbmZzL2Z1c2UvcGFzc3Rocm91Z2guYzoxNzA6XHRiYWNraW5nX2ZpbGUgPSBiYWNraW5nX2ZpbGVfb3BlbihmaWxlLCBmaWxlLVx1MDAzZWZfZmxhZ3MsXG5mcy9mdXNlL3Bhc3N0aHJvdWdoLmMtMTcxLVx0XHRcdFx0XHQgXHUwMDI2ZmItXHUwMDNlZmlsZS1cdTAwM2VmX3BhdGgsIGZiLVx1MDAzZWNyZWQpO1xuLS1cbmZzL292ZXJsYXlmcy9maWxlLmM9Mjg9c3RhdGljIHN0cnVjdCBmaWxlICpvdmxfb3Blbl9yZWFsZmlsZShjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9vdmVybGF5ZnMvZmlsZS5jLTUwLVxuZnMvb3ZlcmxheWZzL2ZpbGUuYzo1MTpcdFx0XHRyZWFsZmlsZSA9IGJhY2tpbmdfZmlsZV9vcGVuKGZpbGUsXG5mcy9vdmVybGF5ZnMvZmlsZS5jLTUyLVx0XHRcdFx0XHRcdCAgICAgZmxhZ3MsIHJlYWxwYXRoLCBjdXJyZW50X2NyZWQoKSk7XG4tLVxuaW5jbHVkZS9saW51eC9iYWNraW5nLWZpbGUuaD0xNT1zdHJ1Y3QgYmFja2luZ19maWxlX2N0eCB7XG4tLVxuaW5jbHVkZS9saW51eC9iYWNraW5nLWZpbGUuaC0yMC1cbmluY2x1ZGUvbGludXgvYmFja2luZy1maWxlLmg6MjE6c3RydWN0IGZpbGUgKmJhY2tpbmdfZmlsZV9vcGVuKGNvbnN0IHN0cnVjdCBmaWxlICp1c2VyX2ZpbGUsIGludCBmbGFncyxcbmluY2x1ZGUvbGludXgvYmFja2luZy1maWxlLmgtMjItXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwYXRoICpyZWFsX3BhdGgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwOAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ2hhbmdlIHRvIGBiYWNraW5nX2ZpbGVfb3BlbmAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBiYWNraW5nX2ZpbGVfb3BlbmAuIFJpZ2h0LCB0aGF0JiMzOTtzIGEga2V5IFZGUyBmdW5jdGlvbi4gSXQmIzM5O3MgdXNlZCBhY3Jvc3MgYSBmZXcgaW1wb3J0YW50IGZpbGVzeXN0ZW1zOiBgZXJvZnNgLCBgZnVzZWAsIGFuZCBgb3ZlcmxheWZzYC4gS25vd2luZyB0aGVzZSBmaWxlc3lzdGVtcywgaXQmIzM5O3MgY2xlYXIgaG93IHRoaXMgZnVuY3Rpb24gaXMgdml0YWwgZm9yIG1hbmFnaW5nIGJhY2tpbmcgZmlsZXMgaW4gZGlmZmVyZW50IGNvbnRleHRzLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBzd2FwcGluZyBvdXQgYCZhbXA7dXNlcl9maWxlLSZndDtmX3BhdGhgIHdpdGggYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgLiBJbnRyaWd1aW5nLiBDbGVhcmx5LCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHBhdGggcmVwcmVzZW50YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlJiMzOTtyZSBtb3ZpbmcgZnJvbSBhIGRpcmVjdCBwb2ludGVyIHRvIHRoZSBgZl9wYXRoYCBtZW1iZXIgb2YgdGhlIGB1c2VyX2ZpbGVgIHN0cnVjdCB0byBzb21ldGhpbmcgaGFuZGxlZCBieSBhIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgZmlsZV91c2VyX3BhdGhgIGFjdHVhbGx5ICpkb2VzKi4gSXMgaXQgcHJvdmlkaW5nIGEgbW9yZSByb2J1c3QgYWJzdHJhY3Rpb24/IElzIGl0IGhhbmRsaW5nIHNvbWUgc3BlY2lhbCBjYXNlcz8gRG9lcyBpdCBjaGFuZ2Ugd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZD8gVGltZSB0byBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJIHN1c3BlY3QgdGhlcmUmIzM5O3MgYSBnb29kIHJlYXNvbiBmb3IgdGhpcyBjaGFuZ2UsIGFuZCBpdCYjMzk7cyBwcm9iYWJseSByZWxhdGVkIHRvIHVzZXItc3BhY2UgaW50ZXJhY3Rpb25zIG9yIHBhdGggbWFuYWdlbWVudCBjb21wbGV4aXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDQ6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmlsZV91c2VyX3BhdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcmMva2VybmVsL3Ryb3VibGVzaG9vdC5jPTc3PXN0YXRpYyB2b2lkIHNob3dfZmF1bHRpbmdfdm1hKHVuc2lnbmVkIGxvbmcgYWRkcmVzcylcbi0tXG5hcmNoL2FyYy9rZXJuZWwvdHJvdWJsZXNob290LmMtOTYtXHRcdFx0LyogWFhYOiBjYW4gd2UgdXNlICVwRCBiZWxvdyBhbmQgZ2V0IHJpZCBvZiBidWY/ICovXG5hcmNoL2FyYy9rZXJuZWwvdHJvdWJsZXNob290LmM6OTc6XHRcdFx0bm0gPSBkX3BhdGgoZmlsZV91c2VyX3BhdGgodm1hLVx1MDAzZXZtX2ZpbGUpLCBidWYsXG5hcmNoL2FyYy9rZXJuZWwvdHJvdWJsZXNob290LmMtOTgtXHRcdFx0XHQgICAgQVJDX1BBVEhfTUFYLTEpO1xuLS1cbmZzL2JhY2tpbmctZmlsZS5jLTMxLSAqIHN0b3JlcyB0aGUgc3RhY2tlZCBmaWxlJiMzOTtzIHBhdGgsIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmdcbmZzL2JhY2tpbmctZmlsZS5jOjMyOiAqIGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoKS5cbmZzL2JhY2tpbmctZmlsZS5jLTMzLSAqL1xuZnMvYmFja2luZy1maWxlLmM9MzQ9c3RydWN0IGZpbGUgKmJhY2tpbmdfZmlsZV9vcGVuKGNvbnN0IHN0cnVjdCBmaWxlICp1c2VyX2ZpbGUsIGludCBmbGFncyxcbi0tXG5mcy9iYWNraW5nLWZpbGUuYy0zNy17XG5mcy9iYWNraW5nLWZpbGUuYzozODpcdGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpO1xuZnMvYmFja2luZy1maWxlLmMtMzktXHRzdHJ1Y3QgZmlsZSAqZjtcbi0tXG5mcy9maWxlX3RhYmxlLmM9NTE9c3RydWN0IGJhY2tpbmdfZmlsZSB7XG4tLVxuZnMvZmlsZV90YWJsZS5jLTYzLVxuZnMvZmlsZV90YWJsZS5jOjY0OmNvbnN0IHN0cnVjdCBwYXRoICpiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGNvbnN0IHN0cnVjdCBmaWxlICpmKVxuZnMvZmlsZV90YWJsZS5jLTY1LXtcbi0tXG5mcy9maWxlX3RhYmxlLmMtNjctfVxuZnMvZmlsZV90YWJsZS5jOjY4OkVYUE9SVF9TWU1CT0xfR1BMKGJhY2tpbmdfZmlsZV91c2VyX3BhdGgpO1xuZnMvZmlsZV90YWJsZS5jLTY5LVxuLS1cbmZzL2ludGVybmFsLmg9MTEzPXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxlX3B1dF93cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvaW50ZXJuYWwuaC0xMTctXHRpZiAodW5saWtlbHkoZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2IEZNT0RFX0JBQ0tJTkcpKVxuZnMvaW50ZXJuYWwuaDoxMTg6XHRcdG1udF9wdXRfd3JpdGVfYWNjZXNzKGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoZmlsZSktXHUwMDNlbW50KTtcbmZzL2ludGVybmFsLmgtMTE5LX1cbi0tXG5mcy9vcGVuLmM9OTEwPXN0YXRpYyBpbmxpbmUgaW50IGZpbGVfZ2V0X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqZilcbi0tXG5mcy9vcGVuLmMtOTIwLVx0aWYgKHVubGlrZWx5KGYtXHUwMDNlZl9tb2RlIFx1MDAyNiBGTU9ERV9CQUNLSU5HKSkge1xuZnMvb3Blbi5jOjkyMTpcdFx0ZXJyb3IgPSBtbnRfZ2V0X3dyaXRlX2FjY2VzcyhiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGYpLVx1MDAzZW1udCk7XG5mcy9vcGVuLmMtOTIyLVx0XHRpZiAodW5saWtlbHkoZXJyb3IpKVxuLS1cbmZzL3Byb2MvYmFzZS5jPTIyMzE9c3RhdGljIGludCBtYXBfZmlsZXNfZ2V0X2xpbmsoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgcGF0aCAqcGF0aCxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0yMjU0LVx0aWYgKHZtYSBcdTAwMjZcdTAwMjYgdm1hLVx1MDAzZXZtX2ZpbGUpIHtcbmZzL3Byb2MvYmFzZS5jOjIyNTU6XHRcdCpwYXRoID0gKmZpbGVfdXNlcl9wYXRoKHZtYS1cdTAwM2V2bV9maWxlKTtcbmZzL3Byb2MvYmFzZS5jLTIyNTYtXHRcdHBhdGhfZ2V0KHBhdGgpO1xuLS1cbmZzL3Byb2Mvbm9tbXUuYz0zMT1zdGF0aWMgaW50IG5vbW11X3JlZ2lvbl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHZtX3JlZ2lvbiAqcmVnaW9uKVxuLS1cbmZzL3Byb2Mvbm9tbXUuYy02MC1cdFx0c2VxX3BhZChtLCAmIzM5OyAmIzM5Oyk7XG5mcy9wcm9jL25vbW11LmM6NjE6XHRcdHNlcV9wYXRoKG0sIGZpbGVfdXNlcl9wYXRoKGZpbGUpLCBcJiMzNDtcJiMzNDspO1xuZnMvcHJvYy9ub21tdS5jLTYyLVx0fVxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz00MTQ9c3RhdGljIHZvaWQgZ2V0X3ZtYV9uYW1lKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy00MzctXHRcdH0gZWxzZSB7XG5mcy9wcm9jL3Rhc2tfbW11LmM6NDM4Olx0XHRcdCpwYXRoID0gZmlsZV91c2VyX3BhdGgodm1hLVx1MDAzZXZtX2ZpbGUpO1xuZnMvcHJvYy90YXNrX21tdS5jLTQzOS1cdFx0fVxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0zNDk1PXN0YXRpYyBpbnQgc2hvd19udW1hX21hcChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTM1MjUtXHRcdHNlcV9wdXRzKG0sIFwmIzM0OyBmaWxlPVwmIzM0Oyk7XG5mcy9wcm9jL3Rhc2tfbW11LmM6MzUyNjpcdFx0c2VxX3BhdGgobSwgZmlsZV91c2VyX3BhdGgoZmlsZSksIFwmIzM0O1xcblxcdD0gXCYjMzQ7KTtcbmZzL3Byb2MvdGFza19tbXUuYy0zNTI3LVx0fSBlbHNlIGlmICh2bWFfaXNfaW5pdGlhbF9oZWFwKHZtYSkpIHtcbi0tXG5mcy9wcm9jL3Rhc2tfbm9tbXUuYz0xMjc9c3RhdGljIGludCBub21tdV92bWFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmZzL3Byb2MvdGFza19ub21tdS5jLTE1OS1cdFx0c2VxX3BhZChtLCAmIzM5OyAmIzM5Oyk7XG5mcy9wcm9jL3Rhc2tfbm9tbXUuYzoxNjA6XHRcdHNlcV9wYXRoKG0sIGZpbGVfdXNlcl9wYXRoKGZpbGUpLCBcJiMzNDtcJiMzNDspO1xuZnMvcHJvYy90YXNrX25vbW11LmMtMTYxLVx0fSBlbHNlIGlmIChtbSBcdTAwMjZcdTAwMjYgdm1hX2lzX2luaXRpYWxfc3RhY2sodm1hKSkge1xuLS1cbmluY2x1ZGUvbGludXgvZnMuaD0yNDkyPXN0cnVjdCBmaWxlICpkZW50cnlfY3JlYXRlKHN0cnVjdCBwYXRoICpwYXRoLCBpbnQgZmxhZ3MsIHVtb2RlX3QgbW9kZSxcbmluY2x1ZGUvbGludXgvZnMuaC0yNDkzLVx0XHRcdCAgIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKTtcbmluY2x1ZGUvbGludXgvZnMuaDoyNDk0OmNvbnN0IHN0cnVjdCBwYXRoICpiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGNvbnN0IHN0cnVjdCBmaWxlICpmKTtcbmluY2x1ZGUvbGludXgvZnMuaC0yNDk1LVxuLS1cbmluY2x1ZGUvbGludXgvZnMuaD0yNTA0PXN0YXRpYyBpbmxpbmUgdm9pZCBiYWNraW5nX2ZpbGVfc2V0X3NlY3VyaXR5KHN0cnVjdCBmaWxlICpmLCB2b2lkICpzZWN1cml0eSlcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUxOC0vKiBHZXQgdGhlIHBhdGggdG8gZGlzcGxheSBpbiAvcHJvYy9cdTAwM2NwaWRcdTAwM2UvbWFwcyAqL1xuaW5jbHVkZS9saW51eC9mcy5oOjI1MTk6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgcGF0aCAqZmlsZV91c2VyX3BhdGgoY29uc3Qgc3RydWN0IGZpbGUgKmYpXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUyMC17XG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUyMS1cdGlmICh1bmxpa2VseShmLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfQkFDS0lORykpXG5pbmNsdWRlL2xpbnV4L2ZzLmg6MjUyMjpcdFx0cmV0dXJuIGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoZik7XG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUyMy1cdHJldHVybiBcdTAwMjZmLVx1MDAzZWZfcGF0aDtcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MjUyNj1zdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBpbm9kZSAqZmlsZV91c2VyX2lub2RlKGNvbnN0IHN0cnVjdCBmaWxlICpmKVxuLS1cbmluY2x1ZGUvbGludXgvZnMuaC0yNTI4LVx0aWYgKHVubGlrZWx5KGYtXHUwMDNlZl9tb2RlIFx1MDAyNiBGTU9ERV9CQUNLSU5HKSlcbmluY2x1ZGUvbGludXgvZnMuaDoyNTI5Olx0XHRyZXR1cm4gZF9pbm9kZShiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGYpLVx1MDAzZWRlbnRyeSk7XG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUzMC1cdHJldHVybiBmaWxlX2lub2RlKGYpO1xuLS1cbmtlcm5lbC9ldmVudHMvY29yZS5jPTk3NTM9c3RhdGljIHZvaWQgcGVyZl9ldmVudF9tbWFwX2V2ZW50KHN0cnVjdCBwZXJmX21tYXBfZXZlbnQgKm1tYXBfZXZlbnQpXG4tLVxua2VybmVsL2V2ZW50cy9jb3JlLmMtOTc5NS1cdFx0ICovXG5rZXJuZWwvZXZlbnRzL2NvcmUuYzo5Nzk2Olx0XHRuYW1lID0gZF9wYXRoKGZpbGVfdXNlcl9wYXRoKGZpbGUpLCBidWYsIFBBVEhfTUFYIC0gc2l6ZW9mKHU2NCkpO1xua2VybmVsL2V2ZW50cy9jb3JlLmMtOTc5Ny1cdFx0aWYgKElTX0VSUihuYW1lKSkge1xuLS1cbmtlcm5lbC90cmFjZS90cmFjZV9vdXRwdXQuYz00MjQ9c3RhdGljIGludCBzZXFfcHJpbnRfdXNlcl9pcChzdHJ1Y3QgdHJhY2Vfc2VxICpzLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5rZXJuZWwvdHJhY2UvdHJhY2Vfb3V0cHV0LmMtNDQzLVx0XHRpZiAoZmlsZSkge1xua2VybmVsL3RyYWNlL3RyYWNlX291dHB1dC5jOjQ0NDpcdFx0XHRyZXQgPSB0cmFjZV9zZXFfcGF0aChzLCBmaWxlX3VzZXJfcGF0aChmaWxlKSk7XG5rZXJuZWwvdHJhY2UvdHJhY2Vfb3V0cHV0LmMtNDQ1LVx0XHRcdGlmIChyZXQpXG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTE3NDk9c3RhdGljIGludCBfX2ZpbGVfaGFzX3Blcm0oY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQsIGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy0xNzY2LVx0XHRiZnNlYyA9IHNlbGludXhfYmFja2luZ19maWxlKGZpbGUpO1xuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jOjE3Njc6XHRcdHBhdGggPSBiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGZpbGUpO1xuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTE3NjgtXHRcdHRzaWRfZmQgPSBiZnNlYy1cdTAwM2V1Zl9zaWQ7XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTM5NzI9c3RhdGljIGludCBfX2ZpbGVfbWFwX3Byb3RfY2hlY2soY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgcHJvdCxcbi0tXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzk4MS1cdFx0aWYgKGJmX3VzZXJfZmlsZSlcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzozOTgyOlx0XHRcdGlub2RlID0gZF9pbm9kZShiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGZpbGUpLVx1MDAzZWRlbnRyeSk7XG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzk4My1cdFx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NjQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVkZTIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBhIHNpZ25pZmljYW50IGFsdGVyYXRpb24gdG8gaG93IGBiYWNraW5nX2ZpbGVfb3BlbmAgaGFuZGxlcyBmaWxlIHBhdGhzLiBJbnN0ZWFkIG9mIGRpcmVjdGx5IHVzaW5nIGAmYW1wO3VzZXJfZmlsZS0mZ3Q7Zl9wYXRoYCwgaXQmIzM5O3Mgbm93IGNhbGxpbmcgYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgLiBUaGlzIGBmaWxlX3VzZXJfcGF0aGAgZnVuY3Rpb24gYWRkcyBhIGNvbmRpdGlvbmFsIOKAkyBpZiB0aGUgYHVzZXJfZmlsZWAgaXRzZWxmIGlzIGEgJiMzNDtiYWNraW5nIGZpbGUmIzM0OyAoYXMgaW5kaWNhdGVkIGJ5IHRoZSBgRk1PREVfQkFDS0lOR2AgZmxhZyksIGl0IHJlY3Vyc2l2ZWx5IGNhbGxzIGBiYWNraW5nX2ZpbGVfdXNlcl9wYXRoYCB0byBnZXQgdGhlIHBhdGguIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZnVuZGFtZW50YWxseSBzaGlmdCBiZWhhdmlvciBpbiB0aGUgVkZTIGxheWVyLCBwYXJ0aWN1bGFybHkgaW1wYWN0aW5nIHN0YWNrZWQgZmlsZXN5c3RlbXMuCgpJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBWRlMgbG9naWMuIFN0YWNrZWQgZmlsZXN5c3RlbXMgbGlrZSBvdmVybGF5ZnMgb3IgZnVzZSBwYXNzdGhyb3VnaCBhcmUgdGhlIG1vc3Qgb2J2aW91cyB0YXJnZXRzIGZvciB0aGlzIGNoYW5nZS4gVGhpcyBpcyBnb2luZyB0byBjaGFuZ2UgdGhlIHBhdGhzIHJldHVybmVkIGZyb20gdGhlIGJhY2tpbmcgZmlsZXN5c3RlbS4KClRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBjb25maXJtIHRoYXQgYGJhY2tpbmdfZmlsZV9vcGVuYCBpcyBhY3R1YWxseSByZWFjaGFibGUsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGlzLCB0aHJvdWdoIGBvdmxfb3Blbl9yZWFsZmlsZWAsIGBmdXNlX3Bhc3N0aHJvdWdoX29wZW5gLCBhbmQgYGVyb2ZzX2lzaGFyZV9maWxlX29wZW5gLiBPa2F5LCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBpbiBgZnMvYmFja2luZy1maWxlLmNgIHRvIGNvbmZpcm0gdGhlIGNvZGUgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2JhY2tpbmctZmlsZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQvKlxuICAgMzpcdCAqIENvbW1vbiBoZWxwZXJzIGZvciBzdGFja2FibGUgZmlsZXN5c3RlbXMgYW5kIGJhY2tpbmcgZmlsZXMuXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBGb3JrZWQgZnJvbSBmcy9vdmVybGF5ZnMvZmlsZS5jLlxuICAgNjpcdCAqXG4gICA3Olx0ICogQ29weXJpZ2h0IChDKSAyMDE3IFJlZCBIYXQsIEluYy5cbiAgIDg6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMjMgQ1RFUkEgTmV0d29ya3MuXG4gICA5Olx0ICovXG4gIDEwOlx0XG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2JhY2tpbmctZmlsZS5oXHUwMDNlXG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvc3BsaWNlLmhcdTAwM2VcbiAgMTQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4gIDE1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2VjdXJpdHkuaFx1MDAzZVxuICAxNjpcdFxuICAxNzpcdCNpbmNsdWRlIFwmIzM0O2ludGVybmFsLmhcJiMzNDtcbiAgMTg6XHRcbiAgMTk6XHQvKipcbiAgMjA6XHQgKiBiYWNraW5nX2ZpbGVfb3BlbiAtIG9wZW4gYSBiYWNraW5nIGZpbGUgZm9yIGtlcm5lbCBpbnRlcm5hbCB1c2VcbiAgMjE6XHQgKiBAdXNlcl9maWxlOiAgZmlsZSB0aGUgdXNlciByZXF1ZXN0ZWQgdG8gb3BlblxuICAyMjpcdCAqIEBmbGFnczpcdG9wZW4gZmxhZ3NcbiAgMjM6XHQgKiBAcmVhbF9wYXRoOlx0cGF0aCBvZiB0aGUgYmFja2luZyBmaWxlXG4gIDI0Olx0ICogQGNyZWQ6XHRjcmVkZW50aWFscyBmb3Igb3BlblxuICAyNTpcdCAqXG4gIDI2Olx0ICogT3BlbiBhIGJhY2tpbmcgZmlsZSBmb3IgYSBzdGFja2FibGUgZmlsZXN5c3RlbSAoZS5nLiwgb3ZlcmxheWZzKS5cbiAgMjc6XHQgKiBAdXNlcl9maWxlLVx1MDAzZWZfcGF0aCBtYXkgYmUgb24gdGhlIHN0YWNrYWJsZSBmaWxlc3lzdGVtIGFuZCBAcmVhbF9wYXRoXG4gIDI4Olx0ICogb24gdGhlIHVuZGVybHlpbmcgZmlsZXN5c3RlbS4gSW4gdGhpcyBjYXNlLCB3ZSB3YW50IHRvIGJlIGFibGUgdG9cbiAgMjk6XHQgKiByZXR1cm4gdGhlIHBhdGggb2YgdGhlIHN0YWNrYWJsZSBmaWxlc3lzdGVtLiBUaGlzIGlzIGRvbmUgYnlcbiAgMzA6XHQgKiBlbWJlZGRpbmcgdGhlIHJldHVybmVkIGZpbGUgaW50byBhIGNvbnRhaW5lciBzdHJ1Y3R1cmUgdGhhdCBhbHNvXG4gIDMxOlx0ICogc3RvcmVzIHRoZSBzdGFja2VkIGZpbGUmIzM5O3MgcGF0aCwgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCB1c2luZ1xuICAzMjpcdCAqIGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoKS5cbiAgMzM6XHQgKi9cbiAgMzQ6XHRzdHJ1Y3QgZmlsZSAqYmFja2luZ19maWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxuICAzNTpcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcmVhbF9wYXRoLFxuICAzNjpcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZClcbiAgMzc6XHR7XG4gIDM4Olx0XHRjb25zdCBzdHJ1Y3QgcGF0aCAqdXNlcl9wYXRoID0gZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKTtcbiAgMzk6XHRcdHN0cnVjdCBmaWxlICpmO1xuICA0MDpcdFx0aW50IGVycm9yO1xuICA0MTpcdFxuICA0MjpcdFx0ZiA9IGFsbG9jX2VtcHR5X2JhY2tpbmdfZmlsZShmbGFncywgY3JlZCwgdXNlcl9maWxlKTtcbiAgNDM6XHRcdGlmIChJU19FUlIoZikpXG4gIDQ0Olx0XHRcdHJldHVybiBmO1xuICA0NTpcdFxuICA0NjpcdFx0cGF0aF9nZXQodXNlcl9wYXRoKTtcbiAgNDc6XHRcdGJhY2tpbmdfZmlsZV9zZXRfdXNlcl9wYXRoKGYsIHVzZXJfcGF0aCk7XG4gIDQ4Olx0XHRlcnJvciA9IHZmc19vcGVuKHJlYWxfcGF0aCwgZik7XG4gIDQ5Olx0XHRpZiAoZXJyb3IpIHtcbiAgNTA6XHRcdFx0ZnB1dChmKTtcbiAgNTE6XHRcdFx0ZiA9IEVSUl9QVFIoZXJyb3IpO1xuICA1MjpcdFx0fVxuICA1MzpcdFxuICA1NDpcdFx0cmV0dXJuIGY7XG4gIDU1Olx0fVxuICA1NjpcdEVYUE9SVF9TWU1CT0xfR1BMKGJhY2tpbmdfZmlsZV9vcGVuKTtcbiAgNTc6XHRcbiAgNTg6XHRzdHJ1Y3QgZmlsZSAqYmFja2luZ190bXBmaWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxuICA1OTpcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcGF0aCAqcmVhbF9wYXJlbnRwYXRoLFxuICA2MDpcdFx0XHRcdFx0ICB1bW9kZV90IG1vZGUsIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKVxuICA2MTpcdHtcbiAgNjI6XHRcdHN0cnVjdCBtbnRfaWRtYXAgKnJlYWxfaWRtYXAgPSBtbnRfaWRtYXAocmVhbF9wYXJlbnRwYXRoLVx1MDAzZW1udCk7XG4gIDYzOlx0XHRjb25zdCBzdHJ1Y3QgcGF0aCAqdXNlcl9wYXRoID0gXHUwMDI2dXNlcl9maWxlLVx1MDAzZWZfcGF0aDtcbiAgNjQ6XHRcdHN0cnVjdCBmaWxlICpmO1xuICA2NTpcdFx0aW50IGVycm9yO1xuICA2NjpcdFxuICA2NzpcdFx0ZiA9IGFsbG9jX2VtcHR5X2JhY2tpbmdfZmlsZShmbGFncywgY3JlZCwgdXNlcl9maWxlKTtcbiAgNjg6XHRcdGlmIChJU19FUlIoZikpXG4gIDY5Olx0XHRcdHJldHVybiBmO1xuICA3MDpcdFxuICA3MTpcdFx0cGF0aF9nZXQodXNlcl9wYXRoKTtcbiAgNzI6XHRcdGJhY2tpbmdfZmlsZV9zZXRfdXNlcl9wYXRoKGYsIHVzZXJfcGF0aCk7XG4gIDczOlx0XHRlcnJvciA9IHZmc190bXBmaWxlKHJlYWxfaWRtYXAsIHJlYWxfcGFyZW50cGF0aCwgZiwgbW9kZSk7XG4gIDc0Olx0XHRpZiAoZXJyb3IpIHtcbiAgNzU6XHRcdFx0ZnB1dChmKTtcbiAgNzY6XHRcdFx0ZiA9IEVSUl9QVFIoZXJyb3IpO1xuICA3NzpcdFx0fVxuICA3ODpcdFx0cmV0dXJuIGY7XG4gIDc5Olx0fVxuICA4MDpcdEVYUE9SVF9TWU1CT0woYmFja2luZ190bXBmaWxlX29wZW4pO1xuICA4MTpcdFxuICA4MjpcdHN0cnVjdCBiYWNraW5nX2FpbyB7XG4gIDgzOlx0XHRzdHJ1Y3Qga2lvY2IgaW9jYjtcbiAgODQ6XHRcdHJlZmNvdW50X3QgcmVmO1xuICA4NTpcdFx0c3RydWN0IGtpb2NiICpvcmlnX2lvY2I7XG4gIDg2Olx0XHQvKiB1c2VkIGZvciBhaW8gY29tcGxldGlvbiAqL1xuICA4NzpcdFx0dm9pZCAoKmVuZF93cml0ZSkoc3RydWN0IGtpb2NiICppb2NiLCBzc2l6ZV90KTtcbiAgODg6XHRcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xuICA4OTpcdFx0bG9uZyByZXM7XG4gIDkwOlx0fTtcbiAgOTE6XHRcbiAgOTI6XHRzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmJhY2tpbmdfYWlvX2NhY2hlcDtcbiAgOTM6XHRcbiAgOTQ6XHQjZGVmaW5lIEJBQ0tJTkdfSU9DQl9NQVNLIFxcXG4gIDk1Olx0XHQoSU9DQl9OT1dBSVQgfCBJT0NCX0hJUFJJIHwgSU9DQl9EU1lOQyB8IElPQ0JfU1lOQyB8IElPQ0JfQVBQRU5EKVxuICA5NjpcdFxuICA5NzpcdHN0YXRpYyByd2ZfdCBpb2NiX3RvX3J3X2ZsYWdzKGludCBmbGFncylcbiAgOTg6XHR7XG4gIDk5Olx0XHRyZXR1cm4gKF9fZm9yY2UgcndmX3QpKGZsYWdzIFx1MDAyNiBCQUNLSU5HX0lPQ0JfTUFTSyk7XG4gMTAwOlx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NTQKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgQmFja2luZyBGaWxlIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGFjY2Vzc2luZyBgJmFtcDt1c2VyX2ZpbGUtJmd0O2ZfcGF0aGAuIEkgc2VlIHRoYXQgaW1tZWRpYXRlbHksIGFuZCBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4KCkhvbGQgb24gYSBzZWNvbmQuLi4gSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZy4gYGJhY2tpbmdfdG1wZmlsZV9vcGVuYCAqYWxzbyogaGFzIGBjb25zdCBzdHJ1Y3QgcGF0aCAqdXNlcl9wYXRoID0gJmFtcDt1c2VyX2ZpbGUtJmd0O2ZfcGF0aDtgLiBJbnRlcmVzdGluZy4gQnV0IHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYGJhY2tpbmdfZmlsZV9vcGVuYC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHJpZ2h0LiBEZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBzY3J1dGluaXppbmcuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBmb2N1cyBmdXp6aW5nIGVmZm9ydHMgb24gYGJhY2tpbmdfZmlsZV9vcGVuYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgbmV3IGNvZGUgcGF0aCBpcy4gTm93LCBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgd2hpY2ggZmlsZXN5c3RlbXMgbWlnaHQgYmUgaW1wYWN0ZWQuIEl0IGxvb2tzIGxpa2UgYGJhY2tpbmdfZmlsZV9vcGVuYCBpcyB1c2VkIGJ5IG92ZXJsYXlmcywgZnVzZSwgYW5kIGVyb2ZzLiBJIHNob3VsZCBwcm9iYWJseSBlbmFibGUgdGhvc2UgY29uZmlncyB0byBlbnN1cmUgY29tcHJlaGVuc2l2ZSB0ZXN0aW5nLgoKVGltZSB0byBwdWxsIHVwIHRoZSBLY29uZmlncyBmb3IgZWFjaDogYGZzL292ZXJsYXlmcy9LY29uZmlnYCwgYGZzL2Z1c2UvS2NvbmZpZ2AsIGFuZCBgZnMvZXJvZnMvS2NvbmZpZ2AuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgT1ZFUkxBWV9GUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9vdmVybGF5ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvb3ZlcmxheWZzL0tjb25maWc6Mjpjb25maWcgT1ZFUkxBWV9GU1xuZnMvb3ZlcmxheWZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O092ZXJsYXkgZmlsZXN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctMTQtXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoxNTpjb25maWcgT1ZFUkxBWV9GU19SRURJUkVDVF9ESVJcbmZzL292ZXJsYXlmcy9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtPdmVybGF5ZnM6IHR1cm4gb24gcmVkaXJlY3QgZGlyZWN0b3J5IGZlYXR1cmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTMwLVxuZnMvb3ZlcmxheWZzL0tjb25maWc6MzE6Y29uZmlnIE9WRVJMQVlfRlNfUkVESVJFQ1RfQUxXQVlTX0ZPTExPV1xuZnMvb3ZlcmxheWZzL0tjb25maWctMzItXHRib29sIFwmIzM0O092ZXJsYXlmczogZm9sbG93IHJlZGlyZWN0cyBldmVuIGlmIHJlZGlyZWN0cyBhcmUgdHVybmVkIG9mZlwmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTQ1LVxuZnMvb3ZlcmxheWZzL0tjb25maWc6NDY6Y29uZmlnIE9WRVJMQVlfRlNfSU5ERVhcbmZzL292ZXJsYXlmcy9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtPdmVybGF5ZnM6IHR1cm4gb24gaW5vZGVzIGluZGV4IGZlYXR1cmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTY0LVxuZnMvb3ZlcmxheWZzL0tjb25maWc6NjU6Y29uZmlnIE9WRVJMQVlfRlNfTkZTX0VYUE9SVFxuZnMvb3ZlcmxheWZzL0tjb25maWctNjYtXHRib29sIFwmIzM0O092ZXJsYXlmczogdHVybiBvbiBORlMgZXhwb3J0IGZlYXR1cmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTkyLVxuZnMvb3ZlcmxheWZzL0tjb25maWc6OTM6Y29uZmlnIE9WRVJMQVlfRlNfWElOT19BVVRPXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy05NC1cdGJvb2wgXCYjMzQ7T3ZlcmxheWZzOiBhdXRvIGVuYWJsZSBpbm9kZSBudW1iZXIgbWFwcGluZ1wmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTExMC1cbmZzL292ZXJsYXlmcy9LY29uZmlnOjExMTpjb25maWcgT1ZFUkxBWV9GU19NRVRBQ09QWVxuZnMvb3ZlcmxheWZzL0tjb25maWctMTEyLVx0Ym9vbCBcJiMzNDtPdmVybGF5ZnM6IHR1cm4gb24gbWV0YWRhdGEgb25seSBjb3B5IHVwIGZlYXR1cmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTEyOC1cbmZzL292ZXJsYXlmcy9LY29uZmlnOjEyOTpjb25maWcgT1ZFUkxBWV9GU19ERUJVR1xuZnMvb3ZlcmxheWZzL0tjb25maWctMTMwLVx0Ym9vbCBcJiMzNDtPdmVybGF5ZnM6IHR1cm4gb24gZXh0cmEgZGVidWdnaW5nIGNoZWNrc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTA3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczoKCioqRXhhbWluaW5nIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSB0aGluayBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBvdXQgdGhlIEtjb25maWcgZmlsZXMgZm9yIGJvdGggdGhlIEZVU0UgZmlsZXN5c3RlbSAoYGZzL2Z1c2UvS2NvbmZpZ2ApIGFuZCB0aGUgRVJPRlMgZmlsZXN5c3RlbSAoYGZzL2Vyb2ZzL0tjb25maWdgKS4gVGhhdCYjMzk7cyB0aGUgc3RhbmRhcmQgcGxhY2UgdG8gZGVmaW5lIGFuZCBkb2N1bWVudCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc28gaXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGZpbGVzeXN0ZW1zIGFyZSBjb25maWd1cmVkIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBvbiB0aGluZ3MgbGlrZSB3aGV0aGVyIHRoZSBtb2R1bGVzIGFyZSBidWlsdCBpbiBvciBsb2FkYWJsZSwgYW55IHNwZWNpZmljIGZlYXR1cmVzIHRoYXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBtYXliZSBldmVuIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgZXNwZWNpYWxseSBpZiBJIHdhbnQgdG8gbG9vayBhdCBtYWtpbmcgY2hhbmdlcyB0byB0aGUgYnVpbGQgcHJvY2VzcyBvciBtb2RpZnlpbmcgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlVTRV9GUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXG5mcy9mdXNlL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MTAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVJPRlNfRlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvS2NvbmZpZy0yLVxuZnMvZXJvZnMvS2NvbmZpZzozOmNvbmZpZyBFUk9GU19GU1xuZnMvZXJvZnMvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7RVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy00OS1cbmZzL2Vyb2ZzL0tjb25maWc6NTA6Y29uZmlnIEVST0ZTX0ZTX0RFQlVHXG5mcy9lcm9mcy9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtFUk9GUyBkZWJ1Z2dpbmcgZmVhdHVyZVwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctNTktXG5mcy9lcm9mcy9LY29uZmlnOjYwOmNvbmZpZyBFUk9GU19GU19YQVRUUlxuZnMvZXJvZnMvS2NvbmZpZy02MS1cdGJvb2wgXCYjMzQ7RVJPRlMgZXh0ZW5kZWQgYXR0cmlidXRlc1wmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctNzAtXG5mcy9lcm9mcy9LY29uZmlnOjcxOmNvbmZpZyBFUk9GU19GU19QT1NJWF9BQ0xcbmZzL2Vyb2ZzL0tjb25maWctNzItXHRib29sIFwmIzM0O0VST0ZTIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy04NC1cbmZzL2Vyb2ZzL0tjb25maWc6ODU6Y29uZmlnIEVST0ZTX0ZTX1NFQ1VSSVRZXG5mcy9lcm9mcy9LY29uZmlnLTg2LVx0Ym9vbCBcJiMzNDtFUk9GUyBTZWN1cml0eSBMYWJlbHNcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTk3LVxuZnMvZXJvZnMvS2NvbmZpZzo5ODpjb25maWcgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVcbmZzL2Vyb2ZzL0tjb25maWctOTktXHRib29sIFwmIzM0O0ZpbGUtYmFja2VkIEVST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTExLVxuZnMvZXJvZnMvS2NvbmZpZzoxMTI6Y29uZmlnIEVST0ZTX0ZTX1pJUFxuZnMvZXJvZnMvS2NvbmZpZy0xMTMtXHRib29sIFwmIzM0O0VST0ZTIERhdGEgQ29tcHJlc3Npb24gU3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTIxLVxuZnMvZXJvZnMvS2NvbmZpZzoxMjI6Y29uZmlnIEVST0ZTX0ZTX1pJUF9MWk1BXG5mcy9lcm9mcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7RVJPRlMgTFpNQSBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTMzLVxuZnMvZXJvZnMvS2NvbmZpZzoxMzQ6Y29uZmlnIEVST0ZTX0ZTX1pJUF9MWk1BX0RFRkFVTFRfTUFYX1NUUkVBTVNcbmZzL2Vyb2ZzL0tjb25maWctMTM1LVx0aW50IFwmIzM0O0VST0ZTIExaTUEgZGVmYXVsdCBtYXhpbXVtIGRlY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTQ3LVxuZnMvZXJvZnMvS2NvbmZpZzoxNDg6Y29uZmlnIEVST0ZTX0ZTX1pJUF9ERUZMQVRFXG5mcy9lcm9mcy9LY29uZmlnLTE0OS1cdGJvb2wgXCYjMzQ7RVJPRlMgREVGTEFURSBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTU4LVxuZnMvZXJvZnMvS2NvbmZpZzoxNTk6Y29uZmlnIEVST0ZTX0ZTX1pJUF9aU1REXG5mcy9lcm9mcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7RVJPRlMgWnN0YW5kYXJkIGNvbXByZXNzZWQgZGF0YSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy0xNjktXG5mcy9lcm9mcy9LY29uZmlnOjE3MDpjb25maWcgRVJPRlNfRlNfWklQX0FDQ0VMXG5mcy9lcm9mcy9LY29uZmlnLTE3MS1cdGJvb2wgXCYjMzQ7RVJPRlMgaGFyZHdhcmUgZGVjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy0xODMtXG5mcy9lcm9mcy9LY29uZmlnOjE4NDpjb25maWcgRVJPRlNfRlNfUENQVV9LVEhSRUFEXG5mcy9lcm9mcy9LY29uZmlnLTE4NS1cdGJvb2wgXCYjMzQ7RVJPRlMgcGVyLWNwdSBkZWNvbXByZXNzaW9uIGt0aHJlYWQgd29ya2Vyc1wmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTkyLVxuZnMvZXJvZnMvS2NvbmZpZzoxOTM6Y29uZmlnIEVST0ZTX0ZTX1BDUFVfS1RIUkVBRF9ISVBSSVxuZnMvZXJvZnMvS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O0VST0ZTIGhpZ2ggcHJpb3JpdHkgcGVyLUNQVSBrdGhyZWFkIHdvcmtlcnNcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTIwMi1cbmZzL2Vyb2ZzL0tjb25maWc6MjAzOmNvbmZpZyBFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cdGJvb2wgXCYjMzQ7RVJPRlMgcGFnZSBjYWNoZSBzaGFyZSBzdXBwb3J0IChleHBlcmltZW50YWwpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NTcKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipGVVNFX1BBU1NUSFJPVUdIOiBBIFF1aWNrIFJlY2FwKioKCk9rYXksIHNvIEkmIzM5O20gcHJvY2Vzc2luZyB0aGlzIGNvbmZpZyBwYXJhbWV0ZXIuLi4gV2FpdCBhIG1pbnV0ZS4gYEZVU0VfUEFTU1RIUk9VR0hgLiBJdCYjMzk7cyBoaXR0aW5nIG1lIG5vdy4gVGhhdCYjMzk7cyAqdGhlKiBjb25maWd1cmF0aW9uIG9wdGlvbiBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBGVVNFIHBhc3N0aHJvdWdoLCBpc24mIzM5O3QgaXQ/IEp1c3QgbWFraW5nIHN1cmUgSSYjMzk7bSBvbiB0aGUgcmlnaHQgdHJhY2sgaGVyZSwgdGhpcyBkZXRlcm1pbmVzIGhvdyB0aGUgZmlsZSBzeXN0ZW0gcGFzc2VzIGNhbGxzIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgc3lzdGVtLiBObyBhbWJpZ3VpdHksIGdvdCBpdC4gR29vZCB0byBjbGFyaWZ5IHRoZXNlIHNtYWxsIGRldGFpbHMgYXMgSSBtb3ZlIHRocm91Z2ggbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlVTRV9QQVNTVEhST1VHSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWc9NDM9Y29uZmlnIEZVU0VfREFYXG4tLVxuZnMvZnVzZS9LY29uZmlnLTU2LVxuZnMvZnVzZS9LY29uZmlnOjU3OmNvbmZpZyBGVVNFX1BBU1NUSFJPVUdIXG5mcy9mdXNlL0tjb25maWctNTgtXHRib29sIFwmIzM0O0ZVU0UgcGFzc3Rocm91Z2ggb3BlcmF0aW9ucyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDA4CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqSW5pdGlhbCBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEJhc2VkIG9uIHRoZSBwcm9qZWN0IHJlcXVpcmVtZW50cyBhbmQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLCBpdCBsb29rcyBsaWtlIHdlIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGtleSBmaWxlc3lzdGVtIG9wdGlvbnMuIEkmIzM5O20gdGhpbmtpbmcgd2UgYWJzb2x1dGVseSAqbXVzdCogZW5hYmxlIGBPVkVSTEFZX0ZTYC4gVGhpcyBpcyBwcmV0dHkgY3J1Y2lhbCBmb3IgYWxsb3dpbmcgcmVhZC13cml0ZSBsYXllcnMgb24gdG9wIG9mIG91ciBiYXNlIHJlYWQtb25seSBzeXN0ZW0uIFRoZW4sIGZvciB2ZXJzYXRpbGl0eSBhbmQgaW50ZWdyYXRpb24gd2l0aCB1c2VyLXNwYWNlIHRvb2xzLCBgRlVTRV9GU2AgYW5kIGBGVVNFX1BBU1NUSFJPVUdIYCBzZWVtIGxpa2Ugc29saWQgY2hvaWNlcy4gV2UmIzM5O2xsIG5lZWQgdGhvc2UgaWYgd2Ugd2FudCB0byBkeW5hbWljYWxseSBtb3VudCBmaWxlc3lzdGVtcyBkZWZpbmVkIGluIHVzZXIgc3BhY2UgYW5kIGhhbmRsZSBwYXNzdGhyb3VnaCBvcGVyYXRpb25zLiBGaW5hbGx5LCBmb3IgdGhlIHJlYWQtb25seSBmb3VuZGF0aW9uYWwgbGF5ZXIsIHdlIGFyZSBnb2luZyB0byBlbmFibGUgYEVST0ZTX0ZTYCBhbmQgaXRzIGJhY2tpbmcgZmlsZSBvcHRpb246IGBFUk9GU19GU19CQUNLRURfQllfRklMRWAuCgpCdXQgYmVmb3JlIHdlIG1vdmUgZm9yd2FyZCBvbiBFUk9GUywgaXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggY3JpdGljYWwgY29tcG9uZW50cyBsaWtlIGZpbGVzeXN0ZW1zLiBMZXQmIzM5O3Mgbm90IG1ha2UgYW55IGFzc3VtcHRpb25zLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGBmcy9lcm9mcy9pc2hhcmUuY2AuIE15IG9iamVjdGl2ZSBpcyB0byB2ZXJpZnkgaWYgdGhlcmUmIzM5O3MgYW55IGltcGxpY2l0IGRlcGVuZGVuY3kgb24gYEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVgLCBiZWZvcmUgd2UgbW92ZSBmb3J3YXJkIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24uIFRoYXQgd2lsbCBuZWVkIHRvIGJlIGxvb2tlZCBhdCBiZWZvcmUgd2UgbW92ZSBmb3J3YXJkLiBXZSBkbyBub3Qgd2FudCBhbnkgc3VycHJpc2VzIG9yIHJlZ3Jlc3Npb25zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcm9mc19pc2hhcmVfZmlsZV9vcGVuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL2lzaGFyZS5jPTgyPXZvaWQgZXJvZnNfaXNoYXJlX2ZyZWVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9lcm9mcy9pc2hhcmUuYy05NS1cbmZzL2Vyb2ZzL2lzaGFyZS5jOjk2OnN0YXRpYyBpbnQgZXJvZnNfaXNoYXJlX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Vyb2ZzL2lzaGFyZS5jLTk3LXtcbi0tXG5mcy9lcm9mcy9pc2hhcmUuYz0xNTc9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBlcm9mc19pc2hhcmVfZm9wcyA9IHtcbmZzL2Vyb2ZzL2lzaGFyZS5jOjE1ODpcdC5vcGVuXHRcdD0gZXJvZnNfaXNoYXJlX2ZpbGVfb3BlbixcbmZzL2Vyb2ZzL2lzaGFyZS5jLTE1OS1cdC5sbHNlZWtcdFx0PSBnZW5lcmljX2ZpbGVfbGxzZWVrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDYyNAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkVyb2ZzIGFuZCBQYWdlIENhY2hlIFNoYXJpbmcqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGBmcy9lcm9mcy9pc2hhcmUuY2AgaXMgaW52b2x2ZWQgd2hlbiBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAgaXMgYWN0aXZlLiBUaGF0IHNvdW5kcyByaWdodCwgZ2l2ZW4gdGhlIG5hbWUuIEJ1dCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgY29tcGlsYXRpb24gZGVwZW5kZW5jeS4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGBmcy9lcm9mcy9NYWtlZmlsZWAuIEkmIzM5O2xsIGNvbmZpcm0gaG93IHRoYXQgcHJlcHJvY2Vzc29yIG1hY3JvIHRyYW5zbGF0ZXMgdG8gb2JqZWN0IGZpbGUgaW5jbHVzaW9uLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbiBpdCBjb250cm9scyB0aGUgYnVpbGQgcHJvY2VzcyB0aGVyZSwgYnV0IEkgbmVlZCB0byBzZWUgdGhlIGV4YWN0IGNvbmRpdGlvbmFscyB0byBiZSBzdXJlLiBKdXN0IG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoZSBidWlsZCByZWNpcGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzaGFyZS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL01ha2VmaWxlPTExPWVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKSAmIzQzOz0gZmlsZWlvLm9cbmZzL2Vyb2ZzL01ha2VmaWxlOjEyOmVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUpICYjNDM7PSBpc2hhcmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDkxMwoJCQkJCQkJb3V0cHV0OiAxNjUKCQkJCQkJCXRob3VnaHRzOiAxODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEVST0ZTIEZpbGVzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gdGhlIGtleSB0YWtlYXdheSBoZXJlIGlzIHRoYXQgd2UgKm5lZWQqIGBFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFYC4gTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlOiBgT1ZFUkxBWV9GU2AsIGBGVVNFX0ZTYCwgYEZVU0VfUEFTU1RIUk9VR0hgLCBgRVJPRlNfRlNgLCBhbmQgb2YgY291cnNlLCB0aGUgb25lIHdlJiMzOTtyZSB6ZXJvaW5nIGluIG9uLCBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAuIFRoaXMgaXMgYWxsIHRvIHN1cHBvcnQgcGFnZSBjYWNoZSBzaGFyaW5nIHdpdGggYSBiYWNraW5nIGZpbGUuCgpUaGUgY29yZSBmdW5jdGlvbiB0byBleGFtaW5lIGlzIGBiYWNraW5nX2ZpbGVfb3BlbmAuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgYWN0aW9uIGlzLiBUaGUgcGF0Y2ggaXMgc3VidGx5IGNoYW5naW5nIHRoZSBWRlMgbG9naWMuIFNwZWNpZmljYWxseSwgaXQmIzM5O3Mgc3dhcHBpbmcgb3V0IGAmYW1wO3VzZXJfZmlsZS0mZ3Q7Zl9wYXRoYCBmb3IgYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgIHdpdGhpbiBgYmFja2luZ19maWxlX29wZW5gLiBGcm9tIGEgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCB0aGlzIGlzIGEgc2lnbmlmaWNhbnQgYWx0ZXJhdGlvbi4gVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBjaGFuZ2U/IEl0IGRpcmVjdGx5IGltcGFjdHMgaG93IHBhdGggcmVzb2x1dGlvbiBmdW5jdGlvbnMgd2l0aGluIHN0YWNrZWQgZmlsZXN5c3RlbXMuIFRoaW5rIE92ZXJsYXlGUyBhbmQgRlVTRSBwYXNzdGhyb3VnaCwgd2hlcmUgdGhlICYjMzQ7dXNlciBmaWxlJiMzNDsgY291bGQsIGluIGZhY3QsIGJlIGEgbG93ZXItbGV2ZWwgYmFja2luZyBmaWxlLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBhZmZlY3QgaG93IHBhdGhzIGFyZSByZXNvbHZlZC4KCldlJiMzOTtyZSByZXNvbHZpbmcgYSBwYXRoIGZyb20gdXNlciBzcGFjZSwgYW5kIHVzaW5nIGl0IGZvciBiYWNraW5nIHRoZSBlcm9mcyBwYWdlIGNhY2hlLgoKVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1ZFUkxBWV9GUyYjMzQ7LAogICAgJiMzNDtGVVNFX0ZTJiMzNDssCiAgICAmIzM0O0ZVU0VfUEFTU1RIUk9VR0gmIzM0OywKICAgICYjMzQ7RVJPRlNfRlMmIzM0OywKICAgICYjMzQ7RVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhY2tpbmdfZmlsZV9vcGVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIFZGUyBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBzdGFja2VkIGZpbGVzeXN0ZW1zIGxpa2Ugb3ZlcmxheWZzIG9yIGZ1c2UgcGFzc3Rocm91Z2gsIHdoZXJlIHRoZSB1c2VyIGZpbGUgaXRzZWxmIG1pZ2h0IGJlIGEgYmFja2luZyBmaWxlLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIGFmZmVjdHMgaG93IHBhdGhzIGFyZSByZXNvbHZlZCBmb3IgYmFja2luZyBmaWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1ZFUkxBWV9GUyYjMzQ7LAogICAgJiMzNDtGVVNFX0ZTJiMzNDssCiAgICAmIzM0O0ZVU0VfUEFTU1RIUk9VR0gmIzM0OywKICAgICYjMzQ7RVJPRlNfRlMmIzM0OywKICAgICYjMzQ7RVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhY2tpbmdfZmlsZV9vcGVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIFZGUyBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBzdGFja2VkIGZpbGVzeXN0ZW1zIGxpa2Ugb3ZlcmxheWZzIG9yIGZ1c2UgcGFzc3Rocm91Z2gsIHdoZXJlIHRoZSB1c2VyIGZpbGUgaXRzZWxmIG1pZ2h0IGJlIGEgYmFja2luZyBmaWxlLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIGFmZmVjdHMgaG93IHBhdGhzIGFyZSByZXNvbHZlZCBmb3IgYmFja2luZyBmaWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ4OjQ1LjYyNzYzODMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYyNjAyODE5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1ZFUkxBWV9GU1wiLFxuICAgIFwiRlVTRV9GU1wiLFxuICAgIFwiRlVTRV9QQVNTVEhST1VHSFwiLFxuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiYWNraW5nX2ZpbGVfb3BlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcXHUwMDI2dXNlcl9maWxlLVxcdTAwM2VmX3BhdGhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gVkZTIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZm9yIHN0YWNrZWQgZmlsZXN5c3RlbXMgbGlrZSBvdmVybGF5ZnMgb3IgZnVzZSBwYXNzdGhyb3VnaCwgd2hlcmUgdGhlIHVzZXIgZmlsZSBpdHNlbGYgbWlnaHQgYmUgYSBiYWNraW5nIGZpbGUuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBhbmQgYWZmZWN0cyBob3cgcGF0aHMgYXJlIHJlc29sdmVkIGZvciBiYWNraW5nIGZpbGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNDo0ODo0NS42Mjc2NDM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDMwMDUzODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWYzYmI1ZDI5NjIxNmU0OThkMWQ3YmFjNmVlZGJhNDRiNTQ1ZGMwZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDA0OjQ4OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2JhY2tpbmctZmlsZS5jIGIvZnMvYmFja2luZy1maWxlLmNcXG5pbmRleCAwODBjOTk2OTZjZDBkLi5jYzEwMTE0M2Y5MjEyIDEwMDY0NFxcbi0tLSBhL2ZzL2JhY2tpbmctZmlsZS5jXFxuKysrIGIvZnMvYmFja2luZy1maWxlLmNcXG5AQCAtMzUsNyArMzUsNyBAQCBzdHJ1Y3QgZmlsZSAqYmFja2luZ19maWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxcbiBcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBhdGggKnJlYWxfcGF0aCxcXG4gXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKVxcbiB7XFxuLVxcdGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBcXHUwMDI2dXNlcl9maWxlLVxcdTAwM2VmX3BhdGg7XFxuK1xcdGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpO1xcbiBcXHRzdHJ1Y3QgZmlsZSAqZjtcXG4gXFx0aW50IGVycm9yO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDg6NDcuMDU4NDMwOTY5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQ4Mjk0Nzk3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1ZFUkxBWV9GU1wiLFxuICAgIFwiRlVTRV9GU1wiLFxuICAgIFwiRlVTRV9QQVNTVEhST1VHSFwiLFxuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiYWNraW5nX2ZpbGVfb3BlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcXHUwMDI2dXNlcl9maWxlLVxcdTAwM2VmX3BhdGhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gVkZTIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZm9yIHN0YWNrZWQgZmlsZXN5c3RlbXMgbGlrZSBvdmVybGF5ZnMgb3IgZnVzZSBwYXNzdGhyb3VnaCwgd2hlcmUgdGhlIHVzZXIgZmlsZSBpdHNlbGYgbWlnaHQgYmUgYSBiYWNraW5nIGZpbGUuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBhbmQgYWZmZWN0cyBob3cgcGF0aHMgYXJlIHJlc29sdmVkIGZvciBiYWNraW5nIGZpbGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZjNiYjVkMjk2MjE2ZTQ5OGQxZDdiYWM2ZWVkYmE0NGI1NDVkYzBkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwNDo0ODo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2JhY2tpbmctZmlsZS5jIGIvZnMvYmFja2luZy1maWxlLmNcbmluZGV4IDA4MGM5OTY5NmNkMGQuLmNjMTAxMTQzZjkyMTIgMTAwNjQ0XG4tLS0gYS9mcy9iYWNraW5nLWZpbGUuY1xuKysrIGIvZnMvYmFja2luZy1maWxlLmNcbkBAIC0zNSw3ICszNSw3IEBAIHN0cnVjdCBmaWxlICpiYWNraW5nX2ZpbGVfb3Blbihjb25zdCBzdHJ1Y3QgZmlsZSAqdXNlcl9maWxlLCBpbnQgZmxhZ3MsXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwYXRoICpyZWFsX3BhdGgsXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoO1xuK1x0Y29uc3Qgc3RydWN0IHBhdGggKnVzZXJfcGF0aCA9IGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSk7XG4gXHRzdHJ1Y3QgZmlsZSAqZjtcbiBcdGludCBlcnJvcjtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ4OjQ3LjA1ODQzMjA1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzg1NTQzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2g6IEEgUXVpY2sgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIG1vZGlmeWluZyBgZnMvYmFja2luZy1maWxlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIHRoZSBgYmFja2luZ19maWxlX29wZW5gIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhleSd2ZSByZXBsYWNlZCBgXHUwMDI2dXNlcl9maWxlLVx1MDAzZWZfcGF0aGAgd2l0aCBhIGNhbGwgdG8gYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBrbm93IHRoYXQgbWVhbnMgSSBuZWVkIHRvIGRpZyBpbnRvIGJvdGggYGZzL2JhY2tpbmctZmlsZS5jYCBhbmQgdGhhdCBgZmlsZV91c2VyX3BhdGhgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgdGhhdCByZXBsYWNlbWVudCBkb2VzLiBJcyB0aGlzIGp1c3QgYSByZWZhY3RvcmluZywgb3IgaXMgdGhlcmUgYSBmdW5jdGlvbmFsIGNoYW5nZSBoYXBwZW5pbmc/IEFuZCBpZiBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGlzIHRoZXJlIGFueSBjaGFuY2UgdGhpcyBpcyBzb21ldGhpbmcgdGhhdCBtaWdodCBiZSBpbnRlcmVzdGluZyBmb3IgZnV6emluZz8gR290dGEgcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIG5ldyBjb2RlIHBhdGhzLCBvciBhIGRpZmZlcmVudCBpbnRlcnByZXRhdGlvbiBvZiBhbiBleGlzdGluZyBvbmUuIElmIHRoZXJl4oCZcyBhbiBhdHRhY2sgc3VyZmFjZSBjaGFuZ2UsIEkgbmVlZCB0byBrbm93LiBUaW1lIHRvIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzMywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ4OjUxLjI5Njk4ODI1OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg2MDI4MzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJhY2tpbmdfZmlsZV9vcGVuXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2JhY2tpbmctZmlsZS5jLTE5LS8qKlxcbmZzL2JhY2tpbmctZmlsZS5jOjIwOiAqIGJhY2tpbmdfZmlsZV9vcGVuIC0gb3BlbiBhIGJhY2tpbmcgZmlsZSBmb3Iga2VybmVsIGludGVybmFsIHVzZVxcbmZzL2JhY2tpbmctZmlsZS5jLTIxLSAqIEB1c2VyX2ZpbGU6ICBmaWxlIHRoZSB1c2VyIHJlcXVlc3RlZCB0byBvcGVuXFxuLS1cXG5mcy9iYWNraW5nLWZpbGUuYy0zMy0gKi9cXG5mcy9iYWNraW5nLWZpbGUuYzozNDpzdHJ1Y3QgZmlsZSAqYmFja2luZ19maWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxcbmZzL2JhY2tpbmctZmlsZS5jLTM1LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcmVhbF9wYXRoLFxcbi0tXFxuZnMvYmFja2luZy1maWxlLmMtNTUtfVxcbmZzL2JhY2tpbmctZmlsZS5jOjU2OkVYUE9SVF9TWU1CT0xfR1BMKGJhY2tpbmdfZmlsZV9vcGVuKTtcXG5mcy9iYWNraW5nLWZpbGUuYy01Ny1cXG4tLVxcbmZzL2Vyb2ZzL2lzaGFyZS5jPTk2PXN0YXRpYyBpbnQgZXJvZnNfaXNoYXJlX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2Vyb2ZzL2lzaGFyZS5jLTEwNi1cXG5mcy9lcm9mcy9pc2hhcmUuYzoxMDc6XFx0cmYgPSBiYWNraW5nX2ZpbGVfb3BlbihmaWxlLCBmaWxlLVxcdTAwM2VmX2ZsYWdzIHwgT19OT0FUSU1FLFxcbmZzL2Vyb2ZzL2lzaGFyZS5jLTEwOC1cXHRcXHRcXHQgICAgICAgXFx1MDAyNnNoYXJlZHBhdGgsIGN1cnJlbnRfY3JlZCgpKTtcXG4tLVxcbmZzL2Z1c2UvcGFzc3Rocm91Z2guYz0xNTI9c3RydWN0IGZ1c2VfYmFja2luZyAqZnVzZV9wYXNzdGhyb3VnaF9vcGVuKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgYmFja2luZ19pZClcXG4tLVxcbmZzL2Z1c2UvcGFzc3Rocm91Z2guYy0xNjktXFx0LyogQWxsb2NhdGUgYmFja2luZyBmaWxlIHBlciBmdXNlIGZpbGUgdG8gc3RvcmUgZnVzZSBwYXRoICovXFxuZnMvZnVzZS9wYXNzdGhyb3VnaC5jOjE3MDpcXHRiYWNraW5nX2ZpbGUgPSBiYWNraW5nX2ZpbGVfb3BlbihmaWxlLCBmaWxlLVxcdTAwM2VmX2ZsYWdzLFxcbmZzL2Z1c2UvcGFzc3Rocm91Z2guYy0xNzEtXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZmYi1cXHUwMDNlZmlsZS1cXHUwMDNlZl9wYXRoLCBmYi1cXHUwMDNlY3JlZCk7XFxuLS1cXG5mcy9vdmVybGF5ZnMvZmlsZS5jPTI4PXN0YXRpYyBzdHJ1Y3QgZmlsZSAqb3ZsX29wZW5fcmVhbGZpbGUoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9vdmVybGF5ZnMvZmlsZS5jLTUwLVxcbmZzL292ZXJsYXlmcy9maWxlLmM6NTE6XFx0XFx0XFx0cmVhbGZpbGUgPSBiYWNraW5nX2ZpbGVfb3BlbihmaWxlLFxcbmZzL292ZXJsYXlmcy9maWxlLmMtNTItXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBmbGFncywgcmVhbHBhdGgsIGN1cnJlbnRfY3JlZCgpKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmFja2luZy1maWxlLmg9MTU9c3RydWN0IGJhY2tpbmdfZmlsZV9jdHgge1xcbi0tXFxuaW5jbHVkZS9saW51eC9iYWNraW5nLWZpbGUuaC0yMC1cXG5pbmNsdWRlL2xpbnV4L2JhY2tpbmctZmlsZS5oOjIxOnN0cnVjdCBmaWxlICpiYWNraW5nX2ZpbGVfb3Blbihjb25zdCBzdHJ1Y3QgZmlsZSAqdXNlcl9maWxlLCBpbnQgZmxhZ3MsXFxuaW5jbHVkZS9saW51eC9iYWNraW5nLWZpbGUuaC0yMi1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBhdGggKnJlYWxfcGF0aCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDg6NTIuODgzMDIzMDY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2NTAyNzc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENoYW5nZSB0byBgYmFja2luZ19maWxlX29wZW5gKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyB0b3VjaGluZyBgYmFja2luZ19maWxlX29wZW5gLiBSaWdodCwgdGhhdCdzIGEga2V5IFZGUyBmdW5jdGlvbi4gSXQncyB1c2VkIGFjcm9zcyBhIGZldyBpbXBvcnRhbnQgZmlsZXN5c3RlbXM6IGBlcm9mc2AsIGBmdXNlYCwgYW5kIGBvdmVybGF5ZnNgLiBLbm93aW5nIHRoZXNlIGZpbGVzeXN0ZW1zLCBpdCdzIGNsZWFyIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHZpdGFsIGZvciBtYW5hZ2luZyBiYWNraW5nIGZpbGVzIGluIGRpZmZlcmVudCBjb250ZXh0cy5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBzd2FwcGluZyBvdXQgYFx1MDAyNnVzZXJfZmlsZS1cdTAwM2VmX3BhdGhgIHdpdGggYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgLiBJbnRyaWd1aW5nLiBDbGVhcmx5LCB3ZSdyZSBkZWFsaW5nIHdpdGggcGF0aCByZXByZXNlbnRhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UncmUgbW92aW5nIGZyb20gYSBkaXJlY3QgcG9pbnRlciB0byB0aGUgYGZfcGF0aGAgbWVtYmVyIG9mIHRoZSBgdXNlcl9maWxlYCBzdHJ1Y3QgdG8gc29tZXRoaW5nIGhhbmRsZWQgYnkgYSBmdW5jdGlvbi4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGZpbGVfdXNlcl9wYXRoYCBhY3R1YWxseSAqZG9lcyouIElzIGl0IHByb3ZpZGluZyBhIG1vcmUgcm9idXN0IGFic3RyYWN0aW9uPyBJcyBpdCBoYW5kbGluZyBzb21lIHNwZWNpYWwgY2FzZXM/IERvZXMgaXQgY2hhbmdlIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQ/IFRpbWUgdG8gZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJIHN1c3BlY3QgdGhlcmUncyBhIGdvb2QgcmVhc29uIGZvciB0aGlzIGNoYW5nZSwgYW5kIGl0J3MgcHJvYmFibHkgcmVsYXRlZCB0byB1c2VyLXNwYWNlIGludGVyYWN0aW9ucyBvciBwYXRoIG1hbmFnZW1lbnQgY29tcGxleGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDg6NTcuMzQ4MDUzNTQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjUxNTcyNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmlsZV91c2VyX3BhdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcmMva2VybmVsL3Ryb3VibGVzaG9vdC5jPTc3PXN0YXRpYyB2b2lkIHNob3dfZmF1bHRpbmdfdm1hKHVuc2lnbmVkIGxvbmcgYWRkcmVzcylcXG4tLVxcbmFyY2gvYXJjL2tlcm5lbC90cm91Ymxlc2hvb3QuYy05Ni1cXHRcXHRcXHQvKiBYWFg6IGNhbiB3ZSB1c2UgJXBEIGJlbG93IGFuZCBnZXQgcmlkIG9mIGJ1Zj8gKi9cXG5hcmNoL2FyYy9rZXJuZWwvdHJvdWJsZXNob290LmM6OTc6XFx0XFx0XFx0bm0gPSBkX3BhdGgoZmlsZV91c2VyX3BhdGgodm1hLVxcdTAwM2V2bV9maWxlKSwgYnVmLFxcbmFyY2gvYXJjL2tlcm5lbC90cm91Ymxlc2hvb3QuYy05OC1cXHRcXHRcXHRcXHQgICAgQVJDX1BBVEhfTUFYLTEpO1xcbi0tXFxuZnMvYmFja2luZy1maWxlLmMtMzEtICogc3RvcmVzIHRoZSBzdGFja2VkIGZpbGUncyBwYXRoLCB3aGljaCBjYW4gYmUgcmV0cmlldmVkIHVzaW5nXFxuZnMvYmFja2luZy1maWxlLmM6MzI6ICogYmFja2luZ19maWxlX3VzZXJfcGF0aCgpLlxcbmZzL2JhY2tpbmctZmlsZS5jLTMzLSAqL1xcbmZzL2JhY2tpbmctZmlsZS5jPTM0PXN0cnVjdCBmaWxlICpiYWNraW5nX2ZpbGVfb3Blbihjb25zdCBzdHJ1Y3QgZmlsZSAqdXNlcl9maWxlLCBpbnQgZmxhZ3MsXFxuLS1cXG5mcy9iYWNraW5nLWZpbGUuYy0zNy17XFxuZnMvYmFja2luZy1maWxlLmM6Mzg6XFx0Y29uc3Qgc3RydWN0IHBhdGggKnVzZXJfcGF0aCA9IGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSk7XFxuZnMvYmFja2luZy1maWxlLmMtMzktXFx0c3RydWN0IGZpbGUgKmY7XFxuLS1cXG5mcy9maWxlX3RhYmxlLmM9NTE9c3RydWN0IGJhY2tpbmdfZmlsZSB7XFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNjMtXFxuZnMvZmlsZV90YWJsZS5jOjY0OmNvbnN0IHN0cnVjdCBwYXRoICpiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGNvbnN0IHN0cnVjdCBmaWxlICpmKVxcbmZzL2ZpbGVfdGFibGUuYy02NS17XFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNjctfVxcbmZzL2ZpbGVfdGFibGUuYzo2ODpFWFBPUlRfU1lNQk9MX0dQTChiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKTtcXG5mcy9maWxlX3RhYmxlLmMtNjktXFxuLS1cXG5mcy9pbnRlcm5hbC5oPTExMz1zdGF0aWMgaW5saW5lIHZvaWQgZmlsZV9wdXRfd3JpdGVfYWNjZXNzKHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvaW50ZXJuYWwuaC0xMTctXFx0aWYgKHVubGlrZWx5KGZpbGUtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IEZNT0RFX0JBQ0tJTkcpKVxcbmZzL2ludGVybmFsLmg6MTE4OlxcdFxcdG1udF9wdXRfd3JpdGVfYWNjZXNzKGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoZmlsZSktXFx1MDAzZW1udCk7XFxuZnMvaW50ZXJuYWwuaC0xMTktfVxcbi0tXFxuZnMvb3Blbi5jPTkxMD1zdGF0aWMgaW5saW5lIGludCBmaWxlX2dldF93cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKmYpXFxuLS1cXG5mcy9vcGVuLmMtOTIwLVxcdGlmICh1bmxpa2VseShmLVxcdTAwM2VmX21vZGUgXFx1MDAyNiBGTU9ERV9CQUNLSU5HKSkge1xcbmZzL29wZW4uYzo5MjE6XFx0XFx0ZXJyb3IgPSBtbnRfZ2V0X3dyaXRlX2FjY2VzcyhiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGYpLVxcdTAwM2VtbnQpO1xcbmZzL29wZW4uYy05MjItXFx0XFx0aWYgKHVubGlrZWx5KGVycm9yKSlcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTIyMzE9c3RhdGljIGludCBtYXBfZmlsZXNfZ2V0X2xpbmsoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgcGF0aCAqcGF0aCxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTIyNTQtXFx0aWYgKHZtYSBcXHUwMDI2XFx1MDAyNiB2bWEtXFx1MDAzZXZtX2ZpbGUpIHtcXG5mcy9wcm9jL2Jhc2UuYzoyMjU1OlxcdFxcdCpwYXRoID0gKmZpbGVfdXNlcl9wYXRoKHZtYS1cXHUwMDNldm1fZmlsZSk7XFxuZnMvcHJvYy9iYXNlLmMtMjI1Ni1cXHRcXHRwYXRoX2dldChwYXRoKTtcXG4tLVxcbmZzL3Byb2Mvbm9tbXUuYz0zMT1zdGF0aWMgaW50IG5vbW11X3JlZ2lvbl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHZtX3JlZ2lvbiAqcmVnaW9uKVxcbi0tXFxuZnMvcHJvYy9ub21tdS5jLTYwLVxcdFxcdHNlcV9wYWQobSwgJyAnKTtcXG5mcy9wcm9jL25vbW11LmM6NjE6XFx0XFx0c2VxX3BhdGgobSwgZmlsZV91c2VyX3BhdGgoZmlsZSksIFxcXCJcXFwiKTtcXG5mcy9wcm9jL25vbW11LmMtNjItXFx0fVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTQxND1zdGF0aWMgdm9pZCBnZXRfdm1hX25hbWUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtNDM3LVxcdFxcdH0gZWxzZSB7XFxuZnMvcHJvYy90YXNrX21tdS5jOjQzODpcXHRcXHRcXHQqcGF0aCA9IGZpbGVfdXNlcl9wYXRoKHZtYS1cXHUwMDNldm1fZmlsZSk7XFxuZnMvcHJvYy90YXNrX21tdS5jLTQzOS1cXHRcXHR9XFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MzQ5NT1zdGF0aWMgaW50IHNob3dfbnVtYV9tYXAoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTM1MjUtXFx0XFx0c2VxX3B1dHMobSwgXFxcIiBmaWxlPVxcXCIpO1xcbmZzL3Byb2MvdGFza19tbXUuYzozNTI2OlxcdFxcdHNlcV9wYXRoKG0sIGZpbGVfdXNlcl9wYXRoKGZpbGUpLCBcXFwiXFxcXG5cXFxcdD0gXFxcIik7XFxuZnMvcHJvYy90YXNrX21tdS5jLTM1MjctXFx0fSBlbHNlIGlmICh2bWFfaXNfaW5pdGlhbF9oZWFwKHZtYSkpIHtcXG4tLVxcbmZzL3Byb2MvdGFza19ub21tdS5jPTEyNz1zdGF0aWMgaW50IG5vbW11X3ZtYV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbm9tbXUuYy0xNTktXFx0XFx0c2VxX3BhZChtLCAnICcpO1xcbmZzL3Byb2MvdGFza19ub21tdS5jOjE2MDpcXHRcXHRzZXFfcGF0aChtLCBmaWxlX3VzZXJfcGF0aChmaWxlKSwgXFxcIlxcXCIpO1xcbmZzL3Byb2MvdGFza19ub21tdS5jLTE2MS1cXHR9IGVsc2UgaWYgKG1tIFxcdTAwMjZcXHUwMDI2IHZtYV9pc19pbml0aWFsX3N0YWNrKHZtYSkpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaD0yNDkyPXN0cnVjdCBmaWxlICpkZW50cnlfY3JlYXRlKHN0cnVjdCBwYXRoICpwYXRoLCBpbnQgZmxhZ3MsIHVtb2RlX3QgbW9kZSxcXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjQ5My1cXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCk7XFxuaW5jbHVkZS9saW51eC9mcy5oOjI0OTQ6Y29uc3Qgc3RydWN0IHBhdGggKmJhY2tpbmdfZmlsZV91c2VyX3BhdGgoY29uc3Qgc3RydWN0IGZpbGUgKmYpO1xcbmluY2x1ZGUvbGludXgvZnMuaC0yNDk1LVxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oPTI1MDQ9c3RhdGljIGlubGluZSB2b2lkIGJhY2tpbmdfZmlsZV9zZXRfc2VjdXJpdHkoc3RydWN0IGZpbGUgKmYsIHZvaWQgKnNlY3VyaXR5KVxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oLTI1MTgtLyogR2V0IHRoZSBwYXRoIHRvIGRpc3BsYXkgaW4gL3Byb2MvXFx1MDAzY3BpZFxcdTAwM2UvbWFwcyAqL1xcbmluY2x1ZGUvbGludXgvZnMuaDoyNTE5OnN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IHBhdGggKmZpbGVfdXNlcl9wYXRoKGNvbnN0IHN0cnVjdCBmaWxlICpmKVxcbmluY2x1ZGUvbGludXgvZnMuaC0yNTIwLXtcXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUyMS1cXHRpZiAodW5saWtlbHkoZi1cXHUwMDNlZl9tb2RlIFxcdTAwMjYgRk1PREVfQkFDS0lORykpXFxuaW5jbHVkZS9saW51eC9mcy5oOjI1MjI6XFx0XFx0cmV0dXJuIGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoZik7XFxuaW5jbHVkZS9saW51eC9mcy5oLTI1MjMtXFx0cmV0dXJuIFxcdTAwMjZmLVxcdTAwM2VmX3BhdGg7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MjUyNj1zdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBpbm9kZSAqZmlsZV91c2VyX2lub2RlKGNvbnN0IHN0cnVjdCBmaWxlICpmKVxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oLTI1MjgtXFx0aWYgKHVubGlrZWx5KGYtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IEZNT0RFX0JBQ0tJTkcpKVxcbmluY2x1ZGUvbGludXgvZnMuaDoyNTI5OlxcdFxcdHJldHVybiBkX2lub2RlKGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoZiktXFx1MDAzZWRlbnRyeSk7XFxuaW5jbHVkZS9saW51eC9mcy5oLTI1MzAtXFx0cmV0dXJuIGZpbGVfaW5vZGUoZik7XFxuLS1cXG5rZXJuZWwvZXZlbnRzL2NvcmUuYz05NzUzPXN0YXRpYyB2b2lkIHBlcmZfZXZlbnRfbW1hcF9ldmVudChzdHJ1Y3QgcGVyZl9tbWFwX2V2ZW50ICptbWFwX2V2ZW50KVxcbi0tXFxua2VybmVsL2V2ZW50cy9jb3JlLmMtOTc5NS1cXHRcXHQgKi9cXG5rZXJuZWwvZXZlbnRzL2NvcmUuYzo5Nzk2OlxcdFxcdG5hbWUgPSBkX3BhdGgoZmlsZV91c2VyX3BhdGgoZmlsZSksIGJ1ZiwgUEFUSF9NQVggLSBzaXplb2YodTY0KSk7XFxua2VybmVsL2V2ZW50cy9jb3JlLmMtOTc5Ny1cXHRcXHRpZiAoSVNfRVJSKG5hbWUpKSB7XFxuLS1cXG5rZXJuZWwvdHJhY2UvdHJhY2Vfb3V0cHV0LmM9NDI0PXN0YXRpYyBpbnQgc2VxX3ByaW50X3VzZXJfaXAoc3RydWN0IHRyYWNlX3NlcSAqcywgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5rZXJuZWwvdHJhY2UvdHJhY2Vfb3V0cHV0LmMtNDQzLVxcdFxcdGlmIChmaWxlKSB7XFxua2VybmVsL3RyYWNlL3RyYWNlX291dHB1dC5jOjQ0NDpcXHRcXHRcXHRyZXQgPSB0cmFjZV9zZXFfcGF0aChzLCBmaWxlX3VzZXJfcGF0aChmaWxlKSk7XFxua2VybmVsL3RyYWNlL3RyYWNlX291dHB1dC5jLTQ0NS1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTE3NDk9c3RhdGljIGludCBfX2ZpbGVfaGFzX3Blcm0oY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQsIGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTE3NjYtXFx0XFx0YmZzZWMgPSBzZWxpbnV4X2JhY2tpbmdfZmlsZShmaWxlKTtcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM6MTc2NzpcXHRcXHRwYXRoID0gYmFja2luZ19maWxlX3VzZXJfcGF0aChmaWxlKTtcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMTc2OC1cXHRcXHR0c2lkX2ZkID0gYmZzZWMtXFx1MDAzZXVmX3NpZDtcXG4tLVxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYz0zOTcyPXN0YXRpYyBpbnQgX19maWxlX21hcF9wcm90X2NoZWNrKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25nIHByb3QsXFxuLS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzk4MS1cXHRcXHRpZiAoYmZfdXNlcl9maWxlKVxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzozOTgyOlxcdFxcdFxcdGlub2RlID0gZF9pbm9kZShiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGZpbGUpLVxcdTAwM2VkZW50cnkpO1xcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy0zOTgzLVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDg6NTguOTczMjE1MjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTE3MTA5NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFZGUyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBhIHNpZ25pZmljYW50IGFsdGVyYXRpb24gdG8gaG93IGBiYWNraW5nX2ZpbGVfb3BlbmAgaGFuZGxlcyBmaWxlIHBhdGhzLiBJbnN0ZWFkIG9mIGRpcmVjdGx5IHVzaW5nIGBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoYCwgaXQncyBub3cgY2FsbGluZyBgZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKWAuIFRoaXMgYGZpbGVfdXNlcl9wYXRoYCBmdW5jdGlvbiBhZGRzIGEgY29uZGl0aW9uYWwg4oCTIGlmIHRoZSBgdXNlcl9maWxlYCBpdHNlbGYgaXMgYSBcImJhY2tpbmcgZmlsZVwiIChhcyBpbmRpY2F0ZWQgYnkgdGhlIGBGTU9ERV9CQUNLSU5HYCBmbGFnKSwgaXQgcmVjdXJzaXZlbHkgY2FsbHMgYGJhY2tpbmdfZmlsZV91c2VyX3BhdGhgIHRvIGdldCB0aGUgcGF0aC4gVGhpcyBoYXMgdGhlIHBvdGVudGlhbCB0byBmdW5kYW1lbnRhbGx5IHNoaWZ0IGJlaGF2aW9yIGluIHRoZSBWRlMgbGF5ZXIsIHBhcnRpY3VsYXJseSBpbXBhY3Rpbmcgc3RhY2tlZCBmaWxlc3lzdGVtcy5cblxuSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gVkZTIGxvZ2ljLiBTdGFja2VkIGZpbGVzeXN0ZW1zIGxpa2Ugb3ZlcmxheWZzIG9yIGZ1c2UgcGFzc3Rocm91Z2ggYXJlIHRoZSBtb3N0IG9idmlvdXMgdGFyZ2V0cyBmb3IgdGhpcyBjaGFuZ2UuIFRoaXMgaXMgZ29pbmcgdG8gY2hhbmdlIHRoZSBwYXRocyByZXR1cm5lZCBmcm9tIHRoZSBiYWNraW5nIGZpbGVzeXN0ZW0uXG5cblRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBjb25maXJtIHRoYXQgYGJhY2tpbmdfZmlsZV9vcGVuYCBpcyBhY3R1YWxseSByZWFjaGFibGUsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGlzLCB0aHJvdWdoIGBvdmxfb3Blbl9yZWFsZmlsZWAsIGBmdXNlX3Bhc3N0aHJvdWdoX29wZW5gLCBhbmQgYGVyb2ZzX2lzaGFyZV9maWxlX29wZW5gLiBPa2F5LCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB3b3J0aCBmdXp6aW5nLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uIGluIGBmcy9iYWNraW5nLWZpbGUuY2AgdG8gY29uZmlybSB0aGUgY29kZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTY0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ5OjAzLjg5MDMyNzExN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2JhY2tpbmctZmlsZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb21tb24gaGVscGVycyBmb3Igc3RhY2thYmxlIGZpbGVzeXN0ZW1zIGFuZCBiYWNraW5nIGZpbGVzLlxcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIEZvcmtlZCBmcm9tIGZzL292ZXJsYXlmcy9maWxlLmMuXFxuICAgNjpcXHQgKlxcbiAgIDc6XFx0ICogQ29weXJpZ2h0IChDKSAyMDE3IFJlZCBIYXQsIEluYy5cXG4gICA4OlxcdCAqIENvcHlyaWdodCAoQykgMjAyMyBDVEVSQSBOZXR3b3Jrcy5cXG4gICA5OlxcdCAqL1xcbiAgMTA6XFx0XFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4gIDEyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9iYWNraW5nLWZpbGUuaFxcdTAwM2VcXG4gIDEzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGxpY2UuaFxcdTAwM2VcXG4gIDE0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbS5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NlY3VyaXR5LmhcXHUwMDNlXFxuICAxNjpcXHRcXG4gIDE3OlxcdCNpbmNsdWRlIFxcXCJpbnRlcm5hbC5oXFxcIlxcbiAgMTg6XFx0XFxuICAxOTpcXHQvKipcXG4gIDIwOlxcdCAqIGJhY2tpbmdfZmlsZV9vcGVuIC0gb3BlbiBhIGJhY2tpbmcgZmlsZSBmb3Iga2VybmVsIGludGVybmFsIHVzZVxcbiAgMjE6XFx0ICogQHVzZXJfZmlsZTogIGZpbGUgdGhlIHVzZXIgcmVxdWVzdGVkIHRvIG9wZW5cXG4gIDIyOlxcdCAqIEBmbGFnczpcXHRvcGVuIGZsYWdzXFxuICAyMzpcXHQgKiBAcmVhbF9wYXRoOlxcdHBhdGggb2YgdGhlIGJhY2tpbmcgZmlsZVxcbiAgMjQ6XFx0ICogQGNyZWQ6XFx0Y3JlZGVudGlhbHMgZm9yIG9wZW5cXG4gIDI1OlxcdCAqXFxuICAyNjpcXHQgKiBPcGVuIGEgYmFja2luZyBmaWxlIGZvciBhIHN0YWNrYWJsZSBmaWxlc3lzdGVtIChlLmcuLCBvdmVybGF5ZnMpLlxcbiAgMjc6XFx0ICogQHVzZXJfZmlsZS1cXHUwMDNlZl9wYXRoIG1heSBiZSBvbiB0aGUgc3RhY2thYmxlIGZpbGVzeXN0ZW0gYW5kIEByZWFsX3BhdGhcXG4gIDI4OlxcdCAqIG9uIHRoZSB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0uIEluIHRoaXMgY2FzZSwgd2Ugd2FudCB0byBiZSBhYmxlIHRvXFxuICAyOTpcXHQgKiByZXR1cm4gdGhlIHBhdGggb2YgdGhlIHN0YWNrYWJsZSBmaWxlc3lzdGVtLiBUaGlzIGlzIGRvbmUgYnlcXG4gIDMwOlxcdCAqIGVtYmVkZGluZyB0aGUgcmV0dXJuZWQgZmlsZSBpbnRvIGEgY29udGFpbmVyIHN0cnVjdHVyZSB0aGF0IGFsc29cXG4gIDMxOlxcdCAqIHN0b3JlcyB0aGUgc3RhY2tlZCBmaWxlJ3MgcGF0aCwgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCB1c2luZ1xcbiAgMzI6XFx0ICogYmFja2luZ19maWxlX3VzZXJfcGF0aCgpLlxcbiAgMzM6XFx0ICovXFxuICAzNDpcXHRzdHJ1Y3QgZmlsZSAqYmFja2luZ19maWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxcbiAgMzU6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwYXRoICpyZWFsX3BhdGgsXFxuICAzNjpcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQpXFxuICAzNzpcXHR7XFxuICAzODpcXHRcXHRjb25zdCBzdHJ1Y3QgcGF0aCAqdXNlcl9wYXRoID0gZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKTtcXG4gIDM5OlxcdFxcdHN0cnVjdCBmaWxlICpmO1xcbiAgNDA6XFx0XFx0aW50IGVycm9yO1xcbiAgNDE6XFx0XFxuICA0MjpcXHRcXHRmID0gYWxsb2NfZW1wdHlfYmFja2luZ19maWxlKGZsYWdzLCBjcmVkLCB1c2VyX2ZpbGUpO1xcbiAgNDM6XFx0XFx0aWYgKElTX0VSUihmKSlcXG4gIDQ0OlxcdFxcdFxcdHJldHVybiBmO1xcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRwYXRoX2dldCh1c2VyX3BhdGgpO1xcbiAgNDc6XFx0XFx0YmFja2luZ19maWxlX3NldF91c2VyX3BhdGgoZiwgdXNlcl9wYXRoKTtcXG4gIDQ4OlxcdFxcdGVycm9yID0gdmZzX29wZW4ocmVhbF9wYXRoLCBmKTtcXG4gIDQ5OlxcdFxcdGlmIChlcnJvcikge1xcbiAgNTA6XFx0XFx0XFx0ZnB1dChmKTtcXG4gIDUxOlxcdFxcdFxcdGYgPSBFUlJfUFRSKGVycm9yKTtcXG4gIDUyOlxcdFxcdH1cXG4gIDUzOlxcdFxcbiAgNTQ6XFx0XFx0cmV0dXJuIGY7XFxuICA1NTpcXHR9XFxuICA1NjpcXHRFWFBPUlRfU1lNQk9MX0dQTChiYWNraW5nX2ZpbGVfb3Blbik7XFxuICA1NzpcXHRcXG4gIDU4OlxcdHN0cnVjdCBmaWxlICpiYWNraW5nX3RtcGZpbGVfb3Blbihjb25zdCBzdHJ1Y3QgZmlsZSAqdXNlcl9maWxlLCBpbnQgZmxhZ3MsXFxuICA1OTpcXHRcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBwYXRoICpyZWFsX3BhcmVudHBhdGgsXFxuICA2MDpcXHRcXHRcXHRcXHRcXHQgIHVtb2RlX3QgbW9kZSwgY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQpXFxuICA2MTpcXHR7XFxuICA2MjpcXHRcXHRzdHJ1Y3QgbW50X2lkbWFwICpyZWFsX2lkbWFwID0gbW50X2lkbWFwKHJlYWxfcGFyZW50cGF0aC1cXHUwMDNlbW50KTtcXG4gIDYzOlxcdFxcdGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBcXHUwMDI2dXNlcl9maWxlLVxcdTAwM2VmX3BhdGg7XFxuICA2NDpcXHRcXHRzdHJ1Y3QgZmlsZSAqZjtcXG4gIDY1OlxcdFxcdGludCBlcnJvcjtcXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0ZiA9IGFsbG9jX2VtcHR5X2JhY2tpbmdfZmlsZShmbGFncywgY3JlZCwgdXNlcl9maWxlKTtcXG4gIDY4OlxcdFxcdGlmIChJU19FUlIoZikpXFxuICA2OTpcXHRcXHRcXHRyZXR1cm4gZjtcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0cGF0aF9nZXQodXNlcl9wYXRoKTtcXG4gIDcyOlxcdFxcdGJhY2tpbmdfZmlsZV9zZXRfdXNlcl9wYXRoKGYsIHVzZXJfcGF0aCk7XFxuICA3MzpcXHRcXHRlcnJvciA9IHZmc190bXBmaWxlKHJlYWxfaWRtYXAsIHJlYWxfcGFyZW50cGF0aCwgZiwgbW9kZSk7XFxuICA3NDpcXHRcXHRpZiAoZXJyb3IpIHtcXG4gIDc1OlxcdFxcdFxcdGZwdXQoZik7XFxuICA3NjpcXHRcXHRcXHRmID0gRVJSX1BUUihlcnJvcik7XFxuICA3NzpcXHRcXHR9XFxuICA3ODpcXHRcXHRyZXR1cm4gZjtcXG4gIDc5OlxcdH1cXG4gIDgwOlxcdEVYUE9SVF9TWU1CT0woYmFja2luZ190bXBmaWxlX29wZW4pO1xcbiAgODE6XFx0XFxuICA4MjpcXHRzdHJ1Y3QgYmFja2luZ19haW8ge1xcbiAgODM6XFx0XFx0c3RydWN0IGtpb2NiIGlvY2I7XFxuICA4NDpcXHRcXHRyZWZjb3VudF90IHJlZjtcXG4gIDg1OlxcdFxcdHN0cnVjdCBraW9jYiAqb3JpZ19pb2NiO1xcbiAgODY6XFx0XFx0LyogdXNlZCBmb3IgYWlvIGNvbXBsZXRpb24gKi9cXG4gIDg3OlxcdFxcdHZvaWQgKCplbmRfd3JpdGUpKHN0cnVjdCBraW9jYiAqaW9jYiwgc3NpemVfdCk7XFxuICA4ODpcXHRcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcXG4gIDg5OlxcdFxcdGxvbmcgcmVzO1xcbiAgOTA6XFx0fTtcXG4gIDkxOlxcdFxcbiAgOTI6XFx0c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpiYWNraW5nX2Fpb19jYWNoZXA7XFxuICA5MzpcXHRcXG4gIDk0OlxcdCNkZWZpbmUgQkFDS0lOR19JT0NCX01BU0sgXFxcXFxcbiAgOTU6XFx0XFx0KElPQ0JfTk9XQUlUIHwgSU9DQl9ISVBSSSB8IElPQ0JfRFNZTkMgfCBJT0NCX1NZTkMgfCBJT0NCX0FQUEVORClcXG4gIDk2OlxcdFxcbiAgOTc6XFx0c3RhdGljIHJ3Zl90IGlvY2JfdG9fcndfZmxhZ3MoaW50IGZsYWdzKVxcbiAgOTg6XFx0e1xcbiAgOTk6XFx0XFx0cmV0dXJuIChfX2ZvcmNlIHJ3Zl90KShmbGFncyBcXHUwMDI2IEJBQ0tJTkdfSU9DQl9NQVNLKTtcXG4gMTAwOlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MDMuODkwNDA3ODE3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxNDkzMTEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBCYWNraW5nIEZpbGUgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyBgYmFja2luZ19maWxlX29wZW5gIHRvIHVzZSBgZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKWAgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgYFx1MDAyNnVzZXJfZmlsZS1cdTAwM2VmX3BhdGhgLiBJIHNlZSB0aGF0IGltbWVkaWF0ZWx5LCBhbmQgSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy5cblxuSG9sZCBvbiBhIHNlY29uZC4uLiBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLiBgYmFja2luZ190bXBmaWxlX29wZW5gICphbHNvKiBoYXMgYGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoO2AuIEludGVyZXN0aW5nLiBCdXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgYmFja2luZ19maWxlX29wZW5gLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGFscmlnaHQuIERlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIHNjcnV0aW5pemluZy5cblxuR2l2ZW4gdGhhdCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBmb2N1cyBmdXp6aW5nIGVmZm9ydHMgb24gYGJhY2tpbmdfZmlsZV9vcGVuYC4gVGhhdCdzIHdoZXJlIHRoZSBuZXcgY29kZSBwYXRoIGlzLiBOb3csIEkgaGF2ZSB0byB0aGluayBhYm91dCB3aGljaCBmaWxlc3lzdGVtcyBtaWdodCBiZSBpbXBhY3RlZC4gSXQgbG9va3MgbGlrZSBgYmFja2luZ19maWxlX29wZW5gIGlzIHVzZWQgYnkgb3ZlcmxheWZzLCBmdXNlLCBhbmQgZXJvZnMuIEkgc2hvdWxkIHByb2JhYmx5IGVuYWJsZSB0aG9zZSBjb25maWdzIHRvIGVuc3VyZSBjb21wcmVoZW5zaXZlIHRlc3RpbmcuXG5cblRpbWUgdG8gcHVsbCB1cCB0aGUgS2NvbmZpZ3MgZm9yIGVhY2g6IGBmcy9vdmVybGF5ZnMvS2NvbmZpZ2AsIGBmcy9mdXNlL0tjb25maWdgLCBhbmQgYGZzL2Vyb2ZzL0tjb25maWdgLiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NTQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNDo0OTowOC4yMDUzNDIyNjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTk1ODAwOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9WRVJMQVlfRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvb3ZlcmxheWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoyOmNvbmZpZyBPVkVSTEFZX0ZTXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiT3ZlcmxheSBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xNC1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoxNTpjb25maWcgT1ZFUkxBWV9GU19SRURJUkVDVF9ESVJcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xNi1cXHRib29sIFxcXCJPdmVybGF5ZnM6IHR1cm4gb24gcmVkaXJlY3QgZGlyZWN0b3J5IGZlYXR1cmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTMwLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjMxOmNvbmZpZyBPVkVSTEFZX0ZTX1JFRElSRUNUX0FMV0FZU19GT0xMT1dcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJPdmVybGF5ZnM6IGZvbGxvdyByZWRpcmVjdHMgZXZlbiBpZiByZWRpcmVjdHMgYXJlIHR1cm5lZCBvZmZcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy00NS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzo0Njpjb25maWcgT1ZFUkxBWV9GU19JTkRFWFxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBpbm9kZXMgaW5kZXggZmVhdHVyZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWctNjQtXFxuZnMvb3ZlcmxheWZzL0tjb25maWc6NjU6Y29uZmlnIE9WRVJMQVlfRlNfTkZTX0VYUE9SVFxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBORlMgZXhwb3J0IGZlYXR1cmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTkyLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjkzOmNvbmZpZyBPVkVSTEFZX0ZTX1hJTk9fQVVUT1xcbmZzL292ZXJsYXlmcy9LY29uZmlnLTk0LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogYXV0byBlbmFibGUgaW5vZGUgbnVtYmVyIG1hcHBpbmdcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xMTAtXFxuZnMvb3ZlcmxheWZzL0tjb25maWc6MTExOmNvbmZpZyBPVkVSTEFZX0ZTX01FVEFDT1BZXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMTEyLVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBtZXRhZGF0YSBvbmx5IGNvcHkgdXAgZmVhdHVyZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMTI4LVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjEyOTpjb25maWcgT1ZFUkxBWV9GU19ERUJVR1xcbmZzL292ZXJsYXlmcy9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJPdmVybGF5ZnM6IHR1cm4gb24gZXh0cmEgZGVidWdnaW5nIGNoZWNrc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MDkuNzA0OTI5NTE0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDUzNzA5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzOlxuXG4qKkV4YW1pbmluZyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSB0aGluayBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIG91dCB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYm90aCB0aGUgRlVTRSBmaWxlc3lzdGVtIChgZnMvZnVzZS9LY29uZmlnYCkgYW5kIHRoZSBFUk9GUyBmaWxlc3lzdGVtIChgZnMvZXJvZnMvS2NvbmZpZ2ApLiBUaGF0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIHRvIGRlZmluZSBhbmQgZG9jdW1lbnQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvIGl0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGZpbGVzeXN0ZW1zIGFyZSBjb25maWd1cmVkIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuIEknbSBleHBlY3RpbmcgdG8gZmluZCBkZXRhaWxzIG9uIHRoaW5ncyBsaWtlIHdoZXRoZXIgdGhlIG1vZHVsZXMgYXJlIGJ1aWx0IGluIG9yIGxvYWRhYmxlLCBhbnkgc3BlY2lmaWMgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIG1heWJlIGV2ZW4gZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBlc3BlY2lhbGx5IGlmIEkgd2FudCB0byBsb29rIGF0IG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBidWlsZCBwcm9jZXNzIG9yIG1vZGlmeWluZyBiZWhhdmlvdXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MDcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNDo0OToxMi44NTAzMDI0NjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzA3MDk5MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVU0VfRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvZnVzZS9LY29uZmlnOjI6Y29uZmlnIEZVU0VfRlNcXG5mcy9mdXNlL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ5OjE0LjMyMTAxODg2NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDIyMTA3ODEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6ODgxMCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MTYuMzQzMTMxNjM3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE2Mzg1MDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFUk9GU19GU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9lcm9mcy9LY29uZmlnLTItXFxuZnMvZXJvZnMvS2NvbmZpZzozOmNvbmZpZyBFUk9GU19GU1xcbmZzL2Vyb2ZzL0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiRVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy00OS1cXG5mcy9lcm9mcy9LY29uZmlnOjUwOmNvbmZpZyBFUk9GU19GU19ERUJVR1xcbmZzL2Vyb2ZzL0tjb25maWctNTEtXFx0Ym9vbCBcXFwiRVJPRlMgZGVidWdnaW5nIGZlYXR1cmVcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTU5LVxcbmZzL2Vyb2ZzL0tjb25maWc6NjA6Y29uZmlnIEVST0ZTX0ZTX1hBVFRSXFxuZnMvZXJvZnMvS2NvbmZpZy02MS1cXHRib29sIFxcXCJFUk9GUyBleHRlbmRlZCBhdHRyaWJ1dGVzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy03MC1cXG5mcy9lcm9mcy9LY29uZmlnOjcxOmNvbmZpZyBFUk9GU19GU19QT1NJWF9BQ0xcXG5mcy9lcm9mcy9LY29uZmlnLTcyLVxcdGJvb2wgXFxcIkVST0ZTIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy04NC1cXG5mcy9lcm9mcy9LY29uZmlnOjg1OmNvbmZpZyBFUk9GU19GU19TRUNVUklUWVxcbmZzL2Vyb2ZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiRVJPRlMgU2VjdXJpdHkgTGFiZWxzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy05Ny1cXG5mcy9lcm9mcy9LY29uZmlnOjk4OmNvbmZpZyBFUk9GU19GU19CQUNLRURfQllfRklMRVxcbmZzL2Vyb2ZzL0tjb25maWctOTktXFx0Ym9vbCBcXFwiRmlsZS1iYWNrZWQgRVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0xMTEtXFxuZnMvZXJvZnMvS2NvbmZpZzoxMTI6Y29uZmlnIEVST0ZTX0ZTX1pJUFxcbmZzL2Vyb2ZzL0tjb25maWctMTEzLVxcdGJvb2wgXFxcIkVST0ZTIERhdGEgQ29tcHJlc3Npb24gU3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTIxLVxcbmZzL2Vyb2ZzL0tjb25maWc6MTIyOmNvbmZpZyBFUk9GU19GU19aSVBfTFpNQVxcbmZzL2Vyb2ZzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcIkVST0ZTIExaTUEgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTEzMy1cXG5mcy9lcm9mcy9LY29uZmlnOjEzNDpjb25maWcgRVJPRlNfRlNfWklQX0xaTUFfREVGQVVMVF9NQVhfU1RSRUFNU1xcbmZzL2Vyb2ZzL0tjb25maWctMTM1LVxcdGludCBcXFwiRVJPRlMgTFpNQSBkZWZhdWx0IG1heGltdW0gZGVjb21wcmVzc2lvbiBzdHJlYW1zXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0xNDctXFxuZnMvZXJvZnMvS2NvbmZpZzoxNDg6Y29uZmlnIEVST0ZTX0ZTX1pJUF9ERUZMQVRFXFxuZnMvZXJvZnMvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiRVJPRlMgREVGTEFURSBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTU4LVxcbmZzL2Vyb2ZzL0tjb25maWc6MTU5OmNvbmZpZyBFUk9GU19GU19aSVBfWlNURFxcbmZzL2Vyb2ZzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcIkVST0ZTIFpzdGFuZGFyZCBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTY5LVxcbmZzL2Vyb2ZzL0tjb25maWc6MTcwOmNvbmZpZyBFUk9GU19GU19aSVBfQUNDRUxcXG5mcy9lcm9mcy9LY29uZmlnLTE3MS1cXHRib29sIFxcXCJFUk9GUyBoYXJkd2FyZSBkZWNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTE4My1cXG5mcy9lcm9mcy9LY29uZmlnOjE4NDpjb25maWcgRVJPRlNfRlNfUENQVV9LVEhSRUFEXFxuZnMvZXJvZnMvS2NvbmZpZy0xODUtXFx0Ym9vbCBcXFwiRVJPRlMgcGVyLWNwdSBkZWNvbXByZXNzaW9uIGt0aHJlYWQgd29ya2Vyc1xcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTkyLVxcbmZzL2Vyb2ZzL0tjb25maWc6MTkzOmNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcXG5mcy9lcm9mcy9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJFUk9GUyBoaWdoIHByaW9yaXR5IHBlci1DUFUga3RocmVhZCB3b3JrZXJzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0yMDItXFxuZnMvZXJvZnMvS2NvbmZpZzoyMDM6Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cXHRib29sIFxcXCJFUk9GUyBwYWdlIGNhY2hlIHNoYXJlIHN1cHBvcnQgKGV4cGVyaW1lbnRhbClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ5OjE3Ljg1OTUyMzUxOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAyMjM5MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipGVVNFX1BBU1NUSFJPVUdIOiBBIFF1aWNrIFJlY2FwKipcblxuT2theSwgc28gSSdtIHByb2Nlc3NpbmcgdGhpcyBjb25maWcgcGFyYW1ldGVyLi4uIFdhaXQgYSBtaW51dGUuIGBGVVNFX1BBU1NUSFJPVUdIYC4gSXQncyBoaXR0aW5nIG1lIG5vdy4gVGhhdCdzICp0aGUqIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIEZVU0UgcGFzc3Rocm91Z2gsIGlzbid0IGl0PyBKdXN0IG1ha2luZyBzdXJlIEknbSBvbiB0aGUgcmlnaHQgdHJhY2sgaGVyZSwgdGhpcyBkZXRlcm1pbmVzIGhvdyB0aGUgZmlsZSBzeXN0ZW0gcGFzc2VzIGNhbGxzIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgc3lzdGVtLiBObyBhbWJpZ3VpdHksIGdvdCBpdC4gR29vZCB0byBjbGFyaWZ5IHRoZXNlIHNtYWxsIGRldGFpbHMgYXMgSSBtb3ZlIHRocm91Z2ggbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzU3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MjEuMDYxNzY1MzA5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEwNzk5ODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGVVNFX1BBU1NUSFJPVUdIXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZz00Mz1jb25maWcgRlVTRV9EQVhcXG4tLVxcbmZzL2Z1c2UvS2NvbmZpZy01Ni1cXG5mcy9mdXNlL0tjb25maWc6NTc6Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcXG5mcy9mdXNlL0tjb25maWctNTgtXFx0Ym9vbCBcXFwiRlVTRSBwYXNzdGhyb3VnaCBvcGVyYXRpb25zIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ5OjIyLjU3MjU3MDE2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjgxOTA1NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipJbml0aWFsIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBBc3Nlc3NtZW50KipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEJhc2VkIG9uIHRoZSBwcm9qZWN0IHJlcXVpcmVtZW50cyBhbmQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLCBpdCBsb29rcyBsaWtlIHdlIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGtleSBmaWxlc3lzdGVtIG9wdGlvbnMuIEknbSB0aGlua2luZyB3ZSBhYnNvbHV0ZWx5ICptdXN0KiBlbmFibGUgYE9WRVJMQVlfRlNgLiBUaGlzIGlzIHByZXR0eSBjcnVjaWFsIGZvciBhbGxvd2luZyByZWFkLXdyaXRlIGxheWVycyBvbiB0b3Agb2Ygb3VyIGJhc2UgcmVhZC1vbmx5IHN5c3RlbS4gVGhlbiwgZm9yIHZlcnNhdGlsaXR5IGFuZCBpbnRlZ3JhdGlvbiB3aXRoIHVzZXItc3BhY2UgdG9vbHMsIGBGVVNFX0ZTYCBhbmQgYEZVU0VfUEFTU1RIUk9VR0hgIHNlZW0gbGlrZSBzb2xpZCBjaG9pY2VzLiBXZSdsbCBuZWVkIHRob3NlIGlmIHdlIHdhbnQgdG8gZHluYW1pY2FsbHkgbW91bnQgZmlsZXN5c3RlbXMgZGVmaW5lZCBpbiB1c2VyIHNwYWNlIGFuZCBoYW5kbGUgcGFzc3Rocm91Z2ggb3BlcmF0aW9ucy4gRmluYWxseSwgZm9yIHRoZSByZWFkLW9ubHkgZm91bmRhdGlvbmFsIGxheWVyLCB3ZSBhcmUgZ29pbmcgdG8gZW5hYmxlIGBFUk9GU19GU2AgYW5kIGl0cyBiYWNraW5nIGZpbGUgb3B0aW9uOiBgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVgLlxuXG5CdXQgYmVmb3JlIHdlIG1vdmUgZm9yd2FyZCBvbiBFUk9GUywgaXQncyBhbHdheXMgYSBnb29kIGlkZWEgdG8gZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjcml0aWNhbCBjb21wb25lbnRzIGxpa2UgZmlsZXN5c3RlbXMuIExldCdzIG5vdCBtYWtlIGFueSBhc3N1bXB0aW9ucy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGBmcy9lcm9mcy9pc2hhcmUuY2AuIE15IG9iamVjdGl2ZSBpcyB0byB2ZXJpZnkgaWYgdGhlcmUncyBhbnkgaW1wbGljaXQgZGVwZW5kZW5jeSBvbiBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAsIGJlZm9yZSB3ZSBtb3ZlIGZvcndhcmQgd2l0aCB0aGUgY29uZmlndXJhdGlvbi4gVGhhdCB3aWxsIG5lZWQgdG8gYmUgbG9va2VkIGF0IGJlZm9yZSB3ZSBtb3ZlIGZvcndhcmQuIFdlIGRvIG5vdCB3YW50IGFueSBzdXJwcmlzZXMgb3IgcmVncmVzc2lvbnMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDA4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MjYuODU0NDc3NjI4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI1MjM5MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVyb2ZzX2lzaGFyZV9maWxlX29wZW5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvaXNoYXJlLmM9ODI9dm9pZCBlcm9mc19pc2hhcmVfZnJlZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXJvZnMvaXNoYXJlLmMtOTUtXFxuZnMvZXJvZnMvaXNoYXJlLmM6OTY6c3RhdGljIGludCBlcm9mc19pc2hhcmVfZmlsZV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Vyb2ZzL2lzaGFyZS5jLTk3LXtcXG4tLVxcbmZzL2Vyb2ZzL2lzaGFyZS5jPTE1Nz1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVyb2ZzX2lzaGFyZV9mb3BzID0ge1xcbmZzL2Vyb2ZzL2lzaGFyZS5jOjE1ODpcXHQub3BlblxcdFxcdD0gZXJvZnNfaXNoYXJlX2ZpbGVfb3BlbixcXG5mcy9lcm9mcy9pc2hhcmUuYy0xNTktXFx0Lmxsc2Vla1xcdFxcdD0gZ2VuZXJpY19maWxlX2xsc2VlayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MjguMzc5NzIzMDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1MjQ3MDI4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXJvZnMgYW5kIFBhZ2UgQ2FjaGUgU2hhcmluZyoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGh5cG90aGVzaXMgaXMgdGhhdCBgZnMvZXJvZnMvaXNoYXJlLmNgIGlzIGludm9sdmVkIHdoZW4gYEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVgIGlzIGFjdGl2ZS4gVGhhdCBzb3VuZHMgcmlnaHQsIGdpdmVuIHRoZSBuYW1lLiBCdXQgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGNvbXBpbGF0aW9uIGRlcGVuZGVuY3kuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgZnMvZXJvZnMvTWFrZWZpbGVgLiBJJ2xsIGNvbmZpcm0gaG93IHRoYXQgcHJlcHJvY2Vzc29yIG1hY3JvIHRyYW5zbGF0ZXMgdG8gb2JqZWN0IGZpbGUgaW5jbHVzaW9uLiBJdCdzIGFsbW9zdCBjZXJ0YWluIGl0IGNvbnRyb2xzIHRoZSBidWlsZCBwcm9jZXNzIHRoZXJlLCBidXQgSSBuZWVkIHRvIHNlZSB0aGUgZXhhY3QgY29uZGl0aW9uYWxzIHRvIGJlIHN1cmUuIEp1c3QgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhlIGJ1aWxkIHJlY2lwZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MjQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNDo0OTozMi4xMzIxOTY0MDdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDMyNTQzMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNoYXJlLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvTWFrZWZpbGU9MTE9ZXJvZnMtJChDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUpICs9IGZpbGVpby5vXFxuZnMvZXJvZnMvTWFrZWZpbGU6MTI6ZXJvZnMtJChDT05GSUdfRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSkgKz0gaXNoYXJlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MzQuMzc1NDU3NjYzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0NDI4OTY4MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEVST0ZTIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUga2V5IHRha2Vhd2F5IGhlcmUgaXMgdGhhdCB3ZSAqbmVlZCogYEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVgLiBMZXQncyBicmVhayBkb3duIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZTogYE9WRVJMQVlfRlNgLCBgRlVTRV9GU2AsIGBGVVNFX1BBU1NUSFJPVUdIYCwgYEVST0ZTX0ZTYCwgYW5kIG9mIGNvdXJzZSwgdGhlIG9uZSB3ZSdyZSB6ZXJvaW5nIGluIG9uLCBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAuIFRoaXMgaXMgYWxsIHRvIHN1cHBvcnQgcGFnZSBjYWNoZSBzaGFyaW5nIHdpdGggYSBiYWNraW5nIGZpbGUuXG5cblRoZSBjb3JlIGZ1bmN0aW9uIHRvIGV4YW1pbmUgaXMgYGJhY2tpbmdfZmlsZV9vcGVuYC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBhY3Rpb24gaXMuIFRoZSBwYXRjaCBpcyBzdWJ0bHkgY2hhbmdpbmcgdGhlIFZGUyBsb2dpYy4gU3BlY2lmaWNhbGx5LCBpdCdzIHN3YXBwaW5nIG91dCBgXHUwMDI2dXNlcl9maWxlLVx1MDAzZWZfcGF0aGAgZm9yIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCB3aXRoaW4gYGJhY2tpbmdfZmlsZV9vcGVuYC4gRnJvbSBhIGZ1bmN0aW9uYWwgc3RhbmRwb2ludCwgdGhpcyBpcyBhIHNpZ25pZmljYW50IGFsdGVyYXRpb24uIFRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgY2hhbmdlPyBJdCBkaXJlY3RseSBpbXBhY3RzIGhvdyBwYXRoIHJlc29sdXRpb24gZnVuY3Rpb25zIHdpdGhpbiBzdGFja2VkIGZpbGVzeXN0ZW1zLiBUaGluayBPdmVybGF5RlMgYW5kIEZVU0UgcGFzc3Rocm91Z2gsIHdoZXJlIHRoZSBcInVzZXIgZmlsZVwiIGNvdWxkLCBpbiBmYWN0LCBiZSBhIGxvd2VyLWxldmVsIGJhY2tpbmcgZmlsZS4gVGhlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBhbmQgYWZmZWN0IGhvdyBwYXRocyBhcmUgcmVzb2x2ZWQuXG5cbldlJ3JlIHJlc29sdmluZyBhIHBhdGggZnJvbSB1c2VyIHNwYWNlLCBhbmQgdXNpbmcgaXQgZm9yIGJhY2tpbmcgdGhlIGVyb2ZzIHBhZ2UgY2FjaGUuXG5cblRpbWUgdG8gY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5MTMsIk91dHB1dFRva2VucyI6MTY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ5OjQxLjgxODM1NjA2M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NTUxMDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPVkVSTEFZX0ZTXCIsXG4gICAgXCJGVVNFX0ZTXCIsXG4gICAgXCJGVVNFX1BBU1NUSFJPVUdIXCIsXG4gICAgXCJFUk9GU19GU1wiLFxuICAgIFwiRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJhY2tpbmdfZmlsZV9vcGVuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGJhY2tpbmdfZmlsZV9vcGVuYCB0byB1c2UgYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgIGluc3RlYWQgb2YgYFxcdTAwMjZ1c2VyX2ZpbGUtXFx1MDAzZWZfcGF0aGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBWRlMgbG9naWMsIHNwZWNpZmljYWxseSBmb3Igc3RhY2tlZCBmaWxlc3lzdGVtcyBsaWtlIG92ZXJsYXlmcyBvciBmdXNlIHBhc3N0aHJvdWdoLCB3aGVyZSB0aGUgdXNlciBmaWxlIGl0c2VsZiBtaWdodCBiZSBhIGJhY2tpbmcgZmlsZS4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGFuZCBhZmZlY3RzIGhvdyBwYXRocyBhcmUgcmVzb2x2ZWQgZm9yIGJhY2tpbmcgZmlsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1ZFUkxBWV9GU1wiLFxuICAgIFwiRlVTRV9GU1wiLFxuICAgIFwiRlVTRV9QQVNTVEhST1VHSFwiLFxuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiYWNraW5nX2ZpbGVfb3BlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcXHUwMDI2dXNlcl9maWxlLVxcdTAwM2VmX3BhdGhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gVkZTIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZm9yIHN0YWNrZWQgZmlsZXN5c3RlbXMgbGlrZSBvdmVybGF5ZnMgb3IgZnVzZSBwYXNzdGhyb3VnaCwgd2hlcmUgdGhlIHVzZXIgZmlsZSBpdHNlbGYgbWlnaHQgYmUgYSBiYWNraW5nIGZpbGUuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBhbmQgYWZmZWN0cyBob3cgcGF0aHMgYXJlIHJlc29sdmVkIGZvciBiYWNraW5nIGZpbGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow6pz8k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 03:52:32 +0000 UTC FinishedAt: 2026-08-04 04:49:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OVERLAY_FS", "FUSE_FS", "FUSE_PASSTHROUGH", "EROFS_FS", "EROFS_FS_PAGE_CACHE_SHARE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fe6568ca989d7625447625db8562bebbe5be054a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OVERLAY_FS", "FUSE_FS", "FUSE_PASSTHROUGH", "EROFS_FS", "EROFS_FS_PAGE_CACHE_SHARE" ], "series_id": "248a562f-c4f2-4e69-a243-a0a2440c3241" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "backing_file_open" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09WRVJMQVlfRlMmIzM0OywKICAgICYjMzQ7RlVTRV9GUyYjMzQ7LAogICAgJiMzNDtGVVNFX1BBU1NUSFJPVUdIJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtiYWNraW5nX2ZpbGVfb3BlbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgYmFja2luZ19maWxlX29wZW5gIHRvIHVzZSBgZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKWAgaW5zdGVhZCBvZiBgXHUwMDI2dXNlcl9maWxlLVx1MDAzZWZfcGF0aGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBWRlMgbG9naWMsIHNwZWNpZmljYWxseSBmb3Igc3RhY2tlZCBmaWxlc3lzdGVtcyBsaWtlIG92ZXJsYXlmcyBvciBmdXNlIHBhc3N0aHJvdWdoLCB3aGVyZSB0aGUgdXNlciBmaWxlIGl0c2VsZiBtaWdodCBiZSBhIGJhY2tpbmcgZmlsZS4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGFuZCBhZmZlY3RzIGhvdyBwYXRocyBhcmUgcmVzb2x2ZWQgZm9yIGJhY2tpbmcgZmlsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDQ6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZjNiYjVkMjk2MjE2ZTQ5OGQxZDdiYWM2ZWVkYmE0NGI1NDVkYzBkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwNDo0ODo0MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9iYWNraW5nLWZpbGUuYyBiL2ZzL2JhY2tpbmctZmlsZS5jXG5pbmRleCAwODBjOTk2OTZjZDBkLi5jYzEwMTE0M2Y5MjEyIDEwMDY0NFxuLS0tIGEvZnMvYmFja2luZy1maWxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2JhY2tpbmctZmlsZS5jXG5AQCAtMzUsNyAmIzQzOzM1LDcgQEAgc3RydWN0IGZpbGUgKmJhY2tpbmdfZmlsZV9vcGVuKGNvbnN0IHN0cnVjdCBmaWxlICp1c2VyX2ZpbGUsIGludCBmbGFncyxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBhdGggKnJlYWxfcGF0aCxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IHBhdGggKnVzZXJfcGF0aCA9IFx1MDAyNnVzZXJfZmlsZS1cdTAwM2VmX3BhdGg7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHBhdGggKnVzZXJfcGF0aCA9IGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSk7XG4gXHRzdHJ1Y3QgZmlsZSAqZjtcbiBcdGludCBlcnJvcjtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1ZFUkxBWV9GUyYjMzQ7LAogICAgJiMzNDtGVVNFX0ZTJiMzNDssCiAgICAmIzM0O0ZVU0VfUEFTU1RIUk9VR0gmIzM0OywKICAgICYjMzQ7RVJPRlNfRlMmIzM0OywKICAgICYjMzQ7RVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhY2tpbmdfZmlsZV9vcGVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIFZGUyBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBzdGFja2VkIGZpbGVzeXN0ZW1zIGxpa2Ugb3ZlcmxheWZzIG9yIGZ1c2UgcGFzc3Rocm91Z2gsIHdoZXJlIHRoZSB1c2VyIGZpbGUgaXRzZWxmIG1pZ2h0IGJlIGEgYmFja2luZyBmaWxlLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIGFmZmVjdHMgaG93IHBhdGhzIGFyZSByZXNvbHZlZCBmb3IgYmFja2luZyBmaWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVmM2JiNWQyOTYyMTZlNDk4ZDFkN2JhYzZlZWRiYTQ0YjU0NWRjMGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDA0OjQ4OjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvYmFja2luZy1maWxlLmMgYi9mcy9iYWNraW5nLWZpbGUuYwppbmRleCAwODBjOTk2OTZjZDBkLi5jYzEwMTE0M2Y5MjEyIDEwMDY0NAotLS0gYS9mcy9iYWNraW5nLWZpbGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9iYWNraW5nLWZpbGUuYwpAQCAtMzUsNyAmIzQzOzM1LDcgQEAgc3RydWN0IGZpbGUgKmJhY2tpbmdfZmlsZV9vcGVuKGNvbnN0IHN0cnVjdCBmaWxlICp1c2VyX2ZpbGUsIGludCBmbGFncywKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcmVhbF9wYXRoLAogCQkJICAgICAgIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKQogewotCWNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSAmYW1wO3VzZXJfZmlsZS0mZ3Q7Zl9wYXRoOwomIzQzOwljb25zdCBzdHJ1Y3QgcGF0aCAqdXNlcl9wYXRoID0gZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKTsKIAlzdHJ1Y3QgZmlsZSAqZjsKIAlpbnQgZXJyb3I7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzMwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaDogQSBRdWljayBEZWVwIERpdmUqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSBtb2RpZnlpbmcgYGZzL2JhY2tpbmctZmlsZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYGJhY2tpbmdfZmlsZV9vcGVuYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHJlcGxhY2VkIGAmYW1wO3VzZXJfZmlsZS0mZ3Q7Zl9wYXRoYCB3aXRoIGEgY2FsbCB0byBgZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBtZWFucyBJIG5lZWQgdG8gZGlnIGludG8gYm90aCBgZnMvYmFja2luZy1maWxlLmNgIGFuZCB0aGF0IGBmaWxlX3VzZXJfcGF0aGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCB0aGF0IHJlcGxhY2VtZW50IGRvZXMuIElzIHRoaXMganVzdCBhIHJlZmFjdG9yaW5nLCBvciBpcyB0aGVyZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGhhcHBlbmluZz8gQW5kIGlmIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGlzIHRoZXJlIGFueSBjaGFuY2UgdGhpcyBpcyBzb21ldGhpbmcgdGhhdCBtaWdodCBiZSBpbnRlcmVzdGluZyBmb3IgZnV6emluZz8gR290dGEgcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIG5ldyBjb2RlIHBhdGhzLCBvciBhIGRpZmZlcmVudCBpbnRlcnByZXRhdGlvbiBvZiBhbiBleGlzdGluZyBvbmUuIElmIHRoZXJl4oCZcyBhbiBhdHRhY2sgc3VyZmFjZSBjaGFuZ2UsIEkgbmVlZCB0byBrbm93LiBUaW1lIHRvIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDQ6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmFja2luZ19maWxlX29wZW4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYmFja2luZy1maWxlLmMtMTktLyoqXG5mcy9iYWNraW5nLWZpbGUuYzoyMDogKiBiYWNraW5nX2ZpbGVfb3BlbiAtIG9wZW4gYSBiYWNraW5nIGZpbGUgZm9yIGtlcm5lbCBpbnRlcm5hbCB1c2VcbmZzL2JhY2tpbmctZmlsZS5jLTIxLSAqIEB1c2VyX2ZpbGU6ICBmaWxlIHRoZSB1c2VyIHJlcXVlc3RlZCB0byBvcGVuXG4tLVxuZnMvYmFja2luZy1maWxlLmMtMzMtICovXG5mcy9iYWNraW5nLWZpbGUuYzozNDpzdHJ1Y3QgZmlsZSAqYmFja2luZ19maWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxuZnMvYmFja2luZy1maWxlLmMtMzUtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwYXRoICpyZWFsX3BhdGgsXG4tLVxuZnMvYmFja2luZy1maWxlLmMtNTUtfVxuZnMvYmFja2luZy1maWxlLmM6NTY6RVhQT1JUX1NZTUJPTF9HUEwoYmFja2luZ19maWxlX29wZW4pO1xuZnMvYmFja2luZy1maWxlLmMtNTctXG4tLVxuZnMvZXJvZnMvaXNoYXJlLmM9OTY9c3RhdGljIGludCBlcm9mc19pc2hhcmVfZmlsZV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2Vyb2ZzL2lzaGFyZS5jLTEwNi1cbmZzL2Vyb2ZzL2lzaGFyZS5jOjEwNzpcdHJmID0gYmFja2luZ19maWxlX29wZW4oZmlsZSwgZmlsZS1cdTAwM2VmX2ZsYWdzIHwgT19OT0FUSU1FLFxuZnMvZXJvZnMvaXNoYXJlLmMtMTA4LVx0XHRcdCAgICAgICBcdTAwMjZzaGFyZWRwYXRoLCBjdXJyZW50X2NyZWQoKSk7XG4tLVxuZnMvZnVzZS9wYXNzdGhyb3VnaC5jPTE1Mj1zdHJ1Y3QgZnVzZV9iYWNraW5nICpmdXNlX3Bhc3N0aHJvdWdoX29wZW4oc3RydWN0IGZpbGUgKmZpbGUsIGludCBiYWNraW5nX2lkKVxuLS1cbmZzL2Z1c2UvcGFzc3Rocm91Z2guYy0xNjktXHQvKiBBbGxvY2F0ZSBiYWNraW5nIGZpbGUgcGVyIGZ1c2UgZmlsZSB0byBzdG9yZSBmdXNlIHBhdGggKi9cbmZzL2Z1c2UvcGFzc3Rocm91Z2guYzoxNzA6XHRiYWNraW5nX2ZpbGUgPSBiYWNraW5nX2ZpbGVfb3BlbihmaWxlLCBmaWxlLVx1MDAzZWZfZmxhZ3MsXG5mcy9mdXNlL3Bhc3N0aHJvdWdoLmMtMTcxLVx0XHRcdFx0XHQgXHUwMDI2ZmItXHUwMDNlZmlsZS1cdTAwM2VmX3BhdGgsIGZiLVx1MDAzZWNyZWQpO1xuLS1cbmZzL292ZXJsYXlmcy9maWxlLmM9Mjg9c3RhdGljIHN0cnVjdCBmaWxlICpvdmxfb3Blbl9yZWFsZmlsZShjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9vdmVybGF5ZnMvZmlsZS5jLTUwLVxuZnMvb3ZlcmxheWZzL2ZpbGUuYzo1MTpcdFx0XHRyZWFsZmlsZSA9IGJhY2tpbmdfZmlsZV9vcGVuKGZpbGUsXG5mcy9vdmVybGF5ZnMvZmlsZS5jLTUyLVx0XHRcdFx0XHRcdCAgICAgZmxhZ3MsIHJlYWxwYXRoLCBjdXJyZW50X2NyZWQoKSk7XG4tLVxuaW5jbHVkZS9saW51eC9iYWNraW5nLWZpbGUuaD0xNT1zdHJ1Y3QgYmFja2luZ19maWxlX2N0eCB7XG4tLVxuaW5jbHVkZS9saW51eC9iYWNraW5nLWZpbGUuaC0yMC1cbmluY2x1ZGUvbGludXgvYmFja2luZy1maWxlLmg6MjE6c3RydWN0IGZpbGUgKmJhY2tpbmdfZmlsZV9vcGVuKGNvbnN0IHN0cnVjdCBmaWxlICp1c2VyX2ZpbGUsIGludCBmbGFncyxcbmluY2x1ZGUvbGludXgvYmFja2luZy1maWxlLmgtMjItXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwYXRoICpyZWFsX3BhdGgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwOAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ2hhbmdlIHRvIGBiYWNraW5nX2ZpbGVfb3BlbmAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBiYWNraW5nX2ZpbGVfb3BlbmAuIFJpZ2h0LCB0aGF0JiMzOTtzIGEga2V5IFZGUyBmdW5jdGlvbi4gSXQmIzM5O3MgdXNlZCBhY3Jvc3MgYSBmZXcgaW1wb3J0YW50IGZpbGVzeXN0ZW1zOiBgZXJvZnNgLCBgZnVzZWAsIGFuZCBgb3ZlcmxheWZzYC4gS25vd2luZyB0aGVzZSBmaWxlc3lzdGVtcywgaXQmIzM5O3MgY2xlYXIgaG93IHRoaXMgZnVuY3Rpb24gaXMgdml0YWwgZm9yIG1hbmFnaW5nIGJhY2tpbmcgZmlsZXMgaW4gZGlmZmVyZW50IGNvbnRleHRzLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBzd2FwcGluZyBvdXQgYCZhbXA7dXNlcl9maWxlLSZndDtmX3BhdGhgIHdpdGggYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgLiBJbnRyaWd1aW5nLiBDbGVhcmx5LCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHBhdGggcmVwcmVzZW50YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlJiMzOTtyZSBtb3ZpbmcgZnJvbSBhIGRpcmVjdCBwb2ludGVyIHRvIHRoZSBgZl9wYXRoYCBtZW1iZXIgb2YgdGhlIGB1c2VyX2ZpbGVgIHN0cnVjdCB0byBzb21ldGhpbmcgaGFuZGxlZCBieSBhIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgZmlsZV91c2VyX3BhdGhgIGFjdHVhbGx5ICpkb2VzKi4gSXMgaXQgcHJvdmlkaW5nIGEgbW9yZSByb2J1c3QgYWJzdHJhY3Rpb24/IElzIGl0IGhhbmRsaW5nIHNvbWUgc3BlY2lhbCBjYXNlcz8gRG9lcyBpdCBjaGFuZ2Ugd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZD8gVGltZSB0byBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJIHN1c3BlY3QgdGhlcmUmIzM5O3MgYSBnb29kIHJlYXNvbiBmb3IgdGhpcyBjaGFuZ2UsIGFuZCBpdCYjMzk7cyBwcm9iYWJseSByZWxhdGVkIHRvIHVzZXItc3BhY2UgaW50ZXJhY3Rpb25zIG9yIHBhdGggbWFuYWdlbWVudCBjb21wbGV4aXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDQ6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmlsZV91c2VyX3BhdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcmMva2VybmVsL3Ryb3VibGVzaG9vdC5jPTc3PXN0YXRpYyB2b2lkIHNob3dfZmF1bHRpbmdfdm1hKHVuc2lnbmVkIGxvbmcgYWRkcmVzcylcbi0tXG5hcmNoL2FyYy9rZXJuZWwvdHJvdWJsZXNob290LmMtOTYtXHRcdFx0LyogWFhYOiBjYW4gd2UgdXNlICVwRCBiZWxvdyBhbmQgZ2V0IHJpZCBvZiBidWY/ICovXG5hcmNoL2FyYy9rZXJuZWwvdHJvdWJsZXNob290LmM6OTc6XHRcdFx0bm0gPSBkX3BhdGgoZmlsZV91c2VyX3BhdGgodm1hLVx1MDAzZXZtX2ZpbGUpLCBidWYsXG5hcmNoL2FyYy9rZXJuZWwvdHJvdWJsZXNob290LmMtOTgtXHRcdFx0XHQgICAgQVJDX1BBVEhfTUFYLTEpO1xuLS1cbmZzL2JhY2tpbmctZmlsZS5jLTMxLSAqIHN0b3JlcyB0aGUgc3RhY2tlZCBmaWxlJiMzOTtzIHBhdGgsIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmdcbmZzL2JhY2tpbmctZmlsZS5jOjMyOiAqIGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoKS5cbmZzL2JhY2tpbmctZmlsZS5jLTMzLSAqL1xuZnMvYmFja2luZy1maWxlLmM9MzQ9c3RydWN0IGZpbGUgKmJhY2tpbmdfZmlsZV9vcGVuKGNvbnN0IHN0cnVjdCBmaWxlICp1c2VyX2ZpbGUsIGludCBmbGFncyxcbi0tXG5mcy9iYWNraW5nLWZpbGUuYy0zNy17XG5mcy9iYWNraW5nLWZpbGUuYzozODpcdGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpO1xuZnMvYmFja2luZy1maWxlLmMtMzktXHRzdHJ1Y3QgZmlsZSAqZjtcbi0tXG5mcy9maWxlX3RhYmxlLmM9NTE9c3RydWN0IGJhY2tpbmdfZmlsZSB7XG4tLVxuZnMvZmlsZV90YWJsZS5jLTYzLVxuZnMvZmlsZV90YWJsZS5jOjY0OmNvbnN0IHN0cnVjdCBwYXRoICpiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGNvbnN0IHN0cnVjdCBmaWxlICpmKVxuZnMvZmlsZV90YWJsZS5jLTY1LXtcbi0tXG5mcy9maWxlX3RhYmxlLmMtNjctfVxuZnMvZmlsZV90YWJsZS5jOjY4OkVYUE9SVF9TWU1CT0xfR1BMKGJhY2tpbmdfZmlsZV91c2VyX3BhdGgpO1xuZnMvZmlsZV90YWJsZS5jLTY5LVxuLS1cbmZzL2ludGVybmFsLmg9MTEzPXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxlX3B1dF93cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvaW50ZXJuYWwuaC0xMTctXHRpZiAodW5saWtlbHkoZmlsZS1cdTAwM2VmX21vZGUgXHUwMDI2IEZNT0RFX0JBQ0tJTkcpKVxuZnMvaW50ZXJuYWwuaDoxMTg6XHRcdG1udF9wdXRfd3JpdGVfYWNjZXNzKGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoZmlsZSktXHUwMDNlbW50KTtcbmZzL2ludGVybmFsLmgtMTE5LX1cbi0tXG5mcy9vcGVuLmM9OTEwPXN0YXRpYyBpbmxpbmUgaW50IGZpbGVfZ2V0X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqZilcbi0tXG5mcy9vcGVuLmMtOTIwLVx0aWYgKHVubGlrZWx5KGYtXHUwMDNlZl9tb2RlIFx1MDAyNiBGTU9ERV9CQUNLSU5HKSkge1xuZnMvb3Blbi5jOjkyMTpcdFx0ZXJyb3IgPSBtbnRfZ2V0X3dyaXRlX2FjY2VzcyhiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGYpLVx1MDAzZW1udCk7XG5mcy9vcGVuLmMtOTIyLVx0XHRpZiAodW5saWtlbHkoZXJyb3IpKVxuLS1cbmZzL3Byb2MvYmFzZS5jPTIyMzE9c3RhdGljIGludCBtYXBfZmlsZXNfZ2V0X2xpbmsoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgcGF0aCAqcGF0aCxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0yMjU0LVx0aWYgKHZtYSBcdTAwMjZcdTAwMjYgdm1hLVx1MDAzZXZtX2ZpbGUpIHtcbmZzL3Byb2MvYmFzZS5jOjIyNTU6XHRcdCpwYXRoID0gKmZpbGVfdXNlcl9wYXRoKHZtYS1cdTAwM2V2bV9maWxlKTtcbmZzL3Byb2MvYmFzZS5jLTIyNTYtXHRcdHBhdGhfZ2V0KHBhdGgpO1xuLS1cbmZzL3Byb2Mvbm9tbXUuYz0zMT1zdGF0aWMgaW50IG5vbW11X3JlZ2lvbl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHZtX3JlZ2lvbiAqcmVnaW9uKVxuLS1cbmZzL3Byb2Mvbm9tbXUuYy02MC1cdFx0c2VxX3BhZChtLCAmIzM5OyAmIzM5Oyk7XG5mcy9wcm9jL25vbW11LmM6NjE6XHRcdHNlcV9wYXRoKG0sIGZpbGVfdXNlcl9wYXRoKGZpbGUpLCBcJiMzNDtcJiMzNDspO1xuZnMvcHJvYy9ub21tdS5jLTYyLVx0fVxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz00MTQ9c3RhdGljIHZvaWQgZ2V0X3ZtYV9uYW1lKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy00MzctXHRcdH0gZWxzZSB7XG5mcy9wcm9jL3Rhc2tfbW11LmM6NDM4Olx0XHRcdCpwYXRoID0gZmlsZV91c2VyX3BhdGgodm1hLVx1MDAzZXZtX2ZpbGUpO1xuZnMvcHJvYy90YXNrX21tdS5jLTQzOS1cdFx0fVxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0zNDk1PXN0YXRpYyBpbnQgc2hvd19udW1hX21hcChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTM1MjUtXHRcdHNlcV9wdXRzKG0sIFwmIzM0OyBmaWxlPVwmIzM0Oyk7XG5mcy9wcm9jL3Rhc2tfbW11LmM6MzUyNjpcdFx0c2VxX3BhdGgobSwgZmlsZV91c2VyX3BhdGgoZmlsZSksIFwmIzM0O1xcblxcdD0gXCYjMzQ7KTtcbmZzL3Byb2MvdGFza19tbXUuYy0zNTI3LVx0fSBlbHNlIGlmICh2bWFfaXNfaW5pdGlhbF9oZWFwKHZtYSkpIHtcbi0tXG5mcy9wcm9jL3Rhc2tfbm9tbXUuYz0xMjc9c3RhdGljIGludCBub21tdV92bWFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmZzL3Byb2MvdGFza19ub21tdS5jLTE1OS1cdFx0c2VxX3BhZChtLCAmIzM5OyAmIzM5Oyk7XG5mcy9wcm9jL3Rhc2tfbm9tbXUuYzoxNjA6XHRcdHNlcV9wYXRoKG0sIGZpbGVfdXNlcl9wYXRoKGZpbGUpLCBcJiMzNDtcJiMzNDspO1xuZnMvcHJvYy90YXNrX25vbW11LmMtMTYxLVx0fSBlbHNlIGlmIChtbSBcdTAwMjZcdTAwMjYgdm1hX2lzX2luaXRpYWxfc3RhY2sodm1hKSkge1xuLS1cbmluY2x1ZGUvbGludXgvZnMuaD0yNDkyPXN0cnVjdCBmaWxlICpkZW50cnlfY3JlYXRlKHN0cnVjdCBwYXRoICpwYXRoLCBpbnQgZmxhZ3MsIHVtb2RlX3QgbW9kZSxcbmluY2x1ZGUvbGludXgvZnMuaC0yNDkzLVx0XHRcdCAgIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKTtcbmluY2x1ZGUvbGludXgvZnMuaDoyNDk0OmNvbnN0IHN0cnVjdCBwYXRoICpiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGNvbnN0IHN0cnVjdCBmaWxlICpmKTtcbmluY2x1ZGUvbGludXgvZnMuaC0yNDk1LVxuLS1cbmluY2x1ZGUvbGludXgvZnMuaD0yNTA0PXN0YXRpYyBpbmxpbmUgdm9pZCBiYWNraW5nX2ZpbGVfc2V0X3NlY3VyaXR5KHN0cnVjdCBmaWxlICpmLCB2b2lkICpzZWN1cml0eSlcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUxOC0vKiBHZXQgdGhlIHBhdGggdG8gZGlzcGxheSBpbiAvcHJvYy9cdTAwM2NwaWRcdTAwM2UvbWFwcyAqL1xuaW5jbHVkZS9saW51eC9mcy5oOjI1MTk6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgcGF0aCAqZmlsZV91c2VyX3BhdGgoY29uc3Qgc3RydWN0IGZpbGUgKmYpXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUyMC17XG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUyMS1cdGlmICh1bmxpa2VseShmLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfQkFDS0lORykpXG5pbmNsdWRlL2xpbnV4L2ZzLmg6MjUyMjpcdFx0cmV0dXJuIGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoZik7XG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUyMy1cdHJldHVybiBcdTAwMjZmLVx1MDAzZWZfcGF0aDtcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MjUyNj1zdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBpbm9kZSAqZmlsZV91c2VyX2lub2RlKGNvbnN0IHN0cnVjdCBmaWxlICpmKVxuLS1cbmluY2x1ZGUvbGludXgvZnMuaC0yNTI4LVx0aWYgKHVubGlrZWx5KGYtXHUwMDNlZl9tb2RlIFx1MDAyNiBGTU9ERV9CQUNLSU5HKSlcbmluY2x1ZGUvbGludXgvZnMuaDoyNTI5Olx0XHRyZXR1cm4gZF9pbm9kZShiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGYpLVx1MDAzZWRlbnRyeSk7XG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUzMC1cdHJldHVybiBmaWxlX2lub2RlKGYpO1xuLS1cbmtlcm5lbC9ldmVudHMvY29yZS5jPTk3NTM9c3RhdGljIHZvaWQgcGVyZl9ldmVudF9tbWFwX2V2ZW50KHN0cnVjdCBwZXJmX21tYXBfZXZlbnQgKm1tYXBfZXZlbnQpXG4tLVxua2VybmVsL2V2ZW50cy9jb3JlLmMtOTc5NS1cdFx0ICovXG5rZXJuZWwvZXZlbnRzL2NvcmUuYzo5Nzk2Olx0XHRuYW1lID0gZF9wYXRoKGZpbGVfdXNlcl9wYXRoKGZpbGUpLCBidWYsIFBBVEhfTUFYIC0gc2l6ZW9mKHU2NCkpO1xua2VybmVsL2V2ZW50cy9jb3JlLmMtOTc5Ny1cdFx0aWYgKElTX0VSUihuYW1lKSkge1xuLS1cbmtlcm5lbC90cmFjZS90cmFjZV9vdXRwdXQuYz00MjQ9c3RhdGljIGludCBzZXFfcHJpbnRfdXNlcl9pcChzdHJ1Y3QgdHJhY2Vfc2VxICpzLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbi0tXG5rZXJuZWwvdHJhY2UvdHJhY2Vfb3V0cHV0LmMtNDQzLVx0XHRpZiAoZmlsZSkge1xua2VybmVsL3RyYWNlL3RyYWNlX291dHB1dC5jOjQ0NDpcdFx0XHRyZXQgPSB0cmFjZV9zZXFfcGF0aChzLCBmaWxlX3VzZXJfcGF0aChmaWxlKSk7XG5rZXJuZWwvdHJhY2UvdHJhY2Vfb3V0cHV0LmMtNDQ1LVx0XHRcdGlmIChyZXQpXG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTE3NDk9c3RhdGljIGludCBfX2ZpbGVfaGFzX3Blcm0oY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQsIGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy0xNzY2LVx0XHRiZnNlYyA9IHNlbGludXhfYmFja2luZ19maWxlKGZpbGUpO1xuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jOjE3Njc6XHRcdHBhdGggPSBiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGZpbGUpO1xuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTE3NjgtXHRcdHRzaWRfZmQgPSBiZnNlYy1cdTAwM2V1Zl9zaWQ7XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTM5NzI9c3RhdGljIGludCBfX2ZpbGVfbWFwX3Byb3RfY2hlY2soY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgcHJvdCxcbi0tXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzk4MS1cdFx0aWYgKGJmX3VzZXJfZmlsZSlcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzozOTgyOlx0XHRcdGlub2RlID0gZF9pbm9kZShiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGZpbGUpLVx1MDAzZWRlbnRyeSk7XG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzk4My1cdFx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NjQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVkZTIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBhIHNpZ25pZmljYW50IGFsdGVyYXRpb24gdG8gaG93IGBiYWNraW5nX2ZpbGVfb3BlbmAgaGFuZGxlcyBmaWxlIHBhdGhzLiBJbnN0ZWFkIG9mIGRpcmVjdGx5IHVzaW5nIGAmYW1wO3VzZXJfZmlsZS0mZ3Q7Zl9wYXRoYCwgaXQmIzM5O3Mgbm93IGNhbGxpbmcgYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgLiBUaGlzIGBmaWxlX3VzZXJfcGF0aGAgZnVuY3Rpb24gYWRkcyBhIGNvbmRpdGlvbmFsIOKAkyBpZiB0aGUgYHVzZXJfZmlsZWAgaXRzZWxmIGlzIGEgJiMzNDtiYWNraW5nIGZpbGUmIzM0OyAoYXMgaW5kaWNhdGVkIGJ5IHRoZSBgRk1PREVfQkFDS0lOR2AgZmxhZyksIGl0IHJlY3Vyc2l2ZWx5IGNhbGxzIGBiYWNraW5nX2ZpbGVfdXNlcl9wYXRoYCB0byBnZXQgdGhlIHBhdGguIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZnVuZGFtZW50YWxseSBzaGlmdCBiZWhhdmlvciBpbiB0aGUgVkZTIGxheWVyLCBwYXJ0aWN1bGFybHkgaW1wYWN0aW5nIHN0YWNrZWQgZmlsZXN5c3RlbXMuCgpJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBWRlMgbG9naWMuIFN0YWNrZWQgZmlsZXN5c3RlbXMgbGlrZSBvdmVybGF5ZnMgb3IgZnVzZSBwYXNzdGhyb3VnaCBhcmUgdGhlIG1vc3Qgb2J2aW91cyB0YXJnZXRzIGZvciB0aGlzIGNoYW5nZS4gVGhpcyBpcyBnb2luZyB0byBjaGFuZ2UgdGhlIHBhdGhzIHJldHVybmVkIGZyb20gdGhlIGJhY2tpbmcgZmlsZXN5c3RlbS4KClRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBjb25maXJtIHRoYXQgYGJhY2tpbmdfZmlsZV9vcGVuYCBpcyBhY3R1YWxseSByZWFjaGFibGUsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGlzLCB0aHJvdWdoIGBvdmxfb3Blbl9yZWFsZmlsZWAsIGBmdXNlX3Bhc3N0aHJvdWdoX29wZW5gLCBhbmQgYGVyb2ZzX2lzaGFyZV9maWxlX29wZW5gLiBPa2F5LCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBpbiBgZnMvYmFja2luZy1maWxlLmNgIHRvIGNvbmZpcm0gdGhlIGNvZGUgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2JhY2tpbmctZmlsZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQvKlxuICAgMzpcdCAqIENvbW1vbiBoZWxwZXJzIGZvciBzdGFja2FibGUgZmlsZXN5c3RlbXMgYW5kIGJhY2tpbmcgZmlsZXMuXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBGb3JrZWQgZnJvbSBmcy9vdmVybGF5ZnMvZmlsZS5jLlxuICAgNjpcdCAqXG4gICA3Olx0ICogQ29weXJpZ2h0IChDKSAyMDE3IFJlZCBIYXQsIEluYy5cbiAgIDg6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMjMgQ1RFUkEgTmV0d29ya3MuXG4gICA5Olx0ICovXG4gIDEwOlx0XG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2JhY2tpbmctZmlsZS5oXHUwMDNlXG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvc3BsaWNlLmhcdTAwM2VcbiAgMTQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4gIDE1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2VjdXJpdHkuaFx1MDAzZVxuICAxNjpcdFxuICAxNzpcdCNpbmNsdWRlIFwmIzM0O2ludGVybmFsLmhcJiMzNDtcbiAgMTg6XHRcbiAgMTk6XHQvKipcbiAgMjA6XHQgKiBiYWNraW5nX2ZpbGVfb3BlbiAtIG9wZW4gYSBiYWNraW5nIGZpbGUgZm9yIGtlcm5lbCBpbnRlcm5hbCB1c2VcbiAgMjE6XHQgKiBAdXNlcl9maWxlOiAgZmlsZSB0aGUgdXNlciByZXF1ZXN0ZWQgdG8gb3BlblxuICAyMjpcdCAqIEBmbGFnczpcdG9wZW4gZmxhZ3NcbiAgMjM6XHQgKiBAcmVhbF9wYXRoOlx0cGF0aCBvZiB0aGUgYmFja2luZyBmaWxlXG4gIDI0Olx0ICogQGNyZWQ6XHRjcmVkZW50aWFscyBmb3Igb3BlblxuICAyNTpcdCAqXG4gIDI2Olx0ICogT3BlbiBhIGJhY2tpbmcgZmlsZSBmb3IgYSBzdGFja2FibGUgZmlsZXN5c3RlbSAoZS5nLiwgb3ZlcmxheWZzKS5cbiAgMjc6XHQgKiBAdXNlcl9maWxlLVx1MDAzZWZfcGF0aCBtYXkgYmUgb24gdGhlIHN0YWNrYWJsZSBmaWxlc3lzdGVtIGFuZCBAcmVhbF9wYXRoXG4gIDI4Olx0ICogb24gdGhlIHVuZGVybHlpbmcgZmlsZXN5c3RlbS4gSW4gdGhpcyBjYXNlLCB3ZSB3YW50IHRvIGJlIGFibGUgdG9cbiAgMjk6XHQgKiByZXR1cm4gdGhlIHBhdGggb2YgdGhlIHN0YWNrYWJsZSBmaWxlc3lzdGVtLiBUaGlzIGlzIGRvbmUgYnlcbiAgMzA6XHQgKiBlbWJlZGRpbmcgdGhlIHJldHVybmVkIGZpbGUgaW50byBhIGNvbnRhaW5lciBzdHJ1Y3R1cmUgdGhhdCBhbHNvXG4gIDMxOlx0ICogc3RvcmVzIHRoZSBzdGFja2VkIGZpbGUmIzM5O3MgcGF0aCwgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCB1c2luZ1xuICAzMjpcdCAqIGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoKS5cbiAgMzM6XHQgKi9cbiAgMzQ6XHRzdHJ1Y3QgZmlsZSAqYmFja2luZ19maWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxuICAzNTpcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcmVhbF9wYXRoLFxuICAzNjpcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZClcbiAgMzc6XHR7XG4gIDM4Olx0XHRjb25zdCBzdHJ1Y3QgcGF0aCAqdXNlcl9wYXRoID0gZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKTtcbiAgMzk6XHRcdHN0cnVjdCBmaWxlICpmO1xuICA0MDpcdFx0aW50IGVycm9yO1xuICA0MTpcdFxuICA0MjpcdFx0ZiA9IGFsbG9jX2VtcHR5X2JhY2tpbmdfZmlsZShmbGFncywgY3JlZCwgdXNlcl9maWxlKTtcbiAgNDM6XHRcdGlmIChJU19FUlIoZikpXG4gIDQ0Olx0XHRcdHJldHVybiBmO1xuICA0NTpcdFxuICA0NjpcdFx0cGF0aF9nZXQodXNlcl9wYXRoKTtcbiAgNDc6XHRcdGJhY2tpbmdfZmlsZV9zZXRfdXNlcl9wYXRoKGYsIHVzZXJfcGF0aCk7XG4gIDQ4Olx0XHRlcnJvciA9IHZmc19vcGVuKHJlYWxfcGF0aCwgZik7XG4gIDQ5Olx0XHRpZiAoZXJyb3IpIHtcbiAgNTA6XHRcdFx0ZnB1dChmKTtcbiAgNTE6XHRcdFx0ZiA9IEVSUl9QVFIoZXJyb3IpO1xuICA1MjpcdFx0fVxuICA1MzpcdFxuICA1NDpcdFx0cmV0dXJuIGY7XG4gIDU1Olx0fVxuICA1NjpcdEVYUE9SVF9TWU1CT0xfR1BMKGJhY2tpbmdfZmlsZV9vcGVuKTtcbiAgNTc6XHRcbiAgNTg6XHRzdHJ1Y3QgZmlsZSAqYmFja2luZ190bXBmaWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxuICA1OTpcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcGF0aCAqcmVhbF9wYXJlbnRwYXRoLFxuICA2MDpcdFx0XHRcdFx0ICB1bW9kZV90IG1vZGUsIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKVxuICA2MTpcdHtcbiAgNjI6XHRcdHN0cnVjdCBtbnRfaWRtYXAgKnJlYWxfaWRtYXAgPSBtbnRfaWRtYXAocmVhbF9wYXJlbnRwYXRoLVx1MDAzZW1udCk7XG4gIDYzOlx0XHRjb25zdCBzdHJ1Y3QgcGF0aCAqdXNlcl9wYXRoID0gXHUwMDI2dXNlcl9maWxlLVx1MDAzZWZfcGF0aDtcbiAgNjQ6XHRcdHN0cnVjdCBmaWxlICpmO1xuICA2NTpcdFx0aW50IGVycm9yO1xuICA2NjpcdFxuICA2NzpcdFx0ZiA9IGFsbG9jX2VtcHR5X2JhY2tpbmdfZmlsZShmbGFncywgY3JlZCwgdXNlcl9maWxlKTtcbiAgNjg6XHRcdGlmIChJU19FUlIoZikpXG4gIDY5Olx0XHRcdHJldHVybiBmO1xuICA3MDpcdFxuICA3MTpcdFx0cGF0aF9nZXQodXNlcl9wYXRoKTtcbiAgNzI6XHRcdGJhY2tpbmdfZmlsZV9zZXRfdXNlcl9wYXRoKGYsIHVzZXJfcGF0aCk7XG4gIDczOlx0XHRlcnJvciA9IHZmc190bXBmaWxlKHJlYWxfaWRtYXAsIHJlYWxfcGFyZW50cGF0aCwgZiwgbW9kZSk7XG4gIDc0Olx0XHRpZiAoZXJyb3IpIHtcbiAgNzU6XHRcdFx0ZnB1dChmKTtcbiAgNzY6XHRcdFx0ZiA9IEVSUl9QVFIoZXJyb3IpO1xuICA3NzpcdFx0fVxuICA3ODpcdFx0cmV0dXJuIGY7XG4gIDc5Olx0fVxuICA4MDpcdEVYUE9SVF9TWU1CT0woYmFja2luZ190bXBmaWxlX29wZW4pO1xuICA4MTpcdFxuICA4MjpcdHN0cnVjdCBiYWNraW5nX2FpbyB7XG4gIDgzOlx0XHRzdHJ1Y3Qga2lvY2IgaW9jYjtcbiAgODQ6XHRcdHJlZmNvdW50X3QgcmVmO1xuICA4NTpcdFx0c3RydWN0IGtpb2NiICpvcmlnX2lvY2I7XG4gIDg2Olx0XHQvKiB1c2VkIGZvciBhaW8gY29tcGxldGlvbiAqL1xuICA4NzpcdFx0dm9pZCAoKmVuZF93cml0ZSkoc3RydWN0IGtpb2NiICppb2NiLCBzc2l6ZV90KTtcbiAgODg6XHRcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xuICA4OTpcdFx0bG9uZyByZXM7XG4gIDkwOlx0fTtcbiAgOTE6XHRcbiAgOTI6XHRzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmJhY2tpbmdfYWlvX2NhY2hlcDtcbiAgOTM6XHRcbiAgOTQ6XHQjZGVmaW5lIEJBQ0tJTkdfSU9DQl9NQVNLIFxcXG4gIDk1Olx0XHQoSU9DQl9OT1dBSVQgfCBJT0NCX0hJUFJJIHwgSU9DQl9EU1lOQyB8IElPQ0JfU1lOQyB8IElPQ0JfQVBQRU5EKVxuICA5NjpcdFxuICA5NzpcdHN0YXRpYyByd2ZfdCBpb2NiX3RvX3J3X2ZsYWdzKGludCBmbGFncylcbiAgOTg6XHR7XG4gIDk5Olx0XHRyZXR1cm4gKF9fZm9yY2UgcndmX3QpKGZsYWdzIFx1MDAyNiBCQUNLSU5HX0lPQ0JfTUFTSyk7XG4gMTAwOlx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NTQKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgQmFja2luZyBGaWxlIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGFjY2Vzc2luZyBgJmFtcDt1c2VyX2ZpbGUtJmd0O2ZfcGF0aGAuIEkgc2VlIHRoYXQgaW1tZWRpYXRlbHksIGFuZCBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4KCkhvbGQgb24gYSBzZWNvbmQuLi4gSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZy4gYGJhY2tpbmdfdG1wZmlsZV9vcGVuYCAqYWxzbyogaGFzIGBjb25zdCBzdHJ1Y3QgcGF0aCAqdXNlcl9wYXRoID0gJmFtcDt1c2VyX2ZpbGUtJmd0O2ZfcGF0aDtgLiBJbnRlcmVzdGluZy4gQnV0IHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYGJhY2tpbmdfZmlsZV9vcGVuYC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHJpZ2h0LiBEZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBzY3J1dGluaXppbmcuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBmb2N1cyBmdXp6aW5nIGVmZm9ydHMgb24gYGJhY2tpbmdfZmlsZV9vcGVuYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgbmV3IGNvZGUgcGF0aCBpcy4gTm93LCBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgd2hpY2ggZmlsZXN5c3RlbXMgbWlnaHQgYmUgaW1wYWN0ZWQuIEl0IGxvb2tzIGxpa2UgYGJhY2tpbmdfZmlsZV9vcGVuYCBpcyB1c2VkIGJ5IG92ZXJsYXlmcywgZnVzZSwgYW5kIGVyb2ZzLiBJIHNob3VsZCBwcm9iYWJseSBlbmFibGUgdGhvc2UgY29uZmlncyB0byBlbnN1cmUgY29tcHJlaGVuc2l2ZSB0ZXN0aW5nLgoKVGltZSB0byBwdWxsIHVwIHRoZSBLY29uZmlncyBmb3IgZWFjaDogYGZzL292ZXJsYXlmcy9LY29uZmlnYCwgYGZzL2Z1c2UvS2NvbmZpZ2AsIGFuZCBgZnMvZXJvZnMvS2NvbmZpZ2AuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgT1ZFUkxBWV9GUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9vdmVybGF5ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvb3ZlcmxheWZzL0tjb25maWc6Mjpjb25maWcgT1ZFUkxBWV9GU1xuZnMvb3ZlcmxheWZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O092ZXJsYXkgZmlsZXN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvb3ZlcmxheWZzL0tjb25maWctMTQtXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoxNTpjb25maWcgT1ZFUkxBWV9GU19SRURJUkVDVF9ESVJcbmZzL292ZXJsYXlmcy9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtPdmVybGF5ZnM6IHR1cm4gb24gcmVkaXJlY3QgZGlyZWN0b3J5IGZlYXR1cmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTMwLVxuZnMvb3ZlcmxheWZzL0tjb25maWc6MzE6Y29uZmlnIE9WRVJMQVlfRlNfUkVESVJFQ1RfQUxXQVlTX0ZPTExPV1xuZnMvb3ZlcmxheWZzL0tjb25maWctMzItXHRib29sIFwmIzM0O092ZXJsYXlmczogZm9sbG93IHJlZGlyZWN0cyBldmVuIGlmIHJlZGlyZWN0cyBhcmUgdHVybmVkIG9mZlwmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTQ1LVxuZnMvb3ZlcmxheWZzL0tjb25maWc6NDY6Y29uZmlnIE9WRVJMQVlfRlNfSU5ERVhcbmZzL292ZXJsYXlmcy9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtPdmVybGF5ZnM6IHR1cm4gb24gaW5vZGVzIGluZGV4IGZlYXR1cmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTY0LVxuZnMvb3ZlcmxheWZzL0tjb25maWc6NjU6Y29uZmlnIE9WRVJMQVlfRlNfTkZTX0VYUE9SVFxuZnMvb3ZlcmxheWZzL0tjb25maWctNjYtXHRib29sIFwmIzM0O092ZXJsYXlmczogdHVybiBvbiBORlMgZXhwb3J0IGZlYXR1cmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTkyLVxuZnMvb3ZlcmxheWZzL0tjb25maWc6OTM6Y29uZmlnIE9WRVJMQVlfRlNfWElOT19BVVRPXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy05NC1cdGJvb2wgXCYjMzQ7T3ZlcmxheWZzOiBhdXRvIGVuYWJsZSBpbm9kZSBudW1iZXIgbWFwcGluZ1wmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTExMC1cbmZzL292ZXJsYXlmcy9LY29uZmlnOjExMTpjb25maWcgT1ZFUkxBWV9GU19NRVRBQ09QWVxuZnMvb3ZlcmxheWZzL0tjb25maWctMTEyLVx0Ym9vbCBcJiMzNDtPdmVybGF5ZnM6IHR1cm4gb24gbWV0YWRhdGEgb25seSBjb3B5IHVwIGZlYXR1cmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbmZzL292ZXJsYXlmcy9LY29uZmlnLTEyOC1cbmZzL292ZXJsYXlmcy9LY29uZmlnOjEyOTpjb25maWcgT1ZFUkxBWV9GU19ERUJVR1xuZnMvb3ZlcmxheWZzL0tjb25maWctMTMwLVx0Ym9vbCBcJiMzNDtPdmVybGF5ZnM6IHR1cm4gb24gZXh0cmEgZGVidWdnaW5nIGNoZWNrc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTA3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczoKCioqRXhhbWluaW5nIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSB0aGluayBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBvdXQgdGhlIEtjb25maWcgZmlsZXMgZm9yIGJvdGggdGhlIEZVU0UgZmlsZXN5c3RlbSAoYGZzL2Z1c2UvS2NvbmZpZ2ApIGFuZCB0aGUgRVJPRlMgZmlsZXN5c3RlbSAoYGZzL2Vyb2ZzL0tjb25maWdgKS4gVGhhdCYjMzk7cyB0aGUgc3RhbmRhcmQgcGxhY2UgdG8gZGVmaW5lIGFuZCBkb2N1bWVudCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc28gaXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGZpbGVzeXN0ZW1zIGFyZSBjb25maWd1cmVkIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBvbiB0aGluZ3MgbGlrZSB3aGV0aGVyIHRoZSBtb2R1bGVzIGFyZSBidWlsdCBpbiBvciBsb2FkYWJsZSwgYW55IHNwZWNpZmljIGZlYXR1cmVzIHRoYXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBtYXliZSBldmVuIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgZXNwZWNpYWxseSBpZiBJIHdhbnQgdG8gbG9vayBhdCBtYWtpbmcgY2hhbmdlcyB0byB0aGUgYnVpbGQgcHJvY2VzcyBvciBtb2RpZnlpbmcgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlVTRV9GUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXG5mcy9mdXNlL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MTAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVJPRlNfRlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvS2NvbmZpZy0yLVxuZnMvZXJvZnMvS2NvbmZpZzozOmNvbmZpZyBFUk9GU19GU1xuZnMvZXJvZnMvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7RVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy00OS1cbmZzL2Vyb2ZzL0tjb25maWc6NTA6Y29uZmlnIEVST0ZTX0ZTX0RFQlVHXG5mcy9lcm9mcy9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtFUk9GUyBkZWJ1Z2dpbmcgZmVhdHVyZVwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctNTktXG5mcy9lcm9mcy9LY29uZmlnOjYwOmNvbmZpZyBFUk9GU19GU19YQVRUUlxuZnMvZXJvZnMvS2NvbmZpZy02MS1cdGJvb2wgXCYjMzQ7RVJPRlMgZXh0ZW5kZWQgYXR0cmlidXRlc1wmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctNzAtXG5mcy9lcm9mcy9LY29uZmlnOjcxOmNvbmZpZyBFUk9GU19GU19QT1NJWF9BQ0xcbmZzL2Vyb2ZzL0tjb25maWctNzItXHRib29sIFwmIzM0O0VST0ZTIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy04NC1cbmZzL2Vyb2ZzL0tjb25maWc6ODU6Y29uZmlnIEVST0ZTX0ZTX1NFQ1VSSVRZXG5mcy9lcm9mcy9LY29uZmlnLTg2LVx0Ym9vbCBcJiMzNDtFUk9GUyBTZWN1cml0eSBMYWJlbHNcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTk3LVxuZnMvZXJvZnMvS2NvbmZpZzo5ODpjb25maWcgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVcbmZzL2Vyb2ZzL0tjb25maWctOTktXHRib29sIFwmIzM0O0ZpbGUtYmFja2VkIEVST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTExLVxuZnMvZXJvZnMvS2NvbmZpZzoxMTI6Y29uZmlnIEVST0ZTX0ZTX1pJUFxuZnMvZXJvZnMvS2NvbmZpZy0xMTMtXHRib29sIFwmIzM0O0VST0ZTIERhdGEgQ29tcHJlc3Npb24gU3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTIxLVxuZnMvZXJvZnMvS2NvbmZpZzoxMjI6Y29uZmlnIEVST0ZTX0ZTX1pJUF9MWk1BXG5mcy9lcm9mcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7RVJPRlMgTFpNQSBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTMzLVxuZnMvZXJvZnMvS2NvbmZpZzoxMzQ6Y29uZmlnIEVST0ZTX0ZTX1pJUF9MWk1BX0RFRkFVTFRfTUFYX1NUUkVBTVNcbmZzL2Vyb2ZzL0tjb25maWctMTM1LVx0aW50IFwmIzM0O0VST0ZTIExaTUEgZGVmYXVsdCBtYXhpbXVtIGRlY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTQ3LVxuZnMvZXJvZnMvS2NvbmZpZzoxNDg6Y29uZmlnIEVST0ZTX0ZTX1pJUF9ERUZMQVRFXG5mcy9lcm9mcy9LY29uZmlnLTE0OS1cdGJvb2wgXCYjMzQ7RVJPRlMgREVGTEFURSBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTU4LVxuZnMvZXJvZnMvS2NvbmZpZzoxNTk6Y29uZmlnIEVST0ZTX0ZTX1pJUF9aU1REXG5mcy9lcm9mcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7RVJPRlMgWnN0YW5kYXJkIGNvbXByZXNzZWQgZGF0YSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy0xNjktXG5mcy9lcm9mcy9LY29uZmlnOjE3MDpjb25maWcgRVJPRlNfRlNfWklQX0FDQ0VMXG5mcy9lcm9mcy9LY29uZmlnLTE3MS1cdGJvb2wgXCYjMzQ7RVJPRlMgaGFyZHdhcmUgZGVjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy0xODMtXG5mcy9lcm9mcy9LY29uZmlnOjE4NDpjb25maWcgRVJPRlNfRlNfUENQVV9LVEhSRUFEXG5mcy9lcm9mcy9LY29uZmlnLTE4NS1cdGJvb2wgXCYjMzQ7RVJPRlMgcGVyLWNwdSBkZWNvbXByZXNzaW9uIGt0aHJlYWQgd29ya2Vyc1wmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTkyLVxuZnMvZXJvZnMvS2NvbmZpZzoxOTM6Y29uZmlnIEVST0ZTX0ZTX1BDUFVfS1RIUkVBRF9ISVBSSVxuZnMvZXJvZnMvS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O0VST0ZTIGhpZ2ggcHJpb3JpdHkgcGVyLUNQVSBrdGhyZWFkIHdvcmtlcnNcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTIwMi1cbmZzL2Vyb2ZzL0tjb25maWc6MjAzOmNvbmZpZyBFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cdGJvb2wgXCYjMzQ7RVJPRlMgcGFnZSBjYWNoZSBzaGFyZSBzdXBwb3J0IChleHBlcmltZW50YWwpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NTcKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipGVVNFX1BBU1NUSFJPVUdIOiBBIFF1aWNrIFJlY2FwKioKCk9rYXksIHNvIEkmIzM5O20gcHJvY2Vzc2luZyB0aGlzIGNvbmZpZyBwYXJhbWV0ZXIuLi4gV2FpdCBhIG1pbnV0ZS4gYEZVU0VfUEFTU1RIUk9VR0hgLiBJdCYjMzk7cyBoaXR0aW5nIG1lIG5vdy4gVGhhdCYjMzk7cyAqdGhlKiBjb25maWd1cmF0aW9uIG9wdGlvbiBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBGVVNFIHBhc3N0aHJvdWdoLCBpc24mIzM5O3QgaXQ/IEp1c3QgbWFraW5nIHN1cmUgSSYjMzk7bSBvbiB0aGUgcmlnaHQgdHJhY2sgaGVyZSwgdGhpcyBkZXRlcm1pbmVzIGhvdyB0aGUgZmlsZSBzeXN0ZW0gcGFzc2VzIGNhbGxzIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgc3lzdGVtLiBObyBhbWJpZ3VpdHksIGdvdCBpdC4gR29vZCB0byBjbGFyaWZ5IHRoZXNlIHNtYWxsIGRldGFpbHMgYXMgSSBtb3ZlIHRocm91Z2ggbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlVTRV9QQVNTVEhST1VHSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWc9NDM9Y29uZmlnIEZVU0VfREFYXG4tLVxuZnMvZnVzZS9LY29uZmlnLTU2LVxuZnMvZnVzZS9LY29uZmlnOjU3OmNvbmZpZyBGVVNFX1BBU1NUSFJPVUdIXG5mcy9mdXNlL0tjb25maWctNTgtXHRib29sIFwmIzM0O0ZVU0UgcGFzc3Rocm91Z2ggb3BlcmF0aW9ucyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDA4CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqSW5pdGlhbCBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEJhc2VkIG9uIHRoZSBwcm9qZWN0IHJlcXVpcmVtZW50cyBhbmQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLCBpdCBsb29rcyBsaWtlIHdlIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGtleSBmaWxlc3lzdGVtIG9wdGlvbnMuIEkmIzM5O20gdGhpbmtpbmcgd2UgYWJzb2x1dGVseSAqbXVzdCogZW5hYmxlIGBPVkVSTEFZX0ZTYC4gVGhpcyBpcyBwcmV0dHkgY3J1Y2lhbCBmb3IgYWxsb3dpbmcgcmVhZC13cml0ZSBsYXllcnMgb24gdG9wIG9mIG91ciBiYXNlIHJlYWQtb25seSBzeXN0ZW0uIFRoZW4sIGZvciB2ZXJzYXRpbGl0eSBhbmQgaW50ZWdyYXRpb24gd2l0aCB1c2VyLXNwYWNlIHRvb2xzLCBgRlVTRV9GU2AgYW5kIGBGVVNFX1BBU1NUSFJPVUdIYCBzZWVtIGxpa2Ugc29saWQgY2hvaWNlcy4gV2UmIzM5O2xsIG5lZWQgdGhvc2UgaWYgd2Ugd2FudCB0byBkeW5hbWljYWxseSBtb3VudCBmaWxlc3lzdGVtcyBkZWZpbmVkIGluIHVzZXIgc3BhY2UgYW5kIGhhbmRsZSBwYXNzdGhyb3VnaCBvcGVyYXRpb25zLiBGaW5hbGx5LCBmb3IgdGhlIHJlYWQtb25seSBmb3VuZGF0aW9uYWwgbGF5ZXIsIHdlIGFyZSBnb2luZyB0byBlbmFibGUgYEVST0ZTX0ZTYCBhbmQgaXRzIGJhY2tpbmcgZmlsZSBvcHRpb246IGBFUk9GU19GU19CQUNLRURfQllfRklMRWAuCgpCdXQgYmVmb3JlIHdlIG1vdmUgZm9yd2FyZCBvbiBFUk9GUywgaXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggY3JpdGljYWwgY29tcG9uZW50cyBsaWtlIGZpbGVzeXN0ZW1zLiBMZXQmIzM5O3Mgbm90IG1ha2UgYW55IGFzc3VtcHRpb25zLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGBmcy9lcm9mcy9pc2hhcmUuY2AuIE15IG9iamVjdGl2ZSBpcyB0byB2ZXJpZnkgaWYgdGhlcmUmIzM5O3MgYW55IGltcGxpY2l0IGRlcGVuZGVuY3kgb24gYEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVgLCBiZWZvcmUgd2UgbW92ZSBmb3J3YXJkIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24uIFRoYXQgd2lsbCBuZWVkIHRvIGJlIGxvb2tlZCBhdCBiZWZvcmUgd2UgbW92ZSBmb3J3YXJkLiBXZSBkbyBub3Qgd2FudCBhbnkgc3VycHJpc2VzIG9yIHJlZ3Jlc3Npb25zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcm9mc19pc2hhcmVfZmlsZV9vcGVuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL2lzaGFyZS5jPTgyPXZvaWQgZXJvZnNfaXNoYXJlX2ZyZWVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9lcm9mcy9pc2hhcmUuYy05NS1cbmZzL2Vyb2ZzL2lzaGFyZS5jOjk2OnN0YXRpYyBpbnQgZXJvZnNfaXNoYXJlX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Vyb2ZzL2lzaGFyZS5jLTk3LXtcbi0tXG5mcy9lcm9mcy9pc2hhcmUuYz0xNTc9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBlcm9mc19pc2hhcmVfZm9wcyA9IHtcbmZzL2Vyb2ZzL2lzaGFyZS5jOjE1ODpcdC5vcGVuXHRcdD0gZXJvZnNfaXNoYXJlX2ZpbGVfb3BlbixcbmZzL2Vyb2ZzL2lzaGFyZS5jLTE1OS1cdC5sbHNlZWtcdFx0PSBnZW5lcmljX2ZpbGVfbGxzZWVrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDYyNAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkVyb2ZzIGFuZCBQYWdlIENhY2hlIFNoYXJpbmcqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGBmcy9lcm9mcy9pc2hhcmUuY2AgaXMgaW52b2x2ZWQgd2hlbiBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAgaXMgYWN0aXZlLiBUaGF0IHNvdW5kcyByaWdodCwgZ2l2ZW4gdGhlIG5hbWUuIEJ1dCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgY29tcGlsYXRpb24gZGVwZW5kZW5jeS4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGBmcy9lcm9mcy9NYWtlZmlsZWAuIEkmIzM5O2xsIGNvbmZpcm0gaG93IHRoYXQgcHJlcHJvY2Vzc29yIG1hY3JvIHRyYW5zbGF0ZXMgdG8gb2JqZWN0IGZpbGUgaW5jbHVzaW9uLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbiBpdCBjb250cm9scyB0aGUgYnVpbGQgcHJvY2VzcyB0aGVyZSwgYnV0IEkgbmVlZCB0byBzZWUgdGhlIGV4YWN0IGNvbmRpdGlvbmFscyB0byBiZSBzdXJlLiBKdXN0IG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoZSBidWlsZCByZWNpcGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA0OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzaGFyZS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL01ha2VmaWxlPTExPWVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKSAmIzQzOz0gZmlsZWlvLm9cbmZzL2Vyb2ZzL01ha2VmaWxlOjEyOmVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUpICYjNDM7PSBpc2hhcmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDkxMwoJCQkJCQkJb3V0cHV0OiAxNjUKCQkJCQkJCXRob3VnaHRzOiAxODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEVST0ZTIEZpbGVzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gdGhlIGtleSB0YWtlYXdheSBoZXJlIGlzIHRoYXQgd2UgKm5lZWQqIGBFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFYC4gTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlOiBgT1ZFUkxBWV9GU2AsIGBGVVNFX0ZTYCwgYEZVU0VfUEFTU1RIUk9VR0hgLCBgRVJPRlNfRlNgLCBhbmQgb2YgY291cnNlLCB0aGUgb25lIHdlJiMzOTtyZSB6ZXJvaW5nIGluIG9uLCBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAuIFRoaXMgaXMgYWxsIHRvIHN1cHBvcnQgcGFnZSBjYWNoZSBzaGFyaW5nIHdpdGggYSBiYWNraW5nIGZpbGUuCgpUaGUgY29yZSBmdW5jdGlvbiB0byBleGFtaW5lIGlzIGBiYWNraW5nX2ZpbGVfb3BlbmAuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgYWN0aW9uIGlzLiBUaGUgcGF0Y2ggaXMgc3VidGx5IGNoYW5naW5nIHRoZSBWRlMgbG9naWMuIFNwZWNpZmljYWxseSwgaXQmIzM5O3Mgc3dhcHBpbmcgb3V0IGAmYW1wO3VzZXJfZmlsZS0mZ3Q7Zl9wYXRoYCBmb3IgYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgIHdpdGhpbiBgYmFja2luZ19maWxlX29wZW5gLiBGcm9tIGEgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCB0aGlzIGlzIGEgc2lnbmlmaWNhbnQgYWx0ZXJhdGlvbi4gVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBjaGFuZ2U/IEl0IGRpcmVjdGx5IGltcGFjdHMgaG93IHBhdGggcmVzb2x1dGlvbiBmdW5jdGlvbnMgd2l0aGluIHN0YWNrZWQgZmlsZXN5c3RlbXMuIFRoaW5rIE92ZXJsYXlGUyBhbmQgRlVTRSBwYXNzdGhyb3VnaCwgd2hlcmUgdGhlICYjMzQ7dXNlciBmaWxlJiMzNDsgY291bGQsIGluIGZhY3QsIGJlIGEgbG93ZXItbGV2ZWwgYmFja2luZyBmaWxlLiBUaGUgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGFuZCBhZmZlY3QgaG93IHBhdGhzIGFyZSByZXNvbHZlZC4KCldlJiMzOTtyZSByZXNvbHZpbmcgYSBwYXRoIGZyb20gdXNlciBzcGFjZSwgYW5kIHVzaW5nIGl0IGZvciBiYWNraW5nIHRoZSBlcm9mcyBwYWdlIGNhY2hlLgoKVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1ZFUkxBWV9GUyYjMzQ7LAogICAgJiMzNDtGVVNFX0ZTJiMzNDssCiAgICAmIzM0O0ZVU0VfUEFTU1RIUk9VR0gmIzM0OywKICAgICYjMzQ7RVJPRlNfRlMmIzM0OywKICAgICYjMzQ7RVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhY2tpbmdfZmlsZV9vcGVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIFZGUyBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBzdGFja2VkIGZpbGVzeXN0ZW1zIGxpa2Ugb3ZlcmxheWZzIG9yIGZ1c2UgcGFzc3Rocm91Z2gsIHdoZXJlIHRoZSB1c2VyIGZpbGUgaXRzZWxmIG1pZ2h0IGJlIGEgYmFja2luZyBmaWxlLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIGFmZmVjdHMgaG93IHBhdGhzIGFyZSByZXNvbHZlZCBmb3IgYmFja2luZyBmaWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1ZFUkxBWV9GUyYjMzQ7LAogICAgJiMzNDtGVVNFX0ZTJiMzNDssCiAgICAmIzM0O0ZVU0VfUEFTU1RIUk9VR0gmIzM0OywKICAgICYjMzQ7RVJPRlNfRlMmIzM0OywKICAgICYjMzQ7RVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhY2tpbmdfZmlsZV9vcGVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIFZGUyBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBzdGFja2VkIGZpbGVzeXN0ZW1zIGxpa2Ugb3ZlcmxheWZzIG9yIGZ1c2UgcGFzc3Rocm91Z2gsIHdoZXJlIHRoZSB1c2VyIGZpbGUgaXRzZWxmIG1pZ2h0IGJlIGEgYmFja2luZyBmaWxlLiBUaGlzIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIGFmZmVjdHMgaG93IHBhdGhzIGFyZSByZXNvbHZlZCBmb3IgYmFja2luZyBmaWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ4OjQ1LjYyNzYzODMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYyNjAyODE5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1ZFUkxBWV9GU1wiLFxuICAgIFwiRlVTRV9GU1wiLFxuICAgIFwiRlVTRV9QQVNTVEhST1VHSFwiLFxuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiYWNraW5nX2ZpbGVfb3BlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcXHUwMDI2dXNlcl9maWxlLVxcdTAwM2VmX3BhdGhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gVkZTIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZm9yIHN0YWNrZWQgZmlsZXN5c3RlbXMgbGlrZSBvdmVybGF5ZnMgb3IgZnVzZSBwYXNzdGhyb3VnaCwgd2hlcmUgdGhlIHVzZXIgZmlsZSBpdHNlbGYgbWlnaHQgYmUgYSBiYWNraW5nIGZpbGUuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBhbmQgYWZmZWN0cyBob3cgcGF0aHMgYXJlIHJlc29sdmVkIGZvciBiYWNraW5nIGZpbGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNDo0ODo0NS42Mjc2NDM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDMwMDUzODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWYzYmI1ZDI5NjIxNmU0OThkMWQ3YmFjNmVlZGJhNDRiNTQ1ZGMwZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDA0OjQ4OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2JhY2tpbmctZmlsZS5jIGIvZnMvYmFja2luZy1maWxlLmNcXG5pbmRleCAwODBjOTk2OTZjZDBkLi5jYzEwMTE0M2Y5MjEyIDEwMDY0NFxcbi0tLSBhL2ZzL2JhY2tpbmctZmlsZS5jXFxuKysrIGIvZnMvYmFja2luZy1maWxlLmNcXG5AQCAtMzUsNyArMzUsNyBAQCBzdHJ1Y3QgZmlsZSAqYmFja2luZ19maWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxcbiBcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBhdGggKnJlYWxfcGF0aCxcXG4gXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKVxcbiB7XFxuLVxcdGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBcXHUwMDI2dXNlcl9maWxlLVxcdTAwM2VmX3BhdGg7XFxuK1xcdGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpO1xcbiBcXHRzdHJ1Y3QgZmlsZSAqZjtcXG4gXFx0aW50IGVycm9yO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDg6NDcuMDU4NDMwOTY5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQ4Mjk0Nzk3MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1ZFUkxBWV9GU1wiLFxuICAgIFwiRlVTRV9GU1wiLFxuICAgIFwiRlVTRV9QQVNTVEhST1VHSFwiLFxuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiYWNraW5nX2ZpbGVfb3BlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcXHUwMDI2dXNlcl9maWxlLVxcdTAwM2VmX3BhdGhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gVkZTIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZm9yIHN0YWNrZWQgZmlsZXN5c3RlbXMgbGlrZSBvdmVybGF5ZnMgb3IgZnVzZSBwYXNzdGhyb3VnaCwgd2hlcmUgdGhlIHVzZXIgZmlsZSBpdHNlbGYgbWlnaHQgYmUgYSBiYWNraW5nIGZpbGUuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBhbmQgYWZmZWN0cyBob3cgcGF0aHMgYXJlIHJlc29sdmVkIGZvciBiYWNraW5nIGZpbGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZjNiYjVkMjk2MjE2ZTQ5OGQxZDdiYWM2ZWVkYmE0NGI1NDVkYzBkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwNDo0ODo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2JhY2tpbmctZmlsZS5jIGIvZnMvYmFja2luZy1maWxlLmNcbmluZGV4IDA4MGM5OTY5NmNkMGQuLmNjMTAxMTQzZjkyMTIgMTAwNjQ0XG4tLS0gYS9mcy9iYWNraW5nLWZpbGUuY1xuKysrIGIvZnMvYmFja2luZy1maWxlLmNcbkBAIC0zNSw3ICszNSw3IEBAIHN0cnVjdCBmaWxlICpiYWNraW5nX2ZpbGVfb3Blbihjb25zdCBzdHJ1Y3QgZmlsZSAqdXNlcl9maWxlLCBpbnQgZmxhZ3MsXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwYXRoICpyZWFsX3BhdGgsXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoO1xuK1x0Y29uc3Qgc3RydWN0IHBhdGggKnVzZXJfcGF0aCA9IGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSk7XG4gXHRzdHJ1Y3QgZmlsZSAqZjtcbiBcdGludCBlcnJvcjtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ4OjQ3LjA1ODQzMjA1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzg1NTQzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2g6IEEgUXVpY2sgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIG1vZGlmeWluZyBgZnMvYmFja2luZy1maWxlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIHRoZSBgYmFja2luZ19maWxlX29wZW5gIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhleSd2ZSByZXBsYWNlZCBgXHUwMDI2dXNlcl9maWxlLVx1MDAzZWZfcGF0aGAgd2l0aCBhIGNhbGwgdG8gYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBrbm93IHRoYXQgbWVhbnMgSSBuZWVkIHRvIGRpZyBpbnRvIGJvdGggYGZzL2JhY2tpbmctZmlsZS5jYCBhbmQgdGhhdCBgZmlsZV91c2VyX3BhdGhgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgdGhhdCByZXBsYWNlbWVudCBkb2VzLiBJcyB0aGlzIGp1c3QgYSByZWZhY3RvcmluZywgb3IgaXMgdGhlcmUgYSBmdW5jdGlvbmFsIGNoYW5nZSBoYXBwZW5pbmc/IEFuZCBpZiBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGlzIHRoZXJlIGFueSBjaGFuY2UgdGhpcyBpcyBzb21ldGhpbmcgdGhhdCBtaWdodCBiZSBpbnRlcmVzdGluZyBmb3IgZnV6emluZz8gR290dGEgcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIG5ldyBjb2RlIHBhdGhzLCBvciBhIGRpZmZlcmVudCBpbnRlcnByZXRhdGlvbiBvZiBhbiBleGlzdGluZyBvbmUuIElmIHRoZXJl4oCZcyBhbiBhdHRhY2sgc3VyZmFjZSBjaGFuZ2UsIEkgbmVlZCB0byBrbm93LiBUaW1lIHRvIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzMywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ4OjUxLjI5Njk4ODI1OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg2MDI4MzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJhY2tpbmdfZmlsZV9vcGVuXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2JhY2tpbmctZmlsZS5jLTE5LS8qKlxcbmZzL2JhY2tpbmctZmlsZS5jOjIwOiAqIGJhY2tpbmdfZmlsZV9vcGVuIC0gb3BlbiBhIGJhY2tpbmcgZmlsZSBmb3Iga2VybmVsIGludGVybmFsIHVzZVxcbmZzL2JhY2tpbmctZmlsZS5jLTIxLSAqIEB1c2VyX2ZpbGU6ICBmaWxlIHRoZSB1c2VyIHJlcXVlc3RlZCB0byBvcGVuXFxuLS1cXG5mcy9iYWNraW5nLWZpbGUuYy0zMy0gKi9cXG5mcy9iYWNraW5nLWZpbGUuYzozNDpzdHJ1Y3QgZmlsZSAqYmFja2luZ19maWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxcbmZzL2JhY2tpbmctZmlsZS5jLTM1LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcmVhbF9wYXRoLFxcbi0tXFxuZnMvYmFja2luZy1maWxlLmMtNTUtfVxcbmZzL2JhY2tpbmctZmlsZS5jOjU2OkVYUE9SVF9TWU1CT0xfR1BMKGJhY2tpbmdfZmlsZV9vcGVuKTtcXG5mcy9iYWNraW5nLWZpbGUuYy01Ny1cXG4tLVxcbmZzL2Vyb2ZzL2lzaGFyZS5jPTk2PXN0YXRpYyBpbnQgZXJvZnNfaXNoYXJlX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2Vyb2ZzL2lzaGFyZS5jLTEwNi1cXG5mcy9lcm9mcy9pc2hhcmUuYzoxMDc6XFx0cmYgPSBiYWNraW5nX2ZpbGVfb3BlbihmaWxlLCBmaWxlLVxcdTAwM2VmX2ZsYWdzIHwgT19OT0FUSU1FLFxcbmZzL2Vyb2ZzL2lzaGFyZS5jLTEwOC1cXHRcXHRcXHQgICAgICAgXFx1MDAyNnNoYXJlZHBhdGgsIGN1cnJlbnRfY3JlZCgpKTtcXG4tLVxcbmZzL2Z1c2UvcGFzc3Rocm91Z2guYz0xNTI9c3RydWN0IGZ1c2VfYmFja2luZyAqZnVzZV9wYXNzdGhyb3VnaF9vcGVuKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgYmFja2luZ19pZClcXG4tLVxcbmZzL2Z1c2UvcGFzc3Rocm91Z2guYy0xNjktXFx0LyogQWxsb2NhdGUgYmFja2luZyBmaWxlIHBlciBmdXNlIGZpbGUgdG8gc3RvcmUgZnVzZSBwYXRoICovXFxuZnMvZnVzZS9wYXNzdGhyb3VnaC5jOjE3MDpcXHRiYWNraW5nX2ZpbGUgPSBiYWNraW5nX2ZpbGVfb3BlbihmaWxlLCBmaWxlLVxcdTAwM2VmX2ZsYWdzLFxcbmZzL2Z1c2UvcGFzc3Rocm91Z2guYy0xNzEtXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZmYi1cXHUwMDNlZmlsZS1cXHUwMDNlZl9wYXRoLCBmYi1cXHUwMDNlY3JlZCk7XFxuLS1cXG5mcy9vdmVybGF5ZnMvZmlsZS5jPTI4PXN0YXRpYyBzdHJ1Y3QgZmlsZSAqb3ZsX29wZW5fcmVhbGZpbGUoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9vdmVybGF5ZnMvZmlsZS5jLTUwLVxcbmZzL292ZXJsYXlmcy9maWxlLmM6NTE6XFx0XFx0XFx0cmVhbGZpbGUgPSBiYWNraW5nX2ZpbGVfb3BlbihmaWxlLFxcbmZzL292ZXJsYXlmcy9maWxlLmMtNTItXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBmbGFncywgcmVhbHBhdGgsIGN1cnJlbnRfY3JlZCgpKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmFja2luZy1maWxlLmg9MTU9c3RydWN0IGJhY2tpbmdfZmlsZV9jdHgge1xcbi0tXFxuaW5jbHVkZS9saW51eC9iYWNraW5nLWZpbGUuaC0yMC1cXG5pbmNsdWRlL2xpbnV4L2JhY2tpbmctZmlsZS5oOjIxOnN0cnVjdCBmaWxlICpiYWNraW5nX2ZpbGVfb3Blbihjb25zdCBzdHJ1Y3QgZmlsZSAqdXNlcl9maWxlLCBpbnQgZmxhZ3MsXFxuaW5jbHVkZS9saW51eC9iYWNraW5nLWZpbGUuaC0yMi1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBhdGggKnJlYWxfcGF0aCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDg6NTIuODgzMDIzMDY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2NTAyNzc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENoYW5nZSB0byBgYmFja2luZ19maWxlX29wZW5gKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyB0b3VjaGluZyBgYmFja2luZ19maWxlX29wZW5gLiBSaWdodCwgdGhhdCdzIGEga2V5IFZGUyBmdW5jdGlvbi4gSXQncyB1c2VkIGFjcm9zcyBhIGZldyBpbXBvcnRhbnQgZmlsZXN5c3RlbXM6IGBlcm9mc2AsIGBmdXNlYCwgYW5kIGBvdmVybGF5ZnNgLiBLbm93aW5nIHRoZXNlIGZpbGVzeXN0ZW1zLCBpdCdzIGNsZWFyIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHZpdGFsIGZvciBtYW5hZ2luZyBiYWNraW5nIGZpbGVzIGluIGRpZmZlcmVudCBjb250ZXh0cy5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBzd2FwcGluZyBvdXQgYFx1MDAyNnVzZXJfZmlsZS1cdTAwM2VmX3BhdGhgIHdpdGggYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgLiBJbnRyaWd1aW5nLiBDbGVhcmx5LCB3ZSdyZSBkZWFsaW5nIHdpdGggcGF0aCByZXByZXNlbnRhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UncmUgbW92aW5nIGZyb20gYSBkaXJlY3QgcG9pbnRlciB0byB0aGUgYGZfcGF0aGAgbWVtYmVyIG9mIHRoZSBgdXNlcl9maWxlYCBzdHJ1Y3QgdG8gc29tZXRoaW5nIGhhbmRsZWQgYnkgYSBmdW5jdGlvbi4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGZpbGVfdXNlcl9wYXRoYCBhY3R1YWxseSAqZG9lcyouIElzIGl0IHByb3ZpZGluZyBhIG1vcmUgcm9idXN0IGFic3RyYWN0aW9uPyBJcyBpdCBoYW5kbGluZyBzb21lIHNwZWNpYWwgY2FzZXM/IERvZXMgaXQgY2hhbmdlIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQ/IFRpbWUgdG8gZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJIHN1c3BlY3QgdGhlcmUncyBhIGdvb2QgcmVhc29uIGZvciB0aGlzIGNoYW5nZSwgYW5kIGl0J3MgcHJvYmFibHkgcmVsYXRlZCB0byB1c2VyLXNwYWNlIGludGVyYWN0aW9ucyBvciBwYXRoIG1hbmFnZW1lbnQgY29tcGxleGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDg6NTcuMzQ4MDUzNTQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjUxNTcyNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmlsZV91c2VyX3BhdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcmMva2VybmVsL3Ryb3VibGVzaG9vdC5jPTc3PXN0YXRpYyB2b2lkIHNob3dfZmF1bHRpbmdfdm1hKHVuc2lnbmVkIGxvbmcgYWRkcmVzcylcXG4tLVxcbmFyY2gvYXJjL2tlcm5lbC90cm91Ymxlc2hvb3QuYy05Ni1cXHRcXHRcXHQvKiBYWFg6IGNhbiB3ZSB1c2UgJXBEIGJlbG93IGFuZCBnZXQgcmlkIG9mIGJ1Zj8gKi9cXG5hcmNoL2FyYy9rZXJuZWwvdHJvdWJsZXNob290LmM6OTc6XFx0XFx0XFx0bm0gPSBkX3BhdGgoZmlsZV91c2VyX3BhdGgodm1hLVxcdTAwM2V2bV9maWxlKSwgYnVmLFxcbmFyY2gvYXJjL2tlcm5lbC90cm91Ymxlc2hvb3QuYy05OC1cXHRcXHRcXHRcXHQgICAgQVJDX1BBVEhfTUFYLTEpO1xcbi0tXFxuZnMvYmFja2luZy1maWxlLmMtMzEtICogc3RvcmVzIHRoZSBzdGFja2VkIGZpbGUncyBwYXRoLCB3aGljaCBjYW4gYmUgcmV0cmlldmVkIHVzaW5nXFxuZnMvYmFja2luZy1maWxlLmM6MzI6ICogYmFja2luZ19maWxlX3VzZXJfcGF0aCgpLlxcbmZzL2JhY2tpbmctZmlsZS5jLTMzLSAqL1xcbmZzL2JhY2tpbmctZmlsZS5jPTM0PXN0cnVjdCBmaWxlICpiYWNraW5nX2ZpbGVfb3Blbihjb25zdCBzdHJ1Y3QgZmlsZSAqdXNlcl9maWxlLCBpbnQgZmxhZ3MsXFxuLS1cXG5mcy9iYWNraW5nLWZpbGUuYy0zNy17XFxuZnMvYmFja2luZy1maWxlLmM6Mzg6XFx0Y29uc3Qgc3RydWN0IHBhdGggKnVzZXJfcGF0aCA9IGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSk7XFxuZnMvYmFja2luZy1maWxlLmMtMzktXFx0c3RydWN0IGZpbGUgKmY7XFxuLS1cXG5mcy9maWxlX3RhYmxlLmM9NTE9c3RydWN0IGJhY2tpbmdfZmlsZSB7XFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNjMtXFxuZnMvZmlsZV90YWJsZS5jOjY0OmNvbnN0IHN0cnVjdCBwYXRoICpiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGNvbnN0IHN0cnVjdCBmaWxlICpmKVxcbmZzL2ZpbGVfdGFibGUuYy02NS17XFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNjctfVxcbmZzL2ZpbGVfdGFibGUuYzo2ODpFWFBPUlRfU1lNQk9MX0dQTChiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKTtcXG5mcy9maWxlX3RhYmxlLmMtNjktXFxuLS1cXG5mcy9pbnRlcm5hbC5oPTExMz1zdGF0aWMgaW5saW5lIHZvaWQgZmlsZV9wdXRfd3JpdGVfYWNjZXNzKHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvaW50ZXJuYWwuaC0xMTctXFx0aWYgKHVubGlrZWx5KGZpbGUtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IEZNT0RFX0JBQ0tJTkcpKVxcbmZzL2ludGVybmFsLmg6MTE4OlxcdFxcdG1udF9wdXRfd3JpdGVfYWNjZXNzKGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoZmlsZSktXFx1MDAzZW1udCk7XFxuZnMvaW50ZXJuYWwuaC0xMTktfVxcbi0tXFxuZnMvb3Blbi5jPTkxMD1zdGF0aWMgaW5saW5lIGludCBmaWxlX2dldF93cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKmYpXFxuLS1cXG5mcy9vcGVuLmMtOTIwLVxcdGlmICh1bmxpa2VseShmLVxcdTAwM2VmX21vZGUgXFx1MDAyNiBGTU9ERV9CQUNLSU5HKSkge1xcbmZzL29wZW4uYzo5MjE6XFx0XFx0ZXJyb3IgPSBtbnRfZ2V0X3dyaXRlX2FjY2VzcyhiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGYpLVxcdTAwM2VtbnQpO1xcbmZzL29wZW4uYy05MjItXFx0XFx0aWYgKHVubGlrZWx5KGVycm9yKSlcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTIyMzE9c3RhdGljIGludCBtYXBfZmlsZXNfZ2V0X2xpbmsoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgcGF0aCAqcGF0aCxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTIyNTQtXFx0aWYgKHZtYSBcXHUwMDI2XFx1MDAyNiB2bWEtXFx1MDAzZXZtX2ZpbGUpIHtcXG5mcy9wcm9jL2Jhc2UuYzoyMjU1OlxcdFxcdCpwYXRoID0gKmZpbGVfdXNlcl9wYXRoKHZtYS1cXHUwMDNldm1fZmlsZSk7XFxuZnMvcHJvYy9iYXNlLmMtMjI1Ni1cXHRcXHRwYXRoX2dldChwYXRoKTtcXG4tLVxcbmZzL3Byb2Mvbm9tbXUuYz0zMT1zdGF0aWMgaW50IG5vbW11X3JlZ2lvbl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHZtX3JlZ2lvbiAqcmVnaW9uKVxcbi0tXFxuZnMvcHJvYy9ub21tdS5jLTYwLVxcdFxcdHNlcV9wYWQobSwgJyAnKTtcXG5mcy9wcm9jL25vbW11LmM6NjE6XFx0XFx0c2VxX3BhdGgobSwgZmlsZV91c2VyX3BhdGgoZmlsZSksIFxcXCJcXFwiKTtcXG5mcy9wcm9jL25vbW11LmMtNjItXFx0fVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTQxND1zdGF0aWMgdm9pZCBnZXRfdm1hX25hbWUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtNDM3LVxcdFxcdH0gZWxzZSB7XFxuZnMvcHJvYy90YXNrX21tdS5jOjQzODpcXHRcXHRcXHQqcGF0aCA9IGZpbGVfdXNlcl9wYXRoKHZtYS1cXHUwMDNldm1fZmlsZSk7XFxuZnMvcHJvYy90YXNrX21tdS5jLTQzOS1cXHRcXHR9XFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MzQ5NT1zdGF0aWMgaW50IHNob3dfbnVtYV9tYXAoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTM1MjUtXFx0XFx0c2VxX3B1dHMobSwgXFxcIiBmaWxlPVxcXCIpO1xcbmZzL3Byb2MvdGFza19tbXUuYzozNTI2OlxcdFxcdHNlcV9wYXRoKG0sIGZpbGVfdXNlcl9wYXRoKGZpbGUpLCBcXFwiXFxcXG5cXFxcdD0gXFxcIik7XFxuZnMvcHJvYy90YXNrX21tdS5jLTM1MjctXFx0fSBlbHNlIGlmICh2bWFfaXNfaW5pdGlhbF9oZWFwKHZtYSkpIHtcXG4tLVxcbmZzL3Byb2MvdGFza19ub21tdS5jPTEyNz1zdGF0aWMgaW50IG5vbW11X3ZtYV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbm9tbXUuYy0xNTktXFx0XFx0c2VxX3BhZChtLCAnICcpO1xcbmZzL3Byb2MvdGFza19ub21tdS5jOjE2MDpcXHRcXHRzZXFfcGF0aChtLCBmaWxlX3VzZXJfcGF0aChmaWxlKSwgXFxcIlxcXCIpO1xcbmZzL3Byb2MvdGFza19ub21tdS5jLTE2MS1cXHR9IGVsc2UgaWYgKG1tIFxcdTAwMjZcXHUwMDI2IHZtYV9pc19pbml0aWFsX3N0YWNrKHZtYSkpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaD0yNDkyPXN0cnVjdCBmaWxlICpkZW50cnlfY3JlYXRlKHN0cnVjdCBwYXRoICpwYXRoLCBpbnQgZmxhZ3MsIHVtb2RlX3QgbW9kZSxcXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjQ5My1cXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCk7XFxuaW5jbHVkZS9saW51eC9mcy5oOjI0OTQ6Y29uc3Qgc3RydWN0IHBhdGggKmJhY2tpbmdfZmlsZV91c2VyX3BhdGgoY29uc3Qgc3RydWN0IGZpbGUgKmYpO1xcbmluY2x1ZGUvbGludXgvZnMuaC0yNDk1LVxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oPTI1MDQ9c3RhdGljIGlubGluZSB2b2lkIGJhY2tpbmdfZmlsZV9zZXRfc2VjdXJpdHkoc3RydWN0IGZpbGUgKmYsIHZvaWQgKnNlY3VyaXR5KVxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oLTI1MTgtLyogR2V0IHRoZSBwYXRoIHRvIGRpc3BsYXkgaW4gL3Byb2MvXFx1MDAzY3BpZFxcdTAwM2UvbWFwcyAqL1xcbmluY2x1ZGUvbGludXgvZnMuaDoyNTE5OnN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IHBhdGggKmZpbGVfdXNlcl9wYXRoKGNvbnN0IHN0cnVjdCBmaWxlICpmKVxcbmluY2x1ZGUvbGludXgvZnMuaC0yNTIwLXtcXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjUyMS1cXHRpZiAodW5saWtlbHkoZi1cXHUwMDNlZl9tb2RlIFxcdTAwMjYgRk1PREVfQkFDS0lORykpXFxuaW5jbHVkZS9saW51eC9mcy5oOjI1MjI6XFx0XFx0cmV0dXJuIGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoZik7XFxuaW5jbHVkZS9saW51eC9mcy5oLTI1MjMtXFx0cmV0dXJuIFxcdTAwMjZmLVxcdTAwM2VmX3BhdGg7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MjUyNj1zdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBpbm9kZSAqZmlsZV91c2VyX2lub2RlKGNvbnN0IHN0cnVjdCBmaWxlICpmKVxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oLTI1MjgtXFx0aWYgKHVubGlrZWx5KGYtXFx1MDAzZWZfbW9kZSBcXHUwMDI2IEZNT0RFX0JBQ0tJTkcpKVxcbmluY2x1ZGUvbGludXgvZnMuaDoyNTI5OlxcdFxcdHJldHVybiBkX2lub2RlKGJhY2tpbmdfZmlsZV91c2VyX3BhdGgoZiktXFx1MDAzZWRlbnRyeSk7XFxuaW5jbHVkZS9saW51eC9mcy5oLTI1MzAtXFx0cmV0dXJuIGZpbGVfaW5vZGUoZik7XFxuLS1cXG5rZXJuZWwvZXZlbnRzL2NvcmUuYz05NzUzPXN0YXRpYyB2b2lkIHBlcmZfZXZlbnRfbW1hcF9ldmVudChzdHJ1Y3QgcGVyZl9tbWFwX2V2ZW50ICptbWFwX2V2ZW50KVxcbi0tXFxua2VybmVsL2V2ZW50cy9jb3JlLmMtOTc5NS1cXHRcXHQgKi9cXG5rZXJuZWwvZXZlbnRzL2NvcmUuYzo5Nzk2OlxcdFxcdG5hbWUgPSBkX3BhdGgoZmlsZV91c2VyX3BhdGgoZmlsZSksIGJ1ZiwgUEFUSF9NQVggLSBzaXplb2YodTY0KSk7XFxua2VybmVsL2V2ZW50cy9jb3JlLmMtOTc5Ny1cXHRcXHRpZiAoSVNfRVJSKG5hbWUpKSB7XFxuLS1cXG5rZXJuZWwvdHJhY2UvdHJhY2Vfb3V0cHV0LmM9NDI0PXN0YXRpYyBpbnQgc2VxX3ByaW50X3VzZXJfaXAoc3RydWN0IHRyYWNlX3NlcSAqcywgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5rZXJuZWwvdHJhY2UvdHJhY2Vfb3V0cHV0LmMtNDQzLVxcdFxcdGlmIChmaWxlKSB7XFxua2VybmVsL3RyYWNlL3RyYWNlX291dHB1dC5jOjQ0NDpcXHRcXHRcXHRyZXQgPSB0cmFjZV9zZXFfcGF0aChzLCBmaWxlX3VzZXJfcGF0aChmaWxlKSk7XFxua2VybmVsL3RyYWNlL3RyYWNlX291dHB1dC5jLTQ0NS1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTE3NDk9c3RhdGljIGludCBfX2ZpbGVfaGFzX3Blcm0oY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQsIGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTE3NjYtXFx0XFx0YmZzZWMgPSBzZWxpbnV4X2JhY2tpbmdfZmlsZShmaWxlKTtcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM6MTc2NzpcXHRcXHRwYXRoID0gYmFja2luZ19maWxlX3VzZXJfcGF0aChmaWxlKTtcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMTc2OC1cXHRcXHR0c2lkX2ZkID0gYmZzZWMtXFx1MDAzZXVmX3NpZDtcXG4tLVxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYz0zOTcyPXN0YXRpYyBpbnQgX19maWxlX21hcF9wcm90X2NoZWNrKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25nIHByb3QsXFxuLS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzk4MS1cXHRcXHRpZiAoYmZfdXNlcl9maWxlKVxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzozOTgyOlxcdFxcdFxcdGlub2RlID0gZF9pbm9kZShiYWNraW5nX2ZpbGVfdXNlcl9wYXRoKGZpbGUpLVxcdTAwM2VkZW50cnkpO1xcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy0zOTgzLVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDg6NTguOTczMjE1MjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTE3MTA5NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFZGUyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBhIHNpZ25pZmljYW50IGFsdGVyYXRpb24gdG8gaG93IGBiYWNraW5nX2ZpbGVfb3BlbmAgaGFuZGxlcyBmaWxlIHBhdGhzLiBJbnN0ZWFkIG9mIGRpcmVjdGx5IHVzaW5nIGBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoYCwgaXQncyBub3cgY2FsbGluZyBgZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKWAuIFRoaXMgYGZpbGVfdXNlcl9wYXRoYCBmdW5jdGlvbiBhZGRzIGEgY29uZGl0aW9uYWwg4oCTIGlmIHRoZSBgdXNlcl9maWxlYCBpdHNlbGYgaXMgYSBcImJhY2tpbmcgZmlsZVwiIChhcyBpbmRpY2F0ZWQgYnkgdGhlIGBGTU9ERV9CQUNLSU5HYCBmbGFnKSwgaXQgcmVjdXJzaXZlbHkgY2FsbHMgYGJhY2tpbmdfZmlsZV91c2VyX3BhdGhgIHRvIGdldCB0aGUgcGF0aC4gVGhpcyBoYXMgdGhlIHBvdGVudGlhbCB0byBmdW5kYW1lbnRhbGx5IHNoaWZ0IGJlaGF2aW9yIGluIHRoZSBWRlMgbGF5ZXIsIHBhcnRpY3VsYXJseSBpbXBhY3Rpbmcgc3RhY2tlZCBmaWxlc3lzdGVtcy5cblxuSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gVkZTIGxvZ2ljLiBTdGFja2VkIGZpbGVzeXN0ZW1zIGxpa2Ugb3ZlcmxheWZzIG9yIGZ1c2UgcGFzc3Rocm91Z2ggYXJlIHRoZSBtb3N0IG9idmlvdXMgdGFyZ2V0cyBmb3IgdGhpcyBjaGFuZ2UuIFRoaXMgaXMgZ29pbmcgdG8gY2hhbmdlIHRoZSBwYXRocyByZXR1cm5lZCBmcm9tIHRoZSBiYWNraW5nIGZpbGVzeXN0ZW0uXG5cblRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBjb25maXJtIHRoYXQgYGJhY2tpbmdfZmlsZV9vcGVuYCBpcyBhY3R1YWxseSByZWFjaGFibGUsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGlzLCB0aHJvdWdoIGBvdmxfb3Blbl9yZWFsZmlsZWAsIGBmdXNlX3Bhc3N0aHJvdWdoX29wZW5gLCBhbmQgYGVyb2ZzX2lzaGFyZV9maWxlX29wZW5gLiBPa2F5LCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB3b3J0aCBmdXp6aW5nLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uIGluIGBmcy9iYWNraW5nLWZpbGUuY2AgdG8gY29uZmlybSB0aGUgY29kZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTY0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ5OjAzLjg5MDMyNzExN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2JhY2tpbmctZmlsZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb21tb24gaGVscGVycyBmb3Igc3RhY2thYmxlIGZpbGVzeXN0ZW1zIGFuZCBiYWNraW5nIGZpbGVzLlxcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIEZvcmtlZCBmcm9tIGZzL292ZXJsYXlmcy9maWxlLmMuXFxuICAgNjpcXHQgKlxcbiAgIDc6XFx0ICogQ29weXJpZ2h0IChDKSAyMDE3IFJlZCBIYXQsIEluYy5cXG4gICA4OlxcdCAqIENvcHlyaWdodCAoQykgMjAyMyBDVEVSQSBOZXR3b3Jrcy5cXG4gICA5OlxcdCAqL1xcbiAgMTA6XFx0XFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4gIDEyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9iYWNraW5nLWZpbGUuaFxcdTAwM2VcXG4gIDEzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGxpY2UuaFxcdTAwM2VcXG4gIDE0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbS5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NlY3VyaXR5LmhcXHUwMDNlXFxuICAxNjpcXHRcXG4gIDE3OlxcdCNpbmNsdWRlIFxcXCJpbnRlcm5hbC5oXFxcIlxcbiAgMTg6XFx0XFxuICAxOTpcXHQvKipcXG4gIDIwOlxcdCAqIGJhY2tpbmdfZmlsZV9vcGVuIC0gb3BlbiBhIGJhY2tpbmcgZmlsZSBmb3Iga2VybmVsIGludGVybmFsIHVzZVxcbiAgMjE6XFx0ICogQHVzZXJfZmlsZTogIGZpbGUgdGhlIHVzZXIgcmVxdWVzdGVkIHRvIG9wZW5cXG4gIDIyOlxcdCAqIEBmbGFnczpcXHRvcGVuIGZsYWdzXFxuICAyMzpcXHQgKiBAcmVhbF9wYXRoOlxcdHBhdGggb2YgdGhlIGJhY2tpbmcgZmlsZVxcbiAgMjQ6XFx0ICogQGNyZWQ6XFx0Y3JlZGVudGlhbHMgZm9yIG9wZW5cXG4gIDI1OlxcdCAqXFxuICAyNjpcXHQgKiBPcGVuIGEgYmFja2luZyBmaWxlIGZvciBhIHN0YWNrYWJsZSBmaWxlc3lzdGVtIChlLmcuLCBvdmVybGF5ZnMpLlxcbiAgMjc6XFx0ICogQHVzZXJfZmlsZS1cXHUwMDNlZl9wYXRoIG1heSBiZSBvbiB0aGUgc3RhY2thYmxlIGZpbGVzeXN0ZW0gYW5kIEByZWFsX3BhdGhcXG4gIDI4OlxcdCAqIG9uIHRoZSB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0uIEluIHRoaXMgY2FzZSwgd2Ugd2FudCB0byBiZSBhYmxlIHRvXFxuICAyOTpcXHQgKiByZXR1cm4gdGhlIHBhdGggb2YgdGhlIHN0YWNrYWJsZSBmaWxlc3lzdGVtLiBUaGlzIGlzIGRvbmUgYnlcXG4gIDMwOlxcdCAqIGVtYmVkZGluZyB0aGUgcmV0dXJuZWQgZmlsZSBpbnRvIGEgY29udGFpbmVyIHN0cnVjdHVyZSB0aGF0IGFsc29cXG4gIDMxOlxcdCAqIHN0b3JlcyB0aGUgc3RhY2tlZCBmaWxlJ3MgcGF0aCwgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCB1c2luZ1xcbiAgMzI6XFx0ICogYmFja2luZ19maWxlX3VzZXJfcGF0aCgpLlxcbiAgMzM6XFx0ICovXFxuICAzNDpcXHRzdHJ1Y3QgZmlsZSAqYmFja2luZ19maWxlX29wZW4oY29uc3Qgc3RydWN0IGZpbGUgKnVzZXJfZmlsZSwgaW50IGZsYWdzLFxcbiAgMzU6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwYXRoICpyZWFsX3BhdGgsXFxuICAzNjpcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQpXFxuICAzNzpcXHR7XFxuICAzODpcXHRcXHRjb25zdCBzdHJ1Y3QgcGF0aCAqdXNlcl9wYXRoID0gZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKTtcXG4gIDM5OlxcdFxcdHN0cnVjdCBmaWxlICpmO1xcbiAgNDA6XFx0XFx0aW50IGVycm9yO1xcbiAgNDE6XFx0XFxuICA0MjpcXHRcXHRmID0gYWxsb2NfZW1wdHlfYmFja2luZ19maWxlKGZsYWdzLCBjcmVkLCB1c2VyX2ZpbGUpO1xcbiAgNDM6XFx0XFx0aWYgKElTX0VSUihmKSlcXG4gIDQ0OlxcdFxcdFxcdHJldHVybiBmO1xcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRwYXRoX2dldCh1c2VyX3BhdGgpO1xcbiAgNDc6XFx0XFx0YmFja2luZ19maWxlX3NldF91c2VyX3BhdGgoZiwgdXNlcl9wYXRoKTtcXG4gIDQ4OlxcdFxcdGVycm9yID0gdmZzX29wZW4ocmVhbF9wYXRoLCBmKTtcXG4gIDQ5OlxcdFxcdGlmIChlcnJvcikge1xcbiAgNTA6XFx0XFx0XFx0ZnB1dChmKTtcXG4gIDUxOlxcdFxcdFxcdGYgPSBFUlJfUFRSKGVycm9yKTtcXG4gIDUyOlxcdFxcdH1cXG4gIDUzOlxcdFxcbiAgNTQ6XFx0XFx0cmV0dXJuIGY7XFxuICA1NTpcXHR9XFxuICA1NjpcXHRFWFBPUlRfU1lNQk9MX0dQTChiYWNraW5nX2ZpbGVfb3Blbik7XFxuICA1NzpcXHRcXG4gIDU4OlxcdHN0cnVjdCBmaWxlICpiYWNraW5nX3RtcGZpbGVfb3Blbihjb25zdCBzdHJ1Y3QgZmlsZSAqdXNlcl9maWxlLCBpbnQgZmxhZ3MsXFxuICA1OTpcXHRcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBwYXRoICpyZWFsX3BhcmVudHBhdGgsXFxuICA2MDpcXHRcXHRcXHRcXHRcXHQgIHVtb2RlX3QgbW9kZSwgY29uc3Qgc3RydWN0IGNyZWQgKmNyZWQpXFxuICA2MTpcXHR7XFxuICA2MjpcXHRcXHRzdHJ1Y3QgbW50X2lkbWFwICpyZWFsX2lkbWFwID0gbW50X2lkbWFwKHJlYWxfcGFyZW50cGF0aC1cXHUwMDNlbW50KTtcXG4gIDYzOlxcdFxcdGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBcXHUwMDI2dXNlcl9maWxlLVxcdTAwM2VmX3BhdGg7XFxuICA2NDpcXHRcXHRzdHJ1Y3QgZmlsZSAqZjtcXG4gIDY1OlxcdFxcdGludCBlcnJvcjtcXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0ZiA9IGFsbG9jX2VtcHR5X2JhY2tpbmdfZmlsZShmbGFncywgY3JlZCwgdXNlcl9maWxlKTtcXG4gIDY4OlxcdFxcdGlmIChJU19FUlIoZikpXFxuICA2OTpcXHRcXHRcXHRyZXR1cm4gZjtcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0cGF0aF9nZXQodXNlcl9wYXRoKTtcXG4gIDcyOlxcdFxcdGJhY2tpbmdfZmlsZV9zZXRfdXNlcl9wYXRoKGYsIHVzZXJfcGF0aCk7XFxuICA3MzpcXHRcXHRlcnJvciA9IHZmc190bXBmaWxlKHJlYWxfaWRtYXAsIHJlYWxfcGFyZW50cGF0aCwgZiwgbW9kZSk7XFxuICA3NDpcXHRcXHRpZiAoZXJyb3IpIHtcXG4gIDc1OlxcdFxcdFxcdGZwdXQoZik7XFxuICA3NjpcXHRcXHRcXHRmID0gRVJSX1BUUihlcnJvcik7XFxuICA3NzpcXHRcXHR9XFxuICA3ODpcXHRcXHRyZXR1cm4gZjtcXG4gIDc5OlxcdH1cXG4gIDgwOlxcdEVYUE9SVF9TWU1CT0woYmFja2luZ190bXBmaWxlX29wZW4pO1xcbiAgODE6XFx0XFxuICA4MjpcXHRzdHJ1Y3QgYmFja2luZ19haW8ge1xcbiAgODM6XFx0XFx0c3RydWN0IGtpb2NiIGlvY2I7XFxuICA4NDpcXHRcXHRyZWZjb3VudF90IHJlZjtcXG4gIDg1OlxcdFxcdHN0cnVjdCBraW9jYiAqb3JpZ19pb2NiO1xcbiAgODY6XFx0XFx0LyogdXNlZCBmb3IgYWlvIGNvbXBsZXRpb24gKi9cXG4gIDg3OlxcdFxcdHZvaWQgKCplbmRfd3JpdGUpKHN0cnVjdCBraW9jYiAqaW9jYiwgc3NpemVfdCk7XFxuICA4ODpcXHRcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcXG4gIDg5OlxcdFxcdGxvbmcgcmVzO1xcbiAgOTA6XFx0fTtcXG4gIDkxOlxcdFxcbiAgOTI6XFx0c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpiYWNraW5nX2Fpb19jYWNoZXA7XFxuICA5MzpcXHRcXG4gIDk0OlxcdCNkZWZpbmUgQkFDS0lOR19JT0NCX01BU0sgXFxcXFxcbiAgOTU6XFx0XFx0KElPQ0JfTk9XQUlUIHwgSU9DQl9ISVBSSSB8IElPQ0JfRFNZTkMgfCBJT0NCX1NZTkMgfCBJT0NCX0FQUEVORClcXG4gIDk2OlxcdFxcbiAgOTc6XFx0c3RhdGljIHJ3Zl90IGlvY2JfdG9fcndfZmxhZ3MoaW50IGZsYWdzKVxcbiAgOTg6XFx0e1xcbiAgOTk6XFx0XFx0cmV0dXJuIChfX2ZvcmNlIHJ3Zl90KShmbGFncyBcXHUwMDI2IEJBQ0tJTkdfSU9DQl9NQVNLKTtcXG4gMTAwOlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MDMuODkwNDA3ODE3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxNDkzMTEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBCYWNraW5nIEZpbGUgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyBgYmFja2luZ19maWxlX29wZW5gIHRvIHVzZSBgZmlsZV91c2VyX3BhdGgodXNlcl9maWxlKWAgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgYFx1MDAyNnVzZXJfZmlsZS1cdTAwM2VmX3BhdGhgLiBJIHNlZSB0aGF0IGltbWVkaWF0ZWx5LCBhbmQgSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy5cblxuSG9sZCBvbiBhIHNlY29uZC4uLiBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLiBgYmFja2luZ190bXBmaWxlX29wZW5gICphbHNvKiBoYXMgYGNvbnN0IHN0cnVjdCBwYXRoICp1c2VyX3BhdGggPSBcdTAwMjZ1c2VyX2ZpbGUtXHUwMDNlZl9wYXRoO2AuIEludGVyZXN0aW5nLiBCdXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgYmFja2luZ19maWxlX29wZW5gLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGFscmlnaHQuIERlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIHNjcnV0aW5pemluZy5cblxuR2l2ZW4gdGhhdCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBmb2N1cyBmdXp6aW5nIGVmZm9ydHMgb24gYGJhY2tpbmdfZmlsZV9vcGVuYC4gVGhhdCdzIHdoZXJlIHRoZSBuZXcgY29kZSBwYXRoIGlzLiBOb3csIEkgaGF2ZSB0byB0aGluayBhYm91dCB3aGljaCBmaWxlc3lzdGVtcyBtaWdodCBiZSBpbXBhY3RlZC4gSXQgbG9va3MgbGlrZSBgYmFja2luZ19maWxlX29wZW5gIGlzIHVzZWQgYnkgb3ZlcmxheWZzLCBmdXNlLCBhbmQgZXJvZnMuIEkgc2hvdWxkIHByb2JhYmx5IGVuYWJsZSB0aG9zZSBjb25maWdzIHRvIGVuc3VyZSBjb21wcmVoZW5zaXZlIHRlc3RpbmcuXG5cblRpbWUgdG8gcHVsbCB1cCB0aGUgS2NvbmZpZ3MgZm9yIGVhY2g6IGBmcy9vdmVybGF5ZnMvS2NvbmZpZ2AsIGBmcy9mdXNlL0tjb25maWdgLCBhbmQgYGZzL2Vyb2ZzL0tjb25maWdgLiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NTQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNDo0OTowOC4yMDUzNDIyNjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTk1ODAwOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9WRVJMQVlfRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvb3ZlcmxheWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoyOmNvbmZpZyBPVkVSTEFZX0ZTXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiT3ZlcmxheSBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xNC1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzoxNTpjb25maWcgT1ZFUkxBWV9GU19SRURJUkVDVF9ESVJcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xNi1cXHRib29sIFxcXCJPdmVybGF5ZnM6IHR1cm4gb24gcmVkaXJlY3QgZGlyZWN0b3J5IGZlYXR1cmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTMwLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjMxOmNvbmZpZyBPVkVSTEFZX0ZTX1JFRElSRUNUX0FMV0FZU19GT0xMT1dcXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJPdmVybGF5ZnM6IGZvbGxvdyByZWRpcmVjdHMgZXZlbiBpZiByZWRpcmVjdHMgYXJlIHR1cm5lZCBvZmZcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy00NS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZzo0Njpjb25maWcgT1ZFUkxBWV9GU19JTkRFWFxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBpbm9kZXMgaW5kZXggZmVhdHVyZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWctNjQtXFxuZnMvb3ZlcmxheWZzL0tjb25maWc6NjU6Y29uZmlnIE9WRVJMQVlfRlNfTkZTX0VYUE9SVFxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBORlMgZXhwb3J0IGZlYXR1cmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnLTkyLVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjkzOmNvbmZpZyBPVkVSTEFZX0ZTX1hJTk9fQVVUT1xcbmZzL292ZXJsYXlmcy9LY29uZmlnLTk0LVxcdGJvb2wgXFxcIk92ZXJsYXlmczogYXV0byBlbmFibGUgaW5vZGUgbnVtYmVyIG1hcHBpbmdcXFwiXFxuLS1cXG5mcy9vdmVybGF5ZnMvS2NvbmZpZy0xMTAtXFxuZnMvb3ZlcmxheWZzL0tjb25maWc6MTExOmNvbmZpZyBPVkVSTEFZX0ZTX01FVEFDT1BZXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMTEyLVxcdGJvb2wgXFxcIk92ZXJsYXlmczogdHVybiBvbiBtZXRhZGF0YSBvbmx5IGNvcHkgdXAgZmVhdHVyZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxuZnMvb3ZlcmxheWZzL0tjb25maWctMTI4LVxcbmZzL292ZXJsYXlmcy9LY29uZmlnOjEyOTpjb25maWcgT1ZFUkxBWV9GU19ERUJVR1xcbmZzL292ZXJsYXlmcy9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJPdmVybGF5ZnM6IHR1cm4gb24gZXh0cmEgZGVidWdnaW5nIGNoZWNrc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MDkuNzA0OTI5NTE0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDUzNzA5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzOlxuXG4qKkV4YW1pbmluZyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSB0aGluayBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIG91dCB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYm90aCB0aGUgRlVTRSBmaWxlc3lzdGVtIChgZnMvZnVzZS9LY29uZmlnYCkgYW5kIHRoZSBFUk9GUyBmaWxlc3lzdGVtIChgZnMvZXJvZnMvS2NvbmZpZ2ApLiBUaGF0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIHRvIGRlZmluZSBhbmQgZG9jdW1lbnQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvIGl0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGZpbGVzeXN0ZW1zIGFyZSBjb25maWd1cmVkIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuIEknbSBleHBlY3RpbmcgdG8gZmluZCBkZXRhaWxzIG9uIHRoaW5ncyBsaWtlIHdoZXRoZXIgdGhlIG1vZHVsZXMgYXJlIGJ1aWx0IGluIG9yIGxvYWRhYmxlLCBhbnkgc3BlY2lmaWMgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIG1heWJlIGV2ZW4gZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBlc3BlY2lhbGx5IGlmIEkgd2FudCB0byBsb29rIGF0IG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBidWlsZCBwcm9jZXNzIG9yIG1vZGlmeWluZyBiZWhhdmlvdXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MDcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNDo0OToxMi44NTAzMDI0NjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzA3MDk5MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVU0VfRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvZnVzZS9LY29uZmlnOjI6Y29uZmlnIEZVU0VfRlNcXG5mcy9mdXNlL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ5OjE0LjMyMTAxODg2NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDIyMTA3ODEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6ODgxMCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MTYuMzQzMTMxNjM3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE2Mzg1MDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFUk9GU19GU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9lcm9mcy9LY29uZmlnLTItXFxuZnMvZXJvZnMvS2NvbmZpZzozOmNvbmZpZyBFUk9GU19GU1xcbmZzL2Vyb2ZzL0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiRVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy00OS1cXG5mcy9lcm9mcy9LY29uZmlnOjUwOmNvbmZpZyBFUk9GU19GU19ERUJVR1xcbmZzL2Vyb2ZzL0tjb25maWctNTEtXFx0Ym9vbCBcXFwiRVJPRlMgZGVidWdnaW5nIGZlYXR1cmVcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTU5LVxcbmZzL2Vyb2ZzL0tjb25maWc6NjA6Y29uZmlnIEVST0ZTX0ZTX1hBVFRSXFxuZnMvZXJvZnMvS2NvbmZpZy02MS1cXHRib29sIFxcXCJFUk9GUyBleHRlbmRlZCBhdHRyaWJ1dGVzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy03MC1cXG5mcy9lcm9mcy9LY29uZmlnOjcxOmNvbmZpZyBFUk9GU19GU19QT1NJWF9BQ0xcXG5mcy9lcm9mcy9LY29uZmlnLTcyLVxcdGJvb2wgXFxcIkVST0ZTIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy04NC1cXG5mcy9lcm9mcy9LY29uZmlnOjg1OmNvbmZpZyBFUk9GU19GU19TRUNVUklUWVxcbmZzL2Vyb2ZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiRVJPRlMgU2VjdXJpdHkgTGFiZWxzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy05Ny1cXG5mcy9lcm9mcy9LY29uZmlnOjk4OmNvbmZpZyBFUk9GU19GU19CQUNLRURfQllfRklMRVxcbmZzL2Vyb2ZzL0tjb25maWctOTktXFx0Ym9vbCBcXFwiRmlsZS1iYWNrZWQgRVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0xMTEtXFxuZnMvZXJvZnMvS2NvbmZpZzoxMTI6Y29uZmlnIEVST0ZTX0ZTX1pJUFxcbmZzL2Vyb2ZzL0tjb25maWctMTEzLVxcdGJvb2wgXFxcIkVST0ZTIERhdGEgQ29tcHJlc3Npb24gU3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTIxLVxcbmZzL2Vyb2ZzL0tjb25maWc6MTIyOmNvbmZpZyBFUk9GU19GU19aSVBfTFpNQVxcbmZzL2Vyb2ZzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcIkVST0ZTIExaTUEgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTEzMy1cXG5mcy9lcm9mcy9LY29uZmlnOjEzNDpjb25maWcgRVJPRlNfRlNfWklQX0xaTUFfREVGQVVMVF9NQVhfU1RSRUFNU1xcbmZzL2Vyb2ZzL0tjb25maWctMTM1LVxcdGludCBcXFwiRVJPRlMgTFpNQSBkZWZhdWx0IG1heGltdW0gZGVjb21wcmVzc2lvbiBzdHJlYW1zXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0xNDctXFxuZnMvZXJvZnMvS2NvbmZpZzoxNDg6Y29uZmlnIEVST0ZTX0ZTX1pJUF9ERUZMQVRFXFxuZnMvZXJvZnMvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiRVJPRlMgREVGTEFURSBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTU4LVxcbmZzL2Vyb2ZzL0tjb25maWc6MTU5OmNvbmZpZyBFUk9GU19GU19aSVBfWlNURFxcbmZzL2Vyb2ZzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcIkVST0ZTIFpzdGFuZGFyZCBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTY5LVxcbmZzL2Vyb2ZzL0tjb25maWc6MTcwOmNvbmZpZyBFUk9GU19GU19aSVBfQUNDRUxcXG5mcy9lcm9mcy9LY29uZmlnLTE3MS1cXHRib29sIFxcXCJFUk9GUyBoYXJkd2FyZSBkZWNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTE4My1cXG5mcy9lcm9mcy9LY29uZmlnOjE4NDpjb25maWcgRVJPRlNfRlNfUENQVV9LVEhSRUFEXFxuZnMvZXJvZnMvS2NvbmZpZy0xODUtXFx0Ym9vbCBcXFwiRVJPRlMgcGVyLWNwdSBkZWNvbXByZXNzaW9uIGt0aHJlYWQgd29ya2Vyc1xcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTkyLVxcbmZzL2Vyb2ZzL0tjb25maWc6MTkzOmNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcXG5mcy9lcm9mcy9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJFUk9GUyBoaWdoIHByaW9yaXR5IHBlci1DUFUga3RocmVhZCB3b3JrZXJzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0yMDItXFxuZnMvZXJvZnMvS2NvbmZpZzoyMDM6Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cXHRib29sIFxcXCJFUk9GUyBwYWdlIGNhY2hlIHNoYXJlIHN1cHBvcnQgKGV4cGVyaW1lbnRhbClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ5OjE3Ljg1OTUyMzUxOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAyMjM5MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipGVVNFX1BBU1NUSFJPVUdIOiBBIFF1aWNrIFJlY2FwKipcblxuT2theSwgc28gSSdtIHByb2Nlc3NpbmcgdGhpcyBjb25maWcgcGFyYW1ldGVyLi4uIFdhaXQgYSBtaW51dGUuIGBGVVNFX1BBU1NUSFJPVUdIYC4gSXQncyBoaXR0aW5nIG1lIG5vdy4gVGhhdCdzICp0aGUqIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIEZVU0UgcGFzc3Rocm91Z2gsIGlzbid0IGl0PyBKdXN0IG1ha2luZyBzdXJlIEknbSBvbiB0aGUgcmlnaHQgdHJhY2sgaGVyZSwgdGhpcyBkZXRlcm1pbmVzIGhvdyB0aGUgZmlsZSBzeXN0ZW0gcGFzc2VzIGNhbGxzIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgc3lzdGVtLiBObyBhbWJpZ3VpdHksIGdvdCBpdC4gR29vZCB0byBjbGFyaWZ5IHRoZXNlIHNtYWxsIGRldGFpbHMgYXMgSSBtb3ZlIHRocm91Z2ggbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzU3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MjEuMDYxNzY1MzA5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEwNzk5ODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGVVNFX1BBU1NUSFJPVUdIXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZz00Mz1jb25maWcgRlVTRV9EQVhcXG4tLVxcbmZzL2Z1c2UvS2NvbmZpZy01Ni1cXG5mcy9mdXNlL0tjb25maWc6NTc6Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcXG5mcy9mdXNlL0tjb25maWctNTgtXFx0Ym9vbCBcXFwiRlVTRSBwYXNzdGhyb3VnaCBvcGVyYXRpb25zIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ5OjIyLjU3MjU3MDE2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjgxOTA1NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipJbml0aWFsIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBBc3Nlc3NtZW50KipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEJhc2VkIG9uIHRoZSBwcm9qZWN0IHJlcXVpcmVtZW50cyBhbmQgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLCBpdCBsb29rcyBsaWtlIHdlIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGtleSBmaWxlc3lzdGVtIG9wdGlvbnMuIEknbSB0aGlua2luZyB3ZSBhYnNvbHV0ZWx5ICptdXN0KiBlbmFibGUgYE9WRVJMQVlfRlNgLiBUaGlzIGlzIHByZXR0eSBjcnVjaWFsIGZvciBhbGxvd2luZyByZWFkLXdyaXRlIGxheWVycyBvbiB0b3Agb2Ygb3VyIGJhc2UgcmVhZC1vbmx5IHN5c3RlbS4gVGhlbiwgZm9yIHZlcnNhdGlsaXR5IGFuZCBpbnRlZ3JhdGlvbiB3aXRoIHVzZXItc3BhY2UgdG9vbHMsIGBGVVNFX0ZTYCBhbmQgYEZVU0VfUEFTU1RIUk9VR0hgIHNlZW0gbGlrZSBzb2xpZCBjaG9pY2VzLiBXZSdsbCBuZWVkIHRob3NlIGlmIHdlIHdhbnQgdG8gZHluYW1pY2FsbHkgbW91bnQgZmlsZXN5c3RlbXMgZGVmaW5lZCBpbiB1c2VyIHNwYWNlIGFuZCBoYW5kbGUgcGFzc3Rocm91Z2ggb3BlcmF0aW9ucy4gRmluYWxseSwgZm9yIHRoZSByZWFkLW9ubHkgZm91bmRhdGlvbmFsIGxheWVyLCB3ZSBhcmUgZ29pbmcgdG8gZW5hYmxlIGBFUk9GU19GU2AgYW5kIGl0cyBiYWNraW5nIGZpbGUgb3B0aW9uOiBgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVgLlxuXG5CdXQgYmVmb3JlIHdlIG1vdmUgZm9yd2FyZCBvbiBFUk9GUywgaXQncyBhbHdheXMgYSBnb29kIGlkZWEgdG8gZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjcml0aWNhbCBjb21wb25lbnRzIGxpa2UgZmlsZXN5c3RlbXMuIExldCdzIG5vdCBtYWtlIGFueSBhc3N1bXB0aW9ucy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGBmcy9lcm9mcy9pc2hhcmUuY2AuIE15IG9iamVjdGl2ZSBpcyB0byB2ZXJpZnkgaWYgdGhlcmUncyBhbnkgaW1wbGljaXQgZGVwZW5kZW5jeSBvbiBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAsIGJlZm9yZSB3ZSBtb3ZlIGZvcndhcmQgd2l0aCB0aGUgY29uZmlndXJhdGlvbi4gVGhhdCB3aWxsIG5lZWQgdG8gYmUgbG9va2VkIGF0IGJlZm9yZSB3ZSBtb3ZlIGZvcndhcmQuIFdlIGRvIG5vdCB3YW50IGFueSBzdXJwcmlzZXMgb3IgcmVncmVzc2lvbnMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDA4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MjYuODU0NDc3NjI4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI1MjM5MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVyb2ZzX2lzaGFyZV9maWxlX29wZW5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvaXNoYXJlLmM9ODI9dm9pZCBlcm9mc19pc2hhcmVfZnJlZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXJvZnMvaXNoYXJlLmMtOTUtXFxuZnMvZXJvZnMvaXNoYXJlLmM6OTY6c3RhdGljIGludCBlcm9mc19pc2hhcmVfZmlsZV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Vyb2ZzL2lzaGFyZS5jLTk3LXtcXG4tLVxcbmZzL2Vyb2ZzL2lzaGFyZS5jPTE1Nz1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVyb2ZzX2lzaGFyZV9mb3BzID0ge1xcbmZzL2Vyb2ZzL2lzaGFyZS5jOjE1ODpcXHQub3BlblxcdFxcdD0gZXJvZnNfaXNoYXJlX2ZpbGVfb3BlbixcXG5mcy9lcm9mcy9pc2hhcmUuYy0xNTktXFx0Lmxsc2Vla1xcdFxcdD0gZ2VuZXJpY19maWxlX2xsc2VlayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MjguMzc5NzIzMDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1MjQ3MDI4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXJvZnMgYW5kIFBhZ2UgQ2FjaGUgU2hhcmluZyoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGh5cG90aGVzaXMgaXMgdGhhdCBgZnMvZXJvZnMvaXNoYXJlLmNgIGlzIGludm9sdmVkIHdoZW4gYEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVgIGlzIGFjdGl2ZS4gVGhhdCBzb3VuZHMgcmlnaHQsIGdpdmVuIHRoZSBuYW1lLiBCdXQgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGNvbXBpbGF0aW9uIGRlcGVuZGVuY3kuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgZnMvZXJvZnMvTWFrZWZpbGVgLiBJJ2xsIGNvbmZpcm0gaG93IHRoYXQgcHJlcHJvY2Vzc29yIG1hY3JvIHRyYW5zbGF0ZXMgdG8gb2JqZWN0IGZpbGUgaW5jbHVzaW9uLiBJdCdzIGFsbW9zdCBjZXJ0YWluIGl0IGNvbnRyb2xzIHRoZSBidWlsZCBwcm9jZXNzIHRoZXJlLCBidXQgSSBuZWVkIHRvIHNlZSB0aGUgZXhhY3QgY29uZGl0aW9uYWxzIHRvIGJlIHN1cmUuIEp1c3QgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhlIGJ1aWxkIHJlY2lwZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MjQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNDo0OTozMi4xMzIxOTY0MDdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDMyNTQzMDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNoYXJlLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvTWFrZWZpbGU9MTE9ZXJvZnMtJChDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUpICs9IGZpbGVpby5vXFxuZnMvZXJvZnMvTWFrZWZpbGU6MTI6ZXJvZnMtJChDT05GSUdfRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSkgKz0gaXNoYXJlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDQ6NDk6MzQuMzc1NDU3NjYzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0NDI4OTY4MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEVST0ZTIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUga2V5IHRha2Vhd2F5IGhlcmUgaXMgdGhhdCB3ZSAqbmVlZCogYEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVgLiBMZXQncyBicmVhayBkb3duIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZTogYE9WRVJMQVlfRlNgLCBgRlVTRV9GU2AsIGBGVVNFX1BBU1NUSFJPVUdIYCwgYEVST0ZTX0ZTYCwgYW5kIG9mIGNvdXJzZSwgdGhlIG9uZSB3ZSdyZSB6ZXJvaW5nIGluIG9uLCBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAuIFRoaXMgaXMgYWxsIHRvIHN1cHBvcnQgcGFnZSBjYWNoZSBzaGFyaW5nIHdpdGggYSBiYWNraW5nIGZpbGUuXG5cblRoZSBjb3JlIGZ1bmN0aW9uIHRvIGV4YW1pbmUgaXMgYGJhY2tpbmdfZmlsZV9vcGVuYC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBhY3Rpb24gaXMuIFRoZSBwYXRjaCBpcyBzdWJ0bHkgY2hhbmdpbmcgdGhlIFZGUyBsb2dpYy4gU3BlY2lmaWNhbGx5LCBpdCdzIHN3YXBwaW5nIG91dCBgXHUwMDI2dXNlcl9maWxlLVx1MDAzZWZfcGF0aGAgZm9yIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCB3aXRoaW4gYGJhY2tpbmdfZmlsZV9vcGVuYC4gRnJvbSBhIGZ1bmN0aW9uYWwgc3RhbmRwb2ludCwgdGhpcyBpcyBhIHNpZ25pZmljYW50IGFsdGVyYXRpb24uIFRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgY2hhbmdlPyBJdCBkaXJlY3RseSBpbXBhY3RzIGhvdyBwYXRoIHJlc29sdXRpb24gZnVuY3Rpb25zIHdpdGhpbiBzdGFja2VkIGZpbGVzeXN0ZW1zLiBUaGluayBPdmVybGF5RlMgYW5kIEZVU0UgcGFzc3Rocm91Z2gsIHdoZXJlIHRoZSBcInVzZXIgZmlsZVwiIGNvdWxkLCBpbiBmYWN0LCBiZSBhIGxvd2VyLWxldmVsIGJhY2tpbmcgZmlsZS4gVGhlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBhbmQgYWZmZWN0IGhvdyBwYXRocyBhcmUgcmVzb2x2ZWQuXG5cbldlJ3JlIHJlc29sdmluZyBhIHBhdGggZnJvbSB1c2VyIHNwYWNlLCBhbmQgdXNpbmcgaXQgZm9yIGJhY2tpbmcgdGhlIGVyb2ZzIHBhZ2UgY2FjaGUuXG5cblRpbWUgdG8gY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5MTMsIk91dHB1dFRva2VucyI6MTY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA0OjQ5OjQxLjgxODM1NjA2M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NTUxMDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPVkVSTEFZX0ZTXCIsXG4gICAgXCJGVVNFX0ZTXCIsXG4gICAgXCJGVVNFX1BBU1NUSFJPVUdIXCIsXG4gICAgXCJFUk9GU19GU1wiLFxuICAgIFwiRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJhY2tpbmdfZmlsZV9vcGVuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGJhY2tpbmdfZmlsZV9vcGVuYCB0byB1c2UgYGZpbGVfdXNlcl9wYXRoKHVzZXJfZmlsZSlgIGluc3RlYWQgb2YgYFxcdTAwMjZ1c2VyX2ZpbGUtXFx1MDAzZWZfcGF0aGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBWRlMgbG9naWMsIHNwZWNpZmljYWxseSBmb3Igc3RhY2tlZCBmaWxlc3lzdGVtcyBsaWtlIG92ZXJsYXlmcyBvciBmdXNlIHBhc3N0aHJvdWdoLCB3aGVyZSB0aGUgdXNlciBmaWxlIGl0c2VsZiBtaWdodCBiZSBhIGJhY2tpbmcgZmlsZS4gVGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIGFuZCBhZmZlY3RzIGhvdyBwYXRocyBhcmUgcmVzb2x2ZWQgZm9yIGJhY2tpbmcgZmlsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1ZFUkxBWV9GU1wiLFxuICAgIFwiRlVTRV9GU1wiLFxuICAgIFwiRlVTRV9QQVNTVEhST1VHSFwiLFxuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJiYWNraW5nX2ZpbGVfb3BlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBiYWNraW5nX2ZpbGVfb3BlbmAgdG8gdXNlIGBmaWxlX3VzZXJfcGF0aCh1c2VyX2ZpbGUpYCBpbnN0ZWFkIG9mIGBcXHUwMDI2dXNlcl9maWxlLVxcdTAwM2VmX3BhdGhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gVkZTIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZm9yIHN0YWNrZWQgZmlsZXN5c3RlbXMgbGlrZSBvdmVybGF5ZnMgb3IgZnVzZSBwYXNzdGhyb3VnaCwgd2hlcmUgdGhlIHVzZXIgZmlsZSBpdHNlbGYgbWlnaHQgYmUgYSBiYWNraW5nIGZpbGUuIFRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBhbmQgYWZmZWN0cyBob3cgcGF0aHMgYXJlIHJlc29sdmVkIGZvciBiYWNraW5nIGZpbGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow6pz8k[1] Phase: Succeeded StartedAt: 2026-08-04 04:49:53 +0000 UTC FinishedAt: 2026-08-04 04:49:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 04:49:53 +0000 UTC FinishedAt: 2026-08-04 04:49:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2] Phase: Succeeded StartedAt: 2026-08-04 04:49:53 +0000 UTC FinishedAt: 2026-08-04 08:32:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 04:49:53 +0000 UTC FinishedAt: 2026-08-04 08:32:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 04:49:53 +0000 UTC FinishedAt: 2026-08-04 04:50:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 04:49:53 +0000 UTC FinishedAt: 2026-08-04 04:49:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-convert-artifact-2177203808/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 04:50:03 +0000 UTC FinishedAt: 2026-08-04 05:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 04:50:03 +0000 UTC FinishedAt: 2026-08-04 05:08:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*cb149ebc-d222-4925-9c8e-1a1c703e7f6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-convert-artifact-2177203808/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ae723f94-805c-404e-8fdc-8272b9c02f68", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-build-action-2242768166/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 04:50:03 +0000 UTC FinishedAt: 2026-08-04 05:08:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*cb149ebc-d222-4925-9c8e-1a1c703e7f6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-convert-artifact-2177203808/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ae723f94-805c-404e-8fdc-8272b9c02f68", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-build-action-2242768166/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 05:08:11 +0000 UTC FinishedAt: 2026-08-04 05:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 05:08:11 +0000 UTC FinishedAt: 2026-08-04 05:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 05:08:11 +0000 UTC FinishedAt: 2026-08-04 05:08:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 05:08:11 +0000 UTC FinishedAt: 2026-08-04 05:08:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-convert-artifact-3678038663/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 05:08:22 +0000 UTC FinishedAt: 2026-08-04 05:10:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 05:08:22 +0000 UTC FinishedAt: 2026-08-04 05:10:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ae723f94-805c-404e-8fdc-8272b9c02f68,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-build-action-2242768166/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 05:10:09 +0000 UTC FinishedAt: 2026-08-04 05:10:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 05:10:09 +0000 UTC FinishedAt: 2026-08-04 05:10:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 05:10:09 +0000 UTC FinishedAt: 2026-08-04 05:29:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 05:10:09 +0000 UTC FinishedAt: 2026-08-04 05:29:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*cb149ebc-d222-4925-9c8e-1a1c703e7f6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-convert-artifact-3678038663/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "1f28a0c7-e8e5-41b2-bfdb-10000f45048c", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-build-action-1775524875/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 05:10:09 +0000 UTC FinishedAt: 2026-08-04 05:28:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*cb149ebc-d222-4925-9c8e-1a1c703e7f6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-convert-artifact-3678038663/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "1f28a0c7-e8e5-41b2-bfdb-10000f45048c", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-build-action-1775524875/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 05:29:09 +0000 UTC FinishedAt: 2026-08-04 05:29:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 05:29:09 +0000 UTC FinishedAt: 2026-08-04 05:29:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 05:29:09 +0000 UTC FinishedAt: 2026-08-04 05:31:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 05:29:09 +0000 UTC FinishedAt: 2026-08-04 05:31:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1f28a0c7-e8e5-41b2-bfdb-10000f45048c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-build-action-1775524875/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 05:31:11 +0000 UTC FinishedAt: 2026-08-04 08:32:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 05:31:11 +0000 UTC FinishedAt: 2026-08-04 08:32:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*ae723f94-805c-404e-8fdc-8272b9c02f68,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1f28a0c7-e8e5-41b2-bfdb-10000f45048c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-build-action-2242768166/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-build-action-1775524875/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 05:31:11 +0000 UTC FinishedAt: 2026-08-04 05:31:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 05:31:11 +0000 UTC FinishedAt: 2026-08-04 05:31:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-convert-artifact-163001696/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 05:31:11 +0000 UTC FinishedAt: 2026-08-04 05:31:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 05:31:11 +0000 UTC FinishedAt: 2026-08-04 05:31:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 05:31:12 +0000 UTC FinishedAt: 2026-08-04 05:31:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 05:31:22 +0000 UTC FinishedAt: 2026-08-04 08:32:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6pz8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["backing_file_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe6568ca989d7625447625db8562bebbe5be054a","config_name":"upstream-apparmor-kasan.config","enable_configs":["OVERLAY_FS","FUSE_FS","FUSE_PASSTHROUGH","EROFS_FS","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"248a562f-c4f2-4e69-a243-a0a2440c3241","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 05:31:22 +0000 UTC FinishedAt: 2026-08-04 08:32:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ae723f94-805c-404e-8fdc-8272b9c02f68,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1f28a0c7-e8e5-41b2-bfdb-10000f45048c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-build-action-2242768166/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-build-action-1775524875/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6pz8k/series-workflow6pz8k-convert-artifact-163001696/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}