Name: series-workflowpdc6z Phase: Succeeded StartedAt: 2026-08-02 22:47:09 +0000 UTC FinishedAt: 2026-08-03 02:40:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[0] Phase: Succeeded StartedAt: 2026-08-02 22:47:09 +0000 UTC FinishedAt: 2026-08-02 22:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 22:47:09 +0000 UTC FinishedAt: 2026-08-02 22:50:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "8ea3a36b-2a23-4302-a1d2-50fbec245c95" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cfg80211_update_assoc_bss_entry", "cfg80211_ch_switch_notify" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCBpbiB0aGUgY29yZSBjZmc4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0gYnkgcmVtb3ZpbmcgYSBCU1MgdHlwZSBtYXRjaCBjaGVjay4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNoYW5uZWwgc3dpdGNoIG5vdGlmaWNhdGlvbnMgKGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCkgdHJpZ2dlcmVkIGJ5IG1hYzgwMjExIGRyaXZlcnMuIEl0IGNhbiBiZSBmdWxseSB0ZXN0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyB0aGUgc29mdHdhcmUtZW11bGF0ZWQgYG1hYzgwMjExX2h3c2ltYCBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMWQ1MTM1YjJlMmE2YTAzMzI4YmI2MjYwOGZlZWIwYTA2ZDNiMjZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAyMjo0ODo0OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuaW5kZXggMDcxMDgzY2MzMzY3Mi4uOTdiZjdhYjhjYzk2NyAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9zY2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9zY2FuLmNcbkBAIC0zNDQzLDExICYjNDM7MzQ0Myw2IEBAIHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0Y2Jzcy1cdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGJzcywgXHUwMDI2cmRldi1cdTAwM2Vic3NfbGlzdCwgbGlzdCkge1xuLVx0XHRpZiAoIWNmZzgwMjExX2Jzc190eXBlX21hdGNoKGJzcy1cdTAwM2VwdWIuY2FwYWJpbGl0eSxcbi1cdFx0XHRcdFx0ICAgICBic3MtXHUwMDNlcHViLmNoYW5uZWwtXHUwMDNlYmFuZCxcbi1cdFx0XHRcdFx0ICAgICB3ZGV2LVx1MDAzZWNvbm5fYnNzX3R5cGUpKVxuLVx0XHRcdGNvbnRpbnVlO1xuLVxuIFx0XHRpZiAoYnNzID09IGNic3MpXG4gXHRcdFx0Y29udGludWU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCBpbiB0aGUgY29yZSBjZmc4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0gYnkgcmVtb3ZpbmcgYSBCU1MgdHlwZSBtYXRjaCBjaGVjay4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNoYW5uZWwgc3dpdGNoIG5vdGlmaWNhdGlvbnMgKGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCkgdHJpZ2dlcmVkIGJ5IG1hYzgwMjExIGRyaXZlcnMuIEl0IGNhbiBiZSBmdWxseSB0ZXN0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyB0aGUgc29mdHdhcmUtZW11bGF0ZWQgYG1hYzgwMjExX2h3c2ltYCBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMWQ1MTM1YjJlMmE2YTAzMzI4YmI2MjYwOGZlZWIwYTA2ZDNiMjZhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAyMjo0ODo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9zY2FuLmMgYi9uZXQvd2lyZWxlc3Mvc2Nhbi5jCmluZGV4IDA3MTA4M2NjMzM2NzIuLjk3YmY3YWI4Y2M5NjcgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9zY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3NjYW4uYwpAQCAtMzQ0MywxMSAmIzQzOzM0NDMsNiBAQCB2b2lkIGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAljYnNzLSZndDtwdWIuY2hhbm5lbCA9IGNoYW47CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJzcywgJmFtcDtyZGV2LSZndDtic3NfbGlzdCwgbGlzdCkgewotCQlpZiAoIWNmZzgwMjExX2Jzc190eXBlX21hdGNoKGJzcy0mZ3Q7cHViLmNhcGFiaWxpdHksCi0JCQkJCSAgICAgYnNzLSZndDtwdWIuY2hhbm5lbC0mZ3Q7YmFuZCwKLQkJCQkJICAgICB3ZGV2LSZndDtjb25uX2Jzc190eXBlKSkKLQkJCWNvbnRpbnVlOwotCiAJCWlmIChic3MgPT0gY2JzcykKIAkJCWNvbnRpbnVlOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgU3Vic3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC93aXJlbGVzcy9zY2FuLmNgLCBzcGVjaWZpY2FsbHkuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSByZW1vdmluZyBhIGNoZWNrOiBgIWNmZzgwMjExX2Jzc190eXBlX21hdGNoKC4uLilgIHdpdGhpbiB0aGUgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGZ1bmN0aW9uLiBSaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEvY2ZnODAyMTEgc3Vic3lzdGVtLiBXZSYjMzk7cmUgcG90ZW50aWFsbHkgaW1wYWN0aW5nIGhvdyBCU1MgZW50cmllcyBhcmUgdXBkYXRlZCwgc28gd2UgbmVlZCB0byBiZSBjYXJlZnVsLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIGluIHRoZSB3aXJlbGVzcyBzdGFjaywgYW5kIHRoZSB0YXJnZXQgaXMgbGlrZWx5IG1hYzgwMjExLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgY29kZSBwYXRoICppcyogcmVhY2hhYmxlLCBhbmQgSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IGl0IGJlaGF2ZXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTWFjODAyMTFfaHdzaW0gaXMgbXkgZ28tdG8gZm9yIHRoZXNlIHR5cGVzIG9mIGFuYWx5c2VzLCBzbyBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gc3BpbiB1cCBhIHF1aWNrIHRlc3QgY2FzZS4KCkxldCYjMzk7cyBkaXZlIGludG8gdGhhdCBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgZnVuY3Rpb24gd2l0aGluIGBuZXQvd2lyZWxlc3Mvc2Nhbi5jYCBhbmQgZmlndXJlIG91dCB3aGF0JiMzOTtzIHJlYWxseSBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3NjYW4uYz0zNDE2PUVYUE9SVF9TWU1CT0woY2ZnODAyMTFfYnNzX2l0ZXIpO1xubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE3LVxubmV0L3dpcmVsZXNzL3NjYW4uYzozNDE4OnZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE5LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGlua19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjA5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgZnVuY3Rpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhpcyBmdW5jdGlvbi4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZSBhbmQgaXRzIHBvdGVudGlhbCBpbXBhY3Qgb24gZGlmZmVyZW50IHN5c3RlbSBidWlsZHMuIEkga25vdyB0aGF0IGBuZXQvd2lyZWxlc3Mvc2Nhbi5jYCBpcyBkZWVwbHkgaW50ZXJ0d2luZWQgd2l0aCBgY2ZnODAyMTFgLCBzbyBJJiMzOTtsbCBzdGFydCBieSBtYWtpbmcgc3VyZSBJIGhhdmUgdGhlIENPTkZJRyBvcHRpb25zIGNvcnJlY3QgaW4gdGhvc2UgYXJlYXMgYXMgSSB0aGluayB0aGlzIGZpbGUgaXMgZ29pbmcgdG8gbmVlZCB0byBiZSBpbnZvbHZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY2FuLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgJiM0Mzs9IHdleHQtcHJpdi5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cbm5ldC93aXJlbGVzcy9NYWtlZmlsZTo5OmNmZzgwMjExLXkgJiM0Mzs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xMC1jZmc4MDIxMS15ICYjNDM7PSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5OTEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipFeGFtaW5pbmcgdGhlIERlcGVuZGVuY2llcyBhbmQgU3RydWN0dXJlKioKClJpZ2h0LCBzbyBgQ09ORklHX0NGRzgwMjExYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlIGhlcmUuIFRoYXQgbXVjaCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIE5vdywgdGhlIG1vcmUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXMgd2hldGhlciBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaXMgZXhwb3J0ZWQuIFRoYXQgZnVuY3Rpb24gc291bmRzIHBvdGVudGlhbGx5IHJlbGV2YW50LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L3dpcmVsZXNzL3NjYW4uY2AgYXJvdW5kIGxpbmUgMzQxOC4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBzZWUgaG93IGEgQlNTIGVudHJ5IHVwZGF0ZSBpcyBoYW5kbGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgc2Nhbm5pbmcgY29udGV4dC4gTGV0JiMzOTtzIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvc2Nhbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzQxOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzQxODpcdHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuMzQxOTpcdFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGlua19pZCxcbjM0MjA6XHRcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuKVxuMzQyMTpcdHtcbjM0MjI6XHRcdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSB3ZGV2LVx1MDAzZXdpcGh5O1xuMzQyMzpcdFx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2ID0gd2lwaHlfdG9fcmRldih3aXBoeSk7XG4zNDI0Olx0XHRzdHJ1Y3QgY2ZnODAyMTFfaW50ZXJuYWxfYnNzICpjYnNzID0gd2Rldi1cdTAwM2VsaW5rc1tsaW5rX2lkXS5jbGllbnQuY3VycmVudF9ic3M7XG4zNDI1Olx0XHRzdHJ1Y3QgY2ZnODAyMTFfaW50ZXJuYWxfYnNzICpuZXcgPSBOVUxMO1xuMzQyNjpcdFx0c3RydWN0IGNmZzgwMjExX2ludGVybmFsX2JzcyAqYnNzO1xuMzQyNzpcdFx0c3RydWN0IGNmZzgwMjExX2JzcyAqbm9udHJhbnNfYnNzO1xuMzQyODpcdFx0c3RydWN0IGNmZzgwMjExX2JzcyAqdG1wO1xuMzQyOTpcdFxuMzQzMDpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnJkZXYtXHUwMDNlYnNzX2xvY2spO1xuMzQzMTpcdFxuMzQzMjpcdFx0LypcbjM0MzM6XHRcdCAqIFNvbWUgQVBzIHVzZSBDU0EgYWxzbyBmb3IgYmFuZHdpZHRoIGNoYW5nZXMsIGkuZS4sIHdpdGhvdXQgYWN0dWFsbHlcbjM0MzQ6XHRcdCAqIGNoYW5naW5nIHRoZSBjb250cm9sIGNoYW5uZWwsIHNvIG5vIG5lZWQgdG8gdXBkYXRlIGluIHN1Y2ggYSBjYXNlLlxuMzQzNTpcdFx0ICovXG4zNDM2Olx0XHRpZiAoY2Jzcy1cdTAwM2VwdWIuY2hhbm5lbCA9PSBjaGFuKVxuMzQzNzpcdFx0XHRnb3RvIGRvbmU7XG4zNDM4Olx0XG4zNDM5Olx0XHQvKiB1c2UgdHJhbnNtaXR0aW5nIGJzcyAqL1xuMzQ0MDpcdFx0aWYgKGNic3MtXHUwMDNlcHViLnRyYW5zbWl0dGVkX2JzcylcbjM0NDE6XHRcdFx0Y2JzcyA9IGJzc19mcm9tX3B1YihjYnNzLVx1MDAzZXB1Yi50cmFuc21pdHRlZF9ic3MpO1xuMzQ0MjpcdFxuMzQ0MzpcdFx0Y2Jzcy1cdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XG4zNDQ0Olx0XG4zNDQ1Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGJzcywgXHUwMDI2cmRldi1cdTAwM2Vic3NfbGlzdCwgbGlzdCkge1xuMzQ0NjpcdFx0XHRpZiAoYnNzID09IGNic3MpXG4zNDQ3Olx0XHRcdFx0Y29udGludWU7XG4zNDQ4Olx0XG4zNDQ5Olx0XHRcdGlmICghY21wX2JzcyhcdTAwMjZic3MtXHUwMDNlcHViLCBcdTAwMjZjYnNzLVx1MDAzZXB1YiwgQlNTX0NNUF9SRUdVTEFSKSkge1xuMzQ1MDpcdFx0XHRcdG5ldyA9IGJzcztcbjM0NTE6XHRcdFx0XHRicmVhaztcbjM0NTI6XHRcdFx0fVxuMzQ1MzpcdFx0fVxuMzQ1NDpcdFxuMzQ1NTpcdFx0aWYgKG5ldykge1xuMzQ1NjpcdFx0XHQvKiB0byBzYXZlIHRpbWUsIHVwZGF0ZSBJRXMgZm9yIHRyYW5zbWl0dGluZyBic3Mgb25seSAqL1xuMzQ1NzpcdFx0XHRjZmc4MDIxMV91cGRhdGVfa25vd25fYnNzKHJkZXYsIGNic3MsIG5ldywgZmFsc2UpO1xuMzQ1ODpcdFx0XHRuZXctXHUwMDNlcHViLnByb2JlcmVzcF9pZXMgPSBOVUxMO1xuMzQ1OTpcdFx0XHRuZXctXHUwMDNlcHViLmJlYWNvbl9pZXMgPSBOVUxMO1xuMzQ2MDpcdFxuMzQ2MTpcdFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobm9udHJhbnNfYnNzLCB0bXAsXG4zNDYyOlx0XHRcdFx0XHRcdCBcdTAwMjZuZXctXHUwMDNlcHViLm5vbnRyYW5zX2xpc3QsXG4zNDYzOlx0XHRcdFx0XHRcdCBub250cmFuc19saXN0KSB7XG4zNDY0Olx0XHRcdFx0YnNzID0gYnNzX2Zyb21fcHViKG5vbnRyYW5zX2Jzcyk7XG4zNDY1Olx0XHRcdFx0aWYgKF9fY2ZnODAyMTFfdW5saW5rX2JzcyhyZGV2LCBic3MpKVxuMzQ2NjpcdFx0XHRcdFx0cmRldi1cdTAwM2Vic3NfZ2VuZXJhdGlvbiYjNDM7JiM0Mzs7XG4zNDY3Olx0XHRcdH1cbjM0Njg6XHRcbjM0Njk6XHRcdFx0V0FSTl9PTihhdG9taWNfcmVhZChcdTAwMjZuZXctXHUwMDNlaG9sZCkpO1xuMzQ3MDpcdFx0XHRpZiAoIVdBUk5fT04oIV9fY2ZnODAyMTFfdW5saW5rX2JzcyhyZGV2LCBuZXcpKSlcbjM0NzE6XHRcdFx0XHRyZGV2LVx1MDAzZWJzc19nZW5lcmF0aW9uJiM0MzsmIzQzOztcbjM0NzI6XHRcdH1cbjM0NzM6XHRcdGNmZzgwMjExX3JlaGFzaF9ic3MocmRldiwgY2Jzcyk7XG4zNDc0Olx0XG4zNDc1Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobm9udHJhbnNfYnNzLCB0bXAsXG4zNDc2Olx0XHRcdFx0XHQgXHUwMDI2Y2Jzcy1cdTAwM2VwdWIubm9udHJhbnNfbGlzdCxcbjM0Nzc6XHRcdFx0XHRcdCBub250cmFuc19saXN0KSB7XG4zNDc4Olx0XHRcdGJzcyA9IGJzc19mcm9tX3B1Yihub250cmFuc19ic3MpO1xuMzQ3OTpcdFx0XHRic3MtXHUwMDNlcHViLmNoYW5uZWwgPSBjaGFuO1xuMzQ4MDpcdFx0XHRjZmc4MDIxMV9yZWhhc2hfYnNzKHJkZXYsIGJzcyk7XG4zNDgxOlx0XHR9XG4zNDgyOlx0XG4zNDgzOlx0ZG9uZTpcbjM0ODQ6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnJkZXYtXHUwMDNlYnNzX2xvY2spO1xuMzQ4NTpcdH1cbjM0ODY6XHRcbjM0ODc6XHQjaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbjM0ODg6XHRzdGF0aWMgc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpcbjM0ODk6XHRjZmc4MDIxMV9nZXRfZGV2X2Zyb21faWZpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxuMzQ5MDpcdHtcbjM0OTE6XHRcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldjtcbjM0OTI6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4zNDkzOlx0XG4zNDk0Olx0XHRBU1NFUlRfUlROTCgpO1xuMzQ5NTpcdFxuMzQ5NjpcdFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleChuZXQsIGlmaW5kZXgpO1xuMzQ5NzpcdFx0aWYgKCFkZXYpXG4zNDk4Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuMzQ5OTpcdFx0aWYgKGRldi1cdTAwM2VpZWVlODAyMTFfcHRyKVxuMzUwMDpcdFx0XHRyZGV2ID0gd2lwaHlfdG9fcmRldihkZXYtXHUwMDNlaWVlZTgwMjExX3B0ci1cdTAwM2V3aXBoeSk7XG4zNTAxOlx0XHRlbHNlXG4zNTAyOlx0XHRcdHJkZXYgPSBFUlJfUFRSKC1FTk9ERVYpO1xuMzUwMzpcdFx0ZGV2X3B1dChkZXYpO1xuMzUwNDpcdFx0cmV0dXJuIHJkZXY7XG4zNTA1Olx0fVxuMzUwNjpcdFxuMzUwNzpcdGludCBjZmc4MDIxMV93ZXh0X3Npd3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbjM1MDg6XHRcdFx0XHQgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4zNTA5Olx0XHRcdFx0ICB1bmlvbiBpd3JlcV9kYXRhICp3cnF1LCBjaGFyICpleHRyYSlcbjM1MTA6XHR7XG4zNTExOlx0XHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXY7XG4zNTEyOlx0XHRzdHJ1Y3Qgd2lwaHkgKndpcGh5O1xuMzUxMzpcdFx0c3RydWN0IGl3X3NjYW5fcmVxICp3cmVxID0gTlVMTDtcbjM1MTQ6XHRcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3RfaW50ICpjcmVxO1xuMzUxNTpcdFx0aW50IGksIGVyciwgbl9jaGFubmVscyA9IDA7XG4zNTE2Olx0XHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kO1xuMzUxNzpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHF1aXRlIGZhbWlsaWFyIHdpdGggYGNmZzgwMjExYCBhbmQgbmV0d29ya2luZyBpbnRlcm5hbHM6CgoqKkludmVzdGlnYXRpbmcgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgKioKClJpZ2h0LCBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAuIFRoYXQgZnVuY3Rpb24gbmFtZSByaW5ncyBhIGJlbGwuIEl0JiMzOTtzIGRlZmluaXRlbHkgcGFydCBvZiB0aGUgYGNmZzgwMjExYCB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGZyYW1ld29yayDigJMgbm8gc3VycHJpc2UgdGhlcmUuIEl0JiMzOTtzIGxpa2VseSBpbnZvbHZlZCBpbiB1cGRhdGluZyBCU1MgKEJhc2ljIFNlcnZpY2UgU2V0KSBlbnRyaWVzLCB3aGljaCBhcmUgZXNzZW50aWFsbHkgdGhlIGluZm9ybWF0aW9uIHRoZSBkcml2ZXIga2VlcHMgYWJvdXQgYXNzb2NpYXRlZCBhY2Nlc3MgcG9pbnRzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3aGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICp1c2VkKj8gV2hhdCBwYXJ0cyBvZiB0aGUgZHJpdmVyIG9yIGtlcm5lbCBhcmUgY2FsbGluZyBpdD8mIzM0Oy4gVGltZSB0byB0cmFjZSB0aG9zZSBjYWxscyBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdG8gZ3Jhc3AgaXRzIHB1cnBvc2UgYW5kIGltcGFjdCBmdWxseS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQgY2FsbHMgdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvY29yZS5oPTMzMz12b2lkIGNmZzgwMjExX2Jzc19hZ2Uoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL2NvcmUuaC0zMzQtICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWdlX3NlY3MpO1xubmV0L3dpcmVsZXNzL2NvcmUuaDozMzU6dm9pZCBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG5uZXQvd2lyZWxlc3MvY29yZS5oLTMzNi1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IGxpbmssXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yMjM0OT12b2lkIGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzY1LVx0XHRpZiAoIVdBUk5fT04oIXdkZXYtXHUwMDNlbGlua3NbbGlua19pZF0uY2xpZW50LmN1cnJlbnRfYnNzKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIzNjY6XHRcdFx0Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSh3ZGV2LCBsaW5rX2lkLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM2Ny1cdFx0XHRcdFx0XHRcdGNoYW5kZWYtXHUwMDNlY2hhbik7XG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYz0zNDE2PUVYUE9SVF9TWU1CT0woY2ZnODAyMTFfYnNzX2l0ZXIpO1xubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE3LVxubmV0L3dpcmVsZXNzL3NjYW4uYzozNDE4OnZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE5LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGlua19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzNwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDaGFubmVsIFN3aXRjaCBOb3RpZmljYXRpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHdpcmVsZXNzIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbiBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIGlzIHRoZSBvbmUgaW4gcXVlc3Rpb24uIEkgcmVjYWxsIHRoYXQgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGlzIGV4cG9ydGVkLCBtYWtpbmcgaXQgYWNjZXNzaWJsZSBmb3IgZHJpdmVycyB0byB1c2UuIFRoZSBjb250ZXh0IGluZGljYXRlcyB0aGF0IGRyaXZlcnMgbGlrZSBtYWM4MDIxMSBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiBhIGNoYW5uZWwgc3dpdGNoIGlzIHRyaWdnZXJlZC4KCkdpdmVuIHRoaXMgc2V0dXAsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGlzIGlzIGEgbGVnaXRpbWF0ZSBjYWxsIHBhdGgsIGFuZCBhIHRlc3RhYmxlIG9uZSBhdCB0aGF0LiBDb25zaWRlcmluZyBJIGhhdmUgbWFjODAyMTFfaHdzaW0gYXZhaWxhYmxlLCB0aGF0JiMzOTtzIGV4YWN0bHkgd2hlcmUgSSYjMzk7bGwgbG9vayBmb3IgdGVzdGFiaWxpdHkuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGl0c2VsZiBuZXh0LCB0byB1bmRlcnN0YW5kIHRoZSBub3RpZmljYXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9MTA3Nz12b2lkIGF0aDZrbF9jZmc4MDIxMV9zY2FuX2NvbXBsZXRlX2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIGJvb2wgYWJvcnRlZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTEwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMTA3OnZvaWQgYXRoNmtsX2NmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgaW50IGZyZXEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTEwOC1cdFx0XHRcdCAgICAgIGVudW0gd21pX3BoeV9tb2RlIG1vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTExMjItXHR3aXBoeV9sb2NrKHZpZi1cdTAwM2Vhci1cdTAwM2V3aXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTEyMzpcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkodmlmLVx1MDAzZW5kZXYsIFx1MDAyNmNoYW5kZWYsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTExMjQtXHR3aXBoeV91bmxvY2sodmlmLVx1MDAzZWFyLVx1MDAzZXdpcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmg9Mjc9c3RydWN0IHdpcmVsZXNzX2RldiAqYXRoNmtsX2ludGVyZmFjZV9hZGQoc3RydWN0IGF0aDZrbCAqYXIsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oLTMwLVx0XHRcdFx0XHQgIHU4IGZ3X3ZpZl9pZHgsIHU4IG53X3R5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oOjMxOnZvaWQgYXRoNmtsX2NmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgaW50IGZyZXEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmgtMzItXHRcdFx0XHQgICAgICBlbnVtIHdtaV9waHlfbW9kZSBtb2RlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYz0zNzQ9dm9pZCBhdGg2a2xfY29ubmVjdF9hcF9tb2RlX2JzcyhzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MTYgY2hhbm5lbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYy00MTUtXHRcdC8qIHdlIGFjdHVhbGx5IGRvbiYjMzk7dCBrbm93IHRoZSBwaHltb2RlLCBkZWZhdWx0IHRvIEhUMjAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jOjQxNjpcdFx0YXRoNmtsX2NmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkodmlmLCBjaGFubmVsLCBXTUlfMTFHX0hUMjApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNDE3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYz0yNjY9dm9pZCBtd2lmaWV4X2Rmc19jaGFuX3N3X3dvcmtfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yOTEtXHR3aXBoeV9sb2NrKHByaXYtXHUwMDNld2Rldi53aXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjkyOlx0Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeShwcml2LVx1MDAzZW5ldGRldiwgXHUwMDI2cHJpdi1cdTAwM2VkZnNfY2hhbmRlZiwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjkzLVx0d2lwaHlfdW5sb2NrKHByaXYtXHUwMDNld2Rldi53aXBoeSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvZXZlbnQuYz00MzY9cXRuZl9ldmVudF9oYW5kbGVfZnJlcV9jaGFuZ2Uoc3RydWN0IHF0bmZfd21hYyAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2V2ZW50LmMtNDgwLVx0XHR3aXBoeV9sb2NrKHByaXZfdG9fd2lwaHkodmlmLVx1MDAzZW1hYykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvZXZlbnQuYzo0ODE6XHRcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkodmlmLVx1MDAzZW5ldGRldiwgXHUwMDI2Y2hhbmRlZiwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9ldmVudC5jLTQ4Mi1cdFx0d2lwaHlfdW5sb2NrKHByaXZfdG9fd2lwaHkodmlmLVx1MDAzZW1hYykpO1xuLS1cbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg9OTk1OD1jZmc4MDIxMV9yZWdfY2FuX2JlYWNvbl9yZWxheChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtOTk3MC0vKipcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6OTk3MTogKiBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5IC0gdXBkYXRlIHdkZXYgY2hhbm5lbCBhbmQgbm90aWZ5IHVzZXJzcGFjZVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05OTcyLSAqIEBkZXY6IHRoZSBkZXZpY2Ugd2hpY2ggc3dpdGNoZWQgY2hhbm5lbHNcbi0tXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk5NzgtICovXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjk5Nzk6dm9pZCBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk5ODAtXHRcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiAqY2hhbmRlZixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDQ2Nz1zdGF0aWMgaW50IF9faWVlZTgwMjExX2NzYV9maW5hbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGlua19kYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00NTE2LVxubmV0L21hYzgwMjExL2NmZy5jOjQ1MTc6XHRjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bGlua19kYXRhLVx1MDAzZWNzYS5jaGFucmVxLm9wZXIsXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDUxOC1cdFx0XHRcdCAgbGlua19kYXRhLVx1MDAzZWxpbmtfaWQpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9Mjg3Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfY3NhX3N3aXRjaF93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0yOTA3LVx0XHRsaW5rLVx1MDAzZWNvbmYtXHUwMDNlY2hhbnJlcSA9IGxpbmstXHUwMDNlY3NhLmNoYW5yZXE7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjI5MDg6XHRcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZsaW5rLVx1MDAzZWNzYS5jaGFucmVxLm9wZXIsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI5MDktXHRcdFx0XHRcdCAgbGluay1cdTAwM2VsaW5rX2lkKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTMwMTY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Noc3dpdGNoX3Bvc3RfYmVhY29uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzA1Ny1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MzA1ODpcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZsaW5rLVx1MDAzZWNvbmYtXHUwMDNlY2hhbnJlcS5vcGVyLFxubmV0L21hYzgwMjExL21sbWUuYy0zMDU5LVx0XHRcdFx0ICBsaW5rLVx1MDAzZWxpbmtfaWQpO1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIyOTk9c3RhdGljIHZvaWQgbmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzQ4LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMjM0OTp2b2lkIGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIzNTAtXHRcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiAqY2hhbmRlZixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzU5LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMjM2MDpcdHRyYWNlX2NmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoZGV2LCBjaGFuZGVmLCBsaW5rX2lkKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIzNjEtXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM5MC19XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIyMzkxOkVYUE9SVF9TWU1CT0woY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSk7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzkyLVxuLS1cbm5ldC93aXJlbGVzcy90cmFjZS5oPTM1Njg9VFJBQ0VfRVZFTlQoY2ZnODAyMTFfcmVnX2Nhbl9iZWFjb24sXG4tLVxubmV0L3dpcmVsZXNzL3RyYWNlLmgtMzU5MS1cbm5ldC93aXJlbGVzcy90cmFjZS5oOjM1OTI6VFJBQ0VfRVZFTlQoY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSxcbm5ldC93aXJlbGVzcy90cmFjZS5oLTM1OTMtXHRUUF9QUk9UTyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDc3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gYXBwcm9hY2ggdGhpcyBmdXp6aW5nIGVmZm9ydC4gSXQgc2VlbXMgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGlzIGNhbGxlZCBieSBgbWFjODAyMTFgLCBzcGVjaWZpY2FsbHkgZnJvbSB3aXRoaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AgYW5kIGBuZXQvbWFjODAyMTEvbWxtZS5jYC4gVGhhdCBpbXBsaWVzIHRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzaWJsZSB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGhlbHBmdWwgZm9yIHRlc3RpbmcuCgpJIG5vdGljZSB0aGVyZSBoYXZlIGJlZW4gbW9kaWZpY2F0aW9ucyB0byBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAuIFRoYXQgbWFrZXMgaXQgYSBwb3RlbnRpYWwgdGFyZ2V0IGFzIHdlbGwuIFRoZSBxdWVzdGlvbiBpcywgd2hpY2ggb25lIGlzIHRoZSAqYmV0dGVyKiBlbnRyeSBwb2ludD8gYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGlzIGV4cG9ydGVkIGFuZCBsb29rcyBsaWtlIGEgY2xlYW4gZW50cnkgcG9pbnQuIEJ1dCwgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGlzICphbHNvKiBleHBvcnRlZC4gV2FpdCBhIHNlY29uZC4uLmRpZCBJIHJlYWQgdGhhdCByaWdodD8gSG1tLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgYG5ldC93aXJlbGVzcy9zY2FuLmNgIGFyb3VuZCBsaW5lIDM0MTguIEp1c3QgdG8gYmUgc3VyZS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGNvbmZpcm0gdGhlIGVudHJ5IHBvaW50cyBiZWZvcmUganVtcGluZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3NjYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MTMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBDYWxsIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGEgcHJvYmxlbSDigJMgdGhlIGZ1bmN0aW9uIGBjZmc4MDIxMV9ic3NfaXRlcmAgaXNuJiMzOTt0IGV4cG9ydGVkLiBIbW0sIGxpbmUgMzQxNiBzaG93cyBpdCAqaXMqIGV4cG9ydGVkLiBPa2F5LCBnb29kLiBCdXQgd2FpdCwgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGlzbiYjMzk7dCBleHBvcnRlZCBlaXRoZXIuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLiBJIHNlZSBpdCYjMzk7cyBkZWNsYXJlZCBpbiBgbmV0L3dpcmVsZXNzL2NvcmUuaGAsIGFuZCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AuIFJpZ2h0LCBzbyB0aGF0IHRlbGxzIG1lIGl0JiMzOTtzIGFuIGludGVybmFsIGBjZmc4MDIxMWAgZnVuY3Rpb24uIE5vdywgSSBuZWVkIHRvIGZpbmQgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCwgYW5kIHRoYXQgc2VlbXMgdG8gYmUgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgLiBPaywgSSB0aGluayBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIHN0cnVjdHVyZSBvZiB0aGUgY2FsbC4gTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGlkZW50aWZpZWQgYWxsIHRoZSBjYWxsZXJzLiBBcmUgdGhlcmUgYW55IG90aGVyIGNhbGxlcnMgb2YgdGhhdCBmdW5jdGlvbj8gTmVlZCB0byBiZSBzdXJlIG9mIHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvY29yZS5oPTMzMz12b2lkIGNmZzgwMjExX2Jzc19hZ2Uoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL2NvcmUuaC0zMzQtICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWdlX3NlY3MpO1xubmV0L3dpcmVsZXNzL2NvcmUuaDozMzU6dm9pZCBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG5uZXQvd2lyZWxlc3MvY29yZS5oLTMzNi1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IGxpbmssXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yMjM0OT12b2lkIGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzY1LVx0XHRpZiAoIVdBUk5fT04oIXdkZXYtXHUwMDNlbGlua3NbbGlua19pZF0uY2xpZW50LmN1cnJlbnRfYnNzKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIzNjY6XHRcdFx0Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSh3ZGV2LCBsaW5rX2lkLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM2Ny1cdFx0XHRcdFx0XHRcdGNoYW5kZWYtXHUwMDNlY2hhbik7XG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYz0zNDE2PUVYUE9SVF9TWU1CT0woY2ZnODAyMTFfYnNzX2l0ZXIpO1xubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE3LVxubmV0L3dpcmVsZXNzL3NjYW4uYzozNDE4OnZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE5LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGlua19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTM5OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENoYW5uZWwgU3dpdGNoIE5vdGlmaWNhdGlvbiBNZWNoYW5pc20qKgoKT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBrZXkgZnVuY3Rpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3Mgc2VlIGlmIHRoaXMgbm90aWZpY2F0aW9uIGlzIHRyaWdnZXJlZCBkaXJlY3RseSB0aHJvdWdoIG5ldGxpbmsuIEhtbSwgbm8sIGl0IGxvb2tzIGxpa2UgZHJpdmVycyBhY3R1YWxseSAqY2FsbCogYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIHRvIHRlbGwgY2ZnODAyMTEgdGhhdCB0aGV5JiMzOTt2ZSBtYWRlIGEgY2hhbm5lbCBzd2l0Y2guCgpTbywgaG93ICppcyogdGhlIGNoYW5uZWwgc3dpdGNoIGluaXRpYXRlZCBpbiB0aGUgZmlyc3QgcGxhY2U/IEFoLCBvZiBjb3Vyc2UsIHRocm91Z2ggbmV0bGluay4gTGlrZWx5IHVzaW5nIGVpdGhlciBgTkw4MDIxMV9DTURfQ0hfU1dJVENIX05PVElGWWAgb3IgYE5MODAyMTFfQ01EX0NIQU5ORUxfU1dJVENIYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29tbWFuZCBvcmlnaW5hdGVzLiBUaW1lIHRvIGRpdmUgaW50byBgbmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCB3aXRoaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIGFuZCBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtubDgwMjExX2NoX3N3aXRjaF9ub3RpZnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIyOTc9RVhQT1JUX1NZTUJPTChjZmc4MDIxMV9wbWtzYV9jYW5kaWRhdGVfbm90aWZ5KTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIyOTgtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIyMjk5OnN0YXRpYyB2b2lkIG5sODAyMTFfY2hfc3dpdGNoX25vdGlmeShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzAwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIzNDk9dm9pZCBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM4Ny1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIzODg6XHRubDgwMjExX2NoX3N3aXRjaF9ub3RpZnkocmRldiwgZGV2LCBsaW5rX2lkLCBjaGFuZGVmLCBHRlBfS0VSTkVMLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM4OS1cdFx0XHRcdCBOTDgwMjExX0NNRF9DSF9TV0lUQ0hfTk9USUZZLCAwLCBmYWxzZSk7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yMjQzMz12b2lkIGNmZzgwMjExX2NoX3N3aXRjaF9zdGFydGVkX25vdGlmeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjI0NDctXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIyNDQ4Olx0bmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHJkZXYsIGRldiwgbGlua19pZCwgY2hhbmRlZiwgR0ZQX0tFUk5FTCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjI0NDktXHRcdFx0XHQgTkw4MDIxMV9DTURfQ0hfU1dJVENIX1NUQVJURURfTk9USUZZLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI4NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBDaGFubmVsIFN3aXRjaCBOb3RpZmljYXRpb25zIGluIHRoZSBXaXJlbGVzcyBTdGFjayoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIHdvcmsgaW4gdGhlIGtlcm5lbCwgYW5kIGBubDgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGltbWVkaWF0ZWx5IGp1bXBzIG91dCBhcyB0aGUgY2VudHJhbCBwb2ludCBmb3Igc2VuZGluZyB0aG9zZSBldmVudHMgdXAgdG8gdXNlcnNwYWNlLiBJIGtub3cgdGhhdCBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgdGhlIGRyaXZlcnMgY2FsbCB0byB0cmlnZ2VyIHRoaXMgcHJvY2Vzcy4KCkluIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0sIHRoaXMgbm90aWZpY2F0aW9uIGlzIGZpcmVkIGZyb20gdHdvIGtleSBwbGFjZXM6IGBpZWVlODAyMTFfY3NhX3N3aXRjaF93b3JrYCBhbmQgYGllZWU4MDIxMV9jaHN3aXRjaF9wb3N0X2JlYWNvbmAuIFRoZXNlLCBhcyBJIHJlY2FsbCwgYXJlIHRyaWdnZXJlZCB3aGVuIHRoZSBhY2Nlc3MgcG9pbnQgc2VuZHMgYSBDU0EgKENoYW5uZWwgU3dpdGNoIEFubm91bmNlbWVudCkgZWxlbWVudCB3aXRoaW4gdGhlIGJlYWNvbiBmcmFtZSwgb3Igd2hlbiB1c2Vyc3BhY2UgYWN0aXZlbHkgcmVxdWVzdHMgYSBjaGFubmVsIGNoYW5nZS4gVGhlcmVmb3JlLCBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaXMgY2xlYXJseSBhIHByaW1lIGNhbmRpZGF0ZSwgYSBwZXJmZWN0ICYjMzQ7Rm9jdXNTeW1ib2wmIzM0OyBpbiBteSBhbmFseXNpcy4KCkJleW9uZCB0aGF0LCBJJiMzOTttIG5vdGluZyB0aGF0IGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCBjb3VsZCBiZSB1c2VmdWwsIGV2ZW4gaWYgaXQmIzM5O3Mgbm90IGV4cG9ydGVkLiBJdCYjMzk7cyBub3QgZGVjbGFyZWQgc3RhdGljLCB3aGljaCBtZWFucyBpdCBoYXMgYSBnbG9iYWxseSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyB0cnVlLi4uIFllcywgYHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSguLi4pYCBjb25maXJtcyBpdC4gSSB0aGluayBJJiMzOTtsbCB1c2UgdGhhdCBhcyBhbm90aGVyIGZvY3VzIHBvaW50LgoKTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9ucyBuZWVkZWQgZm9yIHRoaXMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBPYnZpb3VzbHksIGBDT05GSUdfQ0ZHODAyMTFgIGlzIGVzc2VudGlhbCwgdGhhdCYjMzk7cyBhIGdpdmVuLiBJJiMzOTtsbCBuZWVkIGBDT05GSUdfTUFDODAyMTFgIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIG5vdGlmaWNhdGlvbiB2aWEgYSBkcml2ZXIuIEFuZCwgZm9yIHByYWN0aWNhbCB0ZXN0aW5nLCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGhhdmUgYENPTkZJR19NQUM4MDIxMV9IV1NJTWAgY29uZmlndXJlZC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19DRkc4MDIxMWAgYW5kIGBDT05GSUdfTUFDODAyMTFgIGFyZSBhY3R1YWxseSBzZXQgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjAyMQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgV2lyZWxlc3MgTGFuZHNjYXBlKioKCkFscmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoaXMga2VybmVsLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgQ0ZHODAyMTFgIOKAkyB0aGF0JiMzOTtzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlLiBUaGF0JiMzOTtzIHRoZSBnby10bywgdGhlIG1haW4gcG9pbnQgb2YgY29udHJvbCBmb3IgdGhlIHdpcmVsZXNzIHN0YWNrLiBJdCYjMzk7cyB0aGUgY2VudHJhbCBodWIgZm9yIGhhbmRsaW5nIGFsbCBzb3J0cyBvZiByZWd1bGF0b3J5IGFuZCBjb25maWd1cmF0aW9uIGFzcGVjdHMgcmVsYXRlZCB0byA4MDIuMTEgc3RhbmRhcmRzLiBHb3QgaXQuCgpOb3csIHdoZXJlIGRvIEkgZmluZCB0aGUgbW9yZSBzcGVjaWZpYyBNQUMtbGF5ZXIgaW1wbGVtZW50YXRpb24gZGV0YWlscz8gT2gsIHJpZ2h0LCBgTUFDODAyMTFgLiBUaGF0IHNob3VsZCBiZSB0aGUgbmV4dCB0aGluZyB0byBpbnNwZWN0LiBBbmQsIEkgcmVjYWxsIGl0JiMzOTtzIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkmIzM5O2QgZmluZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IHNhbWUgZGlyZWN0b3J5LiBUaGF0IG1ha2VzIHNlbnNlOyBpdCB3aWxsIGFsbG93IG1lIHRvIHR1cm4gZmVhdHVyZXMgb24gb3Igb2ZmLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdyBmb3IgcXVpY2sgcmVmZXJlbmNlIGluIG15IHJlc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMjItXHRib29sXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxubmV0L21hYzgwMjExL0tjb25maWctNDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXHRzdHJpbmdcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFwmIzM0O1NvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1Rcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNzgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xubmV0L21hYzgwMjExL0tjb25maWctODAtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cdGJvb2wgXCYjMzQ7VHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTExLVx0Ym9vbCBcJiMzNDtTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIEhUIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgT0NCIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTg3LVx0Ym9vbCBcJiMzNDtWZXJib3NlIElCU1MgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTk4LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBURExTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVx0aW50IFwmIzM0O1N0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcJiMzNDsgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDUxMAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbjoKCioqTUFDODAyMTEgYW5kIHRoZSBIV1NJTSBNb2R1bGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHdpcmVsZXNzIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGBNQUM4MDIxMWAuIFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBlbnRyeSwgaXQmIzM5O3MgdGhlIGZvdW5kYXRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gQW5kIHRoZW4sIEkgc2VlIHRoaXMgcmVmZXJlbmNlIHRvIGBNQUM4MDIxMV9IV1NJTWAuIEFoLCByaWdodCwgdGhhdCYjMzk7cyB0aGUgSGFyZHdhcmUgU2ltdWxhdG9yIG1vZHVsZS4gSSByZW1lbWJlciB0aGF0LiBJdCBhbGxvd3MgeW91IHRvIGVtdWxhdGUgd2lyZWxlc3MgaGFyZHdhcmUgaW4gc29mdHdhcmUsIHdoaWNoIGlzIGluY3JlZGlibHkgdXNlZnVsIGZvciB0ZXN0aW5nIGFuZCBkZXZlbG9wbWVudCwgZXNwZWNpYWxseSB3aGVuIHlvdSBkb24mIzM5O3QgaGF2ZSBwaHlzaWNhbCBoYXJkd2FyZSByZWFkaWx5IGF2YWlsYWJsZS4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBsb2NhdGlvbiBvZiB0aGUgYE1BQzgwMjExX0hXU0lNYCBpbXBsZW1lbnRhdGlvbi4gSXQgc2hvdWxkIGJlLCBhcyBJIHJlY2FsbCwgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3NgIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGxpa2VseSBpbiBhIGZpbGUgY2FsbGVkIGBtYWM4MDIxMV9od3NpbS5jYCwgb3Igc29tZXRoaW5nIGNsb3NlbHkgbmFtZWQuIExldCBtZSBkb3VibGUgY2hlY2sgdGhhdCBkaXJlY3RvcnkuIFRoaXMgcHJvdmlkZXMgYSBzb2Z0d2FyZS1iYXNlZCBhYnN0cmFjdGlvbiBsYXllciwgY3JpdGljYWwgZm9yIHVuaXQgdGVzdGluZyBhbmQgQ0kvQ0QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMV9IV1NJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4OTgKCQkJCQkJCW91dHB1dDogMTkzCgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQmIzM5O3MgcmVsYXRlZCB0byBgTUFDODAyMTFfSFdTSU1gLCBtZWFuaW5nIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gd2l0aGluIG1hYzgwMjExLiBHb29kLCB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUgYSBiaXQuIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSByZW1vdmluZyBhIGNoZWNrIHdpdGhpbiBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIGNvZGUgcGF0aCAqaXMqIGRlZmluaXRlbHkgcmVhY2hhYmxlLgoKSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGhlcmUuIFRoZSBjb3JlIGZ1bmN0aW9uIG9mIGludGVyZXN0IGlzIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCwgYW5kIGl0IGlzIHRyaWdnZXJlZCBieSBhIGNoYW5uZWwgc3dpdGNoIG5vdGlmaWNhdGlvbiB1c2luZyBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAuIFdlIGtub3cgdGhpcyBpcyByZWFjaGFibGUgYmVjYXVzZSBtYWM4MDIxMSBkcml2ZXJzLCB3aGljaCBpbmNsdWRlcyB0aGUgc2ltdWxhdGVkIGhhcmR3YXJlLCB1c2UgdGhpcyBmdW5jdGlvbi4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCBpc24mIzM5O3QgaW5saW5lZC4gSSByZW1lbWJlciBzZWVpbmcgaXRzIGRlY2xhcmF0aW9uIGluIGBuZXQvd2lyZWxlc3MvY29yZS5oYCBhbmQgdGhlIGRlZmluaXRpb24gaW4gYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBBbHJpZ2h0LCBpdCYjMzk7cyBub3QgbWFya2VkIGBpbmxpbmVgIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGEgZGlzdGluY3QgZnVuY3Rpb24gY2FsbCBhcyBJIHN1c3BlY3RlZC4gQW5kLCBJJiMzOTttIGNvbmZpZGVudCBhYm91dCBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWA7IGl0IGlzIGRlZmluZWQgaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIGFuZCBpcyBleHBvcnRlZC4KCk92ZXJhbGwsIGV2ZXJ5dGhpbmcgc2VlbXMgY29uc2lzdGVudCBhbmQgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaW4gdGhlIGNvcmUgY2ZnODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIGJ5IHJlbW92aW5nIGEgQlNTIHR5cGUgbWF0Y2ggY2hlY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIChgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWApIHRyaWdnZXJlZCBieSBtYWM4MDIxMSBkcml2ZXJzLiBJdCBjYW4gYmUgZnVsbHkgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaW4gdGhlIGNvcmUgY2ZnODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIGJ5IHJlbW92aW5nIGEgQlNTIHR5cGUgbWF0Y2ggY2hlY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIChgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWApIHRyaWdnZXJlZCBieSBtYWM4MDIxMSBkcml2ZXJzLiBJdCBjYW4gYmUgZnVsbHkgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDg6NDkuNTE3MjM0MDA1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIzOTA2MDczNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlcIixcbiAgICBcImNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaW4gdGhlIGNvcmUgY2ZnODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIGJ5IHJlbW92aW5nIGEgQlNTIHR5cGUgbWF0Y2ggY2hlY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIChgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWApIHRyaWdnZXJlZCBieSBtYWM4MDIxMSBkcml2ZXJzLiBJdCBjYW4gYmUgZnVsbHkgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0ODo0OS41MTcyNDA3NjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTE3MDcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYxZDUxMzViMmUyYTZhMDMzMjhiYjYyNjA4ZmVlYjBhMDZkM2IyNmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMiAyMjo0ODo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbmluZGV4IDA3MTA4M2NjMzM2NzIuLjk3YmY3YWI4Y2M5NjcgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbisrKyBiL25ldC93aXJlbGVzcy9zY2FuLmNcXG5AQCAtMzQ0MywxMSArMzQ0Myw2IEBAIHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRjYnNzLVxcdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGJzcywgXFx1MDAyNnJkZXYtXFx1MDAzZWJzc19saXN0LCBsaXN0KSB7XFxuLVxcdFxcdGlmICghY2ZnODAyMTFfYnNzX3R5cGVfbWF0Y2goYnNzLVxcdTAwM2VwdWIuY2FwYWJpbGl0eSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBic3MtXFx1MDAzZXB1Yi5jaGFubmVsLVxcdTAwM2ViYW5kLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIHdkZXYtXFx1MDAzZWNvbm5fYnNzX3R5cGUpKVxcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFxuIFxcdFxcdGlmIChic3MgPT0gY2JzcylcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0ODo1MC4wMjMzNjIzOThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MTg4NDQ2NDk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeVwiLFxuICAgIFwiY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCBpbiB0aGUgY29yZSBjZmc4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0gYnkgcmVtb3ZpbmcgYSBCU1MgdHlwZSBtYXRjaCBjaGVjay4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNoYW5uZWwgc3dpdGNoIG5vdGlmaWNhdGlvbnMgKGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCkgdHJpZ2dlcmVkIGJ5IG1hYzgwMjExIGRyaXZlcnMuIEl0IGNhbiBiZSBmdWxseSB0ZXN0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyB0aGUgc29mdHdhcmUtZW11bGF0ZWQgYG1hYzgwMjExX2h3c2ltYCBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYxZDUxMzViMmUyYTZhMDMzMjhiYjYyNjA4ZmVlYjBhMDZkM2IyNmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDIyOjQ4OjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3NjYW4uYyBiL25ldC93aXJlbGVzcy9zY2FuLmNcbmluZGV4IDA3MTA4M2NjMzM2NzIuLjk3YmY3YWI4Y2M5NjcgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jXG4rKysgYi9uZXQvd2lyZWxlc3Mvc2Nhbi5jXG5AQCAtMzQ0MywxMSArMzQ0Myw2IEBAIHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0Y2Jzcy1cdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGJzcywgXHUwMDI2cmRldi1cdTAwM2Vic3NfbGlzdCwgbGlzdCkge1xuLVx0XHRpZiAoIWNmZzgwMjExX2Jzc190eXBlX21hdGNoKGJzcy1cdTAwM2VwdWIuY2FwYWJpbGl0eSxcbi1cdFx0XHRcdFx0ICAgICBic3MtXHUwMDNlcHViLmNoYW5uZWwtXHUwMDNlYmFuZCxcbi1cdFx0XHRcdFx0ICAgICB3ZGV2LVx1MDAzZWNvbm5fYnNzX3R5cGUpKVxuLVx0XHRcdGNvbnRpbnVlO1xuLVxuIFx0XHRpZiAoYnNzID09IGNic3MpXG4gXHRcdFx0Y29udGludWU7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0ODo1MC4wMjMzNjQxMzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODkzNzk3NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIFN1YnN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC93aXJlbGVzcy9zY2FuLmNgLCBzcGVjaWZpY2FsbHkuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbG9va3MgbGlrZSB0aGV5J3JlIHJlbW92aW5nIGEgY2hlY2s6IGAhY2ZnODAyMTFfYnNzX3R5cGVfbWF0Y2goLi4uKWAgd2l0aGluIHRoZSBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgZnVuY3Rpb24uIFJpZ2h0IGF3YXksIHRoaXMgc2NyZWFtcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtYWM4MDIxMS9jZmc4MDIxMSBzdWJzeXN0ZW0uIFdlJ3JlIHBvdGVudGlhbGx5IGltcGFjdGluZyBob3cgQlNTIGVudHJpZXMgYXJlIHVwZGF0ZWQsIHNvIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bC5cblxuR2l2ZW4gdGhhdCB0aGlzIGlzIGluIHRoZSB3aXJlbGVzcyBzdGFjaywgYW5kIHRoZSB0YXJnZXQgaXMgbGlrZWx5IG1hYzgwMjExLCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBjb2RlIHBhdGggKmlzKiByZWFjaGFibGUsIGFuZCBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyBpdCBiZWhhdmVzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIE1hYzgwMjExX2h3c2ltIGlzIG15IGdvLXRvIGZvciB0aGVzZSB0eXBlcyBvZiBhbmFseXNlcywgc28gSSdtIGdvaW5nIHRvIHdhbnQgdG8gc3BpbiB1cCBhIHF1aWNrIHRlc3QgY2FzZS5cblxuTGV0J3MgZGl2ZSBpbnRvIHRoYXQgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3dpcmVsZXNzL3NjYW4uY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0ODo1My45MTcxNjQyNTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NDQ2MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jPTM0MTY9RVhQT1JUX1NZTUJPTChjZmc4MDIxMV9ic3NfaXRlcik7XFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE3LVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzQxODp2b2lkIGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM0MTktXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbGlua19pZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDg6NTQuMDUxNjE2NDQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MzIxOTMyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIG1vZGlmaWNhdGlvbiB0byB0aGUgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGZ1bmN0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgaW5mbHVlbmNlIHRoaXMgZnVuY3Rpb24uIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIGRpZmZlcmVudCBzeXN0ZW0gYnVpbGRzLiBJIGtub3cgdGhhdCBgbmV0L3dpcmVsZXNzL3NjYW4uY2AgaXMgZGVlcGx5IGludGVydHdpbmVkIHdpdGggYGNmZzgwMjExYCwgc28gSSdsbCBzdGFydCBieSBtYWtpbmcgc3VyZSBJIGhhdmUgdGhlIENPTkZJRyBvcHRpb25zIGNvcnJlY3QgaW4gdGhvc2UgYXJlYXMgYXMgSSB0aGluayB0aGlzIGZpbGUgaXMgZ29pbmcgdG8gbmVlZCB0byBiZSBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ4OjU3LjQ5NDgzODAwNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTcwODY5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2FuLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9NYWtlZmlsZT03PW9iai0kKENPTkZJR19XRVhUX1BSSVYpICs9IHdleHQtcHJpdi5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlLTgtXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjk6Y2ZnODAyMTEteSArPSBjb3JlLm8gc3lzZnMubyByYWRpb3RhcC5vIHV0aWwubyByZWcubyBzY2FuLm8gbmw4MDIxMS5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlLTEwLWNmZzgwMjExLXkgKz0gbWxtZS5vIGlic3MubyBzbWUubyBjaGFuLm8gZXRodG9vbC5vIG1lc2gubyBhcC5vIHRyYWNlLm8gb2NiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDg6NTcuNTY2NTUzMDIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzODI4MTUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgYW5kIFN0cnVjdHVyZSoqXG5cblJpZ2h0LCBzbyBgQ09ORklHX0NGRzgwMjExYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlIGhlcmUuIFRoYXQgbXVjaCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIE5vdywgdGhlIG1vcmUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXMgd2hldGhlciBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaXMgZXhwb3J0ZWQuIFRoYXQgZnVuY3Rpb24gc291bmRzIHBvdGVudGlhbGx5IHJlbGV2YW50LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L3dpcmVsZXNzL3NjYW4uY2AgYXJvdW5kIGxpbmUgMzQxOC4gVGhhdCdzIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHNlZSBob3cgYSBCU1MgZW50cnkgdXBkYXRlIGlzIGhhbmRsZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBzY2FubmluZyBjb250ZXh0LiBMZXQncyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTkxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDk6MDEuMTA0ODM4NDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNDE4LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzQxODpcXHR2b2lkIGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4zNDE5OlxcdFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGxpbmtfaWQsXFxuMzQyMDpcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbilcXG4zNDIxOlxcdHtcXG4zNDIyOlxcdFxcdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSB3ZGV2LVxcdTAwM2V3aXBoeTtcXG4zNDIzOlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiA9IHdpcGh5X3RvX3JkZXYod2lwaHkpO1xcbjM0MjQ6XFx0XFx0c3RydWN0IGNmZzgwMjExX2ludGVybmFsX2JzcyAqY2JzcyA9IHdkZXYtXFx1MDAzZWxpbmtzW2xpbmtfaWRdLmNsaWVudC5jdXJyZW50X2JzcztcXG4zNDI1OlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9pbnRlcm5hbF9ic3MgKm5ldyA9IE5VTEw7XFxuMzQyNjpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfaW50ZXJuYWxfYnNzICpic3M7XFxuMzQyNzpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfYnNzICpub250cmFuc19ic3M7XFxuMzQyODpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfYnNzICp0bXA7XFxuMzQyOTpcXHRcXG4zNDMwOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cmRldi1cXHUwMDNlYnNzX2xvY2spO1xcbjM0MzE6XFx0XFxuMzQzMjpcXHRcXHQvKlxcbjM0MzM6XFx0XFx0ICogU29tZSBBUHMgdXNlIENTQSBhbHNvIGZvciBiYW5kd2lkdGggY2hhbmdlcywgaS5lLiwgd2l0aG91dCBhY3R1YWxseVxcbjM0MzQ6XFx0XFx0ICogY2hhbmdpbmcgdGhlIGNvbnRyb2wgY2hhbm5lbCwgc28gbm8gbmVlZCB0byB1cGRhdGUgaW4gc3VjaCBhIGNhc2UuXFxuMzQzNTpcXHRcXHQgKi9cXG4zNDM2OlxcdFxcdGlmIChjYnNzLVxcdTAwM2VwdWIuY2hhbm5lbCA9PSBjaGFuKVxcbjM0Mzc6XFx0XFx0XFx0Z290byBkb25lO1xcbjM0Mzg6XFx0XFxuMzQzOTpcXHRcXHQvKiB1c2UgdHJhbnNtaXR0aW5nIGJzcyAqL1xcbjM0NDA6XFx0XFx0aWYgKGNic3MtXFx1MDAzZXB1Yi50cmFuc21pdHRlZF9ic3MpXFxuMzQ0MTpcXHRcXHRcXHRjYnNzID0gYnNzX2Zyb21fcHViKGNic3MtXFx1MDAzZXB1Yi50cmFuc21pdHRlZF9ic3MpO1xcbjM0NDI6XFx0XFxuMzQ0MzpcXHRcXHRjYnNzLVxcdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XFxuMzQ0NDpcXHRcXG4zNDQ1OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoYnNzLCBcXHUwMDI2cmRldi1cXHUwMDNlYnNzX2xpc3QsIGxpc3QpIHtcXG4zNDQ2OlxcdFxcdFxcdGlmIChic3MgPT0gY2JzcylcXG4zNDQ3OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjM0NDg6XFx0XFxuMzQ0OTpcXHRcXHRcXHRpZiAoIWNtcF9ic3MoXFx1MDAyNmJzcy1cXHUwMDNlcHViLCBcXHUwMDI2Y2Jzcy1cXHUwMDNlcHViLCBCU1NfQ01QX1JFR1VMQVIpKSB7XFxuMzQ1MDpcXHRcXHRcXHRcXHRuZXcgPSBic3M7XFxuMzQ1MTpcXHRcXHRcXHRcXHRicmVhaztcXG4zNDUyOlxcdFxcdFxcdH1cXG4zNDUzOlxcdFxcdH1cXG4zNDU0OlxcdFxcbjM0NTU6XFx0XFx0aWYgKG5ldykge1xcbjM0NTY6XFx0XFx0XFx0LyogdG8gc2F2ZSB0aW1lLCB1cGRhdGUgSUVzIGZvciB0cmFuc21pdHRpbmcgYnNzIG9ubHkgKi9cXG4zNDU3OlxcdFxcdFxcdGNmZzgwMjExX3VwZGF0ZV9rbm93bl9ic3MocmRldiwgY2JzcywgbmV3LCBmYWxzZSk7XFxuMzQ1ODpcXHRcXHRcXHRuZXctXFx1MDAzZXB1Yi5wcm9iZXJlc3BfaWVzID0gTlVMTDtcXG4zNDU5OlxcdFxcdFxcdG5ldy1cXHUwMDNlcHViLmJlYWNvbl9pZXMgPSBOVUxMO1xcbjM0NjA6XFx0XFxuMzQ2MTpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobm9udHJhbnNfYnNzLCB0bXAsXFxuMzQ2MjpcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNm5ldy1cXHUwMDNlcHViLm5vbnRyYW5zX2xpc3QsXFxuMzQ2MzpcXHRcXHRcXHRcXHRcXHRcXHQgbm9udHJhbnNfbGlzdCkge1xcbjM0NjQ6XFx0XFx0XFx0XFx0YnNzID0gYnNzX2Zyb21fcHViKG5vbnRyYW5zX2Jzcyk7XFxuMzQ2NTpcXHRcXHRcXHRcXHRpZiAoX19jZmc4MDIxMV91bmxpbmtfYnNzKHJkZXYsIGJzcykpXFxuMzQ2NjpcXHRcXHRcXHRcXHRcXHRyZGV2LVxcdTAwM2Vic3NfZ2VuZXJhdGlvbisrO1xcbjM0Njc6XFx0XFx0XFx0fVxcbjM0Njg6XFx0XFxuMzQ2OTpcXHRcXHRcXHRXQVJOX09OKGF0b21pY19yZWFkKFxcdTAwMjZuZXctXFx1MDAzZWhvbGQpKTtcXG4zNDcwOlxcdFxcdFxcdGlmICghV0FSTl9PTighX19jZmc4MDIxMV91bmxpbmtfYnNzKHJkZXYsIG5ldykpKVxcbjM0NzE6XFx0XFx0XFx0XFx0cmRldi1cXHUwMDNlYnNzX2dlbmVyYXRpb24rKztcXG4zNDcyOlxcdFxcdH1cXG4zNDczOlxcdFxcdGNmZzgwMjExX3JlaGFzaF9ic3MocmRldiwgY2Jzcyk7XFxuMzQ3NDpcXHRcXG4zNDc1OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShub250cmFuc19ic3MsIHRtcCxcXG4zNDc2OlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2Y2Jzcy1cXHUwMDNlcHViLm5vbnRyYW5zX2xpc3QsXFxuMzQ3NzpcXHRcXHRcXHRcXHRcXHQgbm9udHJhbnNfbGlzdCkge1xcbjM0Nzg6XFx0XFx0XFx0YnNzID0gYnNzX2Zyb21fcHViKG5vbnRyYW5zX2Jzcyk7XFxuMzQ3OTpcXHRcXHRcXHRic3MtXFx1MDAzZXB1Yi5jaGFubmVsID0gY2hhbjtcXG4zNDgwOlxcdFxcdFxcdGNmZzgwMjExX3JlaGFzaF9ic3MocmRldiwgYnNzKTtcXG4zNDgxOlxcdFxcdH1cXG4zNDgyOlxcdFxcbjM0ODM6XFx0ZG9uZTpcXG4zNDg0OlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZyZGV2LVxcdTAwM2Vic3NfbG9jayk7XFxuMzQ4NTpcXHR9XFxuMzQ4NjpcXHRcXG4zNDg3OlxcdCNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbjM0ODg6XFx0c3RhdGljIHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqXFxuMzQ4OTpcXHRjZmc4MDIxMV9nZXRfZGV2X2Zyb21faWZpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxcbjM0OTA6XFx0e1xcbjM0OTE6XFx0XFx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2O1xcbjM0OTI6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcXG4zNDkzOlxcdFxcbjM0OTQ6XFx0XFx0QVNTRVJUX1JUTkwoKTtcXG4zNDk1OlxcdFxcbjM0OTY6XFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleChuZXQsIGlmaW5kZXgpO1xcbjM0OTc6XFx0XFx0aWYgKCFkZXYpXFxuMzQ5ODpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcXG4zNDk5OlxcdFxcdGlmIChkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHIpXFxuMzUwMDpcXHRcXHRcXHRyZGV2ID0gd2lwaHlfdG9fcmRldihkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHItXFx1MDAzZXdpcGh5KTtcXG4zNTAxOlxcdFxcdGVsc2VcXG4zNTAyOlxcdFxcdFxcdHJkZXYgPSBFUlJfUFRSKC1FTk9ERVYpO1xcbjM1MDM6XFx0XFx0ZGV2X3B1dChkZXYpO1xcbjM1MDQ6XFx0XFx0cmV0dXJuIHJkZXY7XFxuMzUwNTpcXHR9XFxuMzUwNjpcXHRcXG4zNTA3OlxcdGludCBjZmc4MDIxMV93ZXh0X3Npd3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4zNTA4OlxcdFxcdFxcdFxcdCAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcXG4zNTA5OlxcdFxcdFxcdFxcdCAgdW5pb24gaXdyZXFfZGF0YSAqd3JxdSwgY2hhciAqZXh0cmEpXFxuMzUxMDpcXHR7XFxuMzUxMTpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXY7XFxuMzUxMjpcXHRcXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5O1xcbjM1MTM6XFx0XFx0c3RydWN0IGl3X3NjYW5fcmVxICp3cmVxID0gTlVMTDtcXG4zNTE0OlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3RfaW50ICpjcmVxO1xcbjM1MTU6XFx0XFx0aW50IGksIGVyciwgbl9jaGFubmVscyA9IDA7XFxuMzUxNjpcXHRcXHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kO1xcbjM1MTc6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjAxLjEwNTA4ODg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0OTMwMTkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBxdWl0ZSBmYW1pbGlhciB3aXRoIGBjZmc4MDIxMWAgYW5kIG5ldHdvcmtpbmcgaW50ZXJuYWxzOlxuXG4qKkludmVzdGlnYXRpbmcgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgKipcblxuUmlnaHQsIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YC4gVGhhdCBmdW5jdGlvbiBuYW1lIHJpbmdzIGEgYmVsbC4gSXQncyBkZWZpbml0ZWx5IHBhcnQgb2YgdGhlIGBjZmc4MDIxMWAgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsg4oCTIG5vIHN1cnByaXNlIHRoZXJlLiBJdCdzIGxpa2VseSBpbnZvbHZlZCBpbiB1cGRhdGluZyBCU1MgKEJhc2ljIFNlcnZpY2UgU2V0KSBlbnRyaWVzLCB3aGljaCBhcmUgZXNzZW50aWFsbHkgdGhlIGluZm9ybWF0aW9uIHRoZSBkcml2ZXIga2VlcHMgYWJvdXQgYXNzb2NpYXRlZCBhY2Nlc3MgcG9pbnRzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCB3aGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICp1c2VkKj8gV2hhdCBwYXJ0cyBvZiB0aGUgZHJpdmVyIG9yIGtlcm5lbCBhcmUgY2FsbGluZyBpdD9cIi4gVGltZSB0byB0cmFjZSB0aG9zZSBjYWxscyBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdG8gZ3Jhc3AgaXRzIHB1cnBvc2UgYW5kIGltcGFjdCBmdWxseS4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCBjYWxscyB0aGlzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OTowNC41NTQzOTM0MzdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDQ3NDk4NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL2NvcmUuaD0zMzM9dm9pZCBjZmc4MDIxMV9ic3NfYWdlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3MvY29yZS5oLTMzNC0gICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhZ2Vfc2Vjcyk7XFxubmV0L3dpcmVsZXNzL2NvcmUuaDozMzU6dm9pZCBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L3dpcmVsZXNzL2NvcmUuaC0zMzYtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbGluayxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIzNDk9dm9pZCBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzY1LVxcdFxcdGlmICghV0FSTl9PTighd2Rldi1cXHUwMDNlbGlua3NbbGlua19pZF0uY2xpZW50LmN1cnJlbnRfYnNzKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIyMzY2OlxcdFxcdFxcdGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkod2RldiwgbGlua19pZCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzY3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdGNoYW5kZWYtXFx1MDAzZWNoYW4pO1xcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYz0zNDE2PUVYUE9SVF9TWU1CT0woY2ZnODAyMTFfYnNzX2l0ZXIpO1xcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzQxNy1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjM0MTg6dm9pZCBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE5LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGxpbmtfaWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjA4Ljk1OTE0OTQxMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTgzMzk4MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNoYW5uZWwgU3dpdGNoIE5vdGlmaWNhdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUga2VybmVsJ3Mgd2lyZWxlc3Mgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AgaXMgdGhlIG9uZSBpbiBxdWVzdGlvbi4gSSByZWNhbGwgdGhhdCBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaXMgZXhwb3J0ZWQsIG1ha2luZyBpdCBhY2Nlc3NpYmxlIGZvciBkcml2ZXJzIHRvIHVzZS4gVGhlIGNvbnRleHQgaW5kaWNhdGVzIHRoYXQgZHJpdmVycyBsaWtlIG1hYzgwMjExIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIGEgY2hhbm5lbCBzd2l0Y2ggaXMgdHJpZ2dlcmVkLlxuXG5HaXZlbiB0aGlzIHNldHVwLCBpdCdzIHByZXR0eSBjbGVhciB0aGlzIGlzIGEgbGVnaXRpbWF0ZSBjYWxsIHBhdGgsIGFuZCBhIHRlc3RhYmxlIG9uZSBhdCB0aGF0LiBDb25zaWRlcmluZyBJIGhhdmUgbWFjODAyMTFfaHdzaW0gYXZhaWxhYmxlLCB0aGF0J3MgZXhhY3RseSB3aGVyZSBJJ2xsIGxvb2sgZm9yIHRlc3RhYmlsaXR5LiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGl0c2VsZiBuZXh0LCB0byB1bmRlcnN0YW5kIHRoZSBub3RpZmljYXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUzNywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OToxMi45NDI1NTAxNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUzNzU0Mjc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9MTA3Nz12b2lkIGF0aDZrbF9jZmc4MDIxMV9zY2FuX2NvbXBsZXRlX2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIGJvb2wgYWJvcnRlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMTA3OnZvaWQgYXRoNmtsX2NmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgaW50IGZyZXEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTExMDgtXFx0XFx0XFx0XFx0ICAgICAgZW51bSB3bWlfcGh5X21vZGUgbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMTIyLVxcdHdpcGh5X2xvY2sodmlmLVxcdTAwM2Vhci1cXHUwMDNld2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMTIzOlxcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkodmlmLVxcdTAwM2VuZGV2LCBcXHUwMDI2Y2hhbmRlZiwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTExMjQtXFx0d2lwaHlfdW5sb2NrKHZpZi1cXHUwMDNlYXItXFx1MDAzZXdpcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaD0yNz1zdHJ1Y3Qgd2lyZWxlc3NfZGV2ICphdGg2a2xfaW50ZXJmYWNlX2FkZChzdHJ1Y3QgYXRoNmtsICphciwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaC0zMC1cXHRcXHRcXHRcXHRcXHQgIHU4IGZ3X3ZpZl9pZHgsIHU4IG53X3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaDozMTp2b2lkIGF0aDZrbF9jZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIGludCBmcmVxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaC0zMi1cXHRcXHRcXHRcXHQgICAgICBlbnVtIHdtaV9waHlfbW9kZSBtb2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jPTM3ND12b2lkIGF0aDZrbF9jb25uZWN0X2FwX21vZGVfYnNzKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNDE1LVxcdFxcdC8qIHdlIGFjdHVhbGx5IGRvbid0IGtub3cgdGhlIHBoeW1vZGUsIGRlZmF1bHQgdG8gSFQyMCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jOjQxNjpcXHRcXHRhdGg2a2xfY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSh2aWYsIGNoYW5uZWwsIFdNSV8xMUdfSFQyMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNDE3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jPTI2Nj12b2lkIG13aWZpZXhfZGZzX2NoYW5fc3dfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjkxLVxcdHdpcGh5X2xvY2socHJpdi1cXHUwMDNld2Rldi53aXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI5MjpcXHRjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHByaXYtXFx1MDAzZW5ldGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZWRmc19jaGFuZGVmLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjkzLVxcdHdpcGh5X3VubG9jayhwcml2LVxcdTAwM2V3ZGV2LndpcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2V2ZW50LmM9NDM2PXF0bmZfZXZlbnRfaGFuZGxlX2ZyZXFfY2hhbmdlKHN0cnVjdCBxdG5mX3dtYWMgKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2V2ZW50LmMtNDgwLVxcdFxcdHdpcGh5X2xvY2socHJpdl90b193aXBoeSh2aWYtXFx1MDAzZW1hYykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2V2ZW50LmM6NDgxOlxcdFxcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkodmlmLVxcdTAwM2VuZXRkZXYsIFxcdTAwMjZjaGFuZGVmLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9ldmVudC5jLTQ4Mi1cXHRcXHR3aXBoeV91bmxvY2socHJpdl90b193aXBoeSh2aWYtXFx1MDAzZW1hYykpO1xcbi0tXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD05OTU4PWNmZzgwMjExX3JlZ19jYW5fYmVhY29uX3JlbGF4KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk5NzAtLyoqXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo5OTcxOiAqIGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkgLSB1cGRhdGUgd2RldiBjaGFubmVsIGFuZCBub3RpZnkgdXNlcnNwYWNlXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05OTcyLSAqIEBkZXY6IHRoZSBkZXZpY2Ugd2hpY2ggc3dpdGNoZWQgY2hhbm5lbHNcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtOTk3OC0gKi9cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjk5Nzk6dm9pZCBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05OTgwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDQ2Nz1zdGF0aWMgaW50IF9faWVlZTgwMjExX2NzYV9maW5hbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGlua19kYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ1MTYtXFxubmV0L21hYzgwMjExL2NmZy5jOjQ1MTc6XFx0Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeShzZGF0YS1cXHUwMDNlZGV2LCBcXHUwMDI2bGlua19kYXRhLVxcdTAwM2Vjc2EuY2hhbnJlcS5vcGVyLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NTE4LVxcdFxcdFxcdFxcdCAgbGlua19kYXRhLVxcdTAwM2VsaW5rX2lkKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9Mjg3Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfY3NhX3N3aXRjaF93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI5MDctXFx0XFx0bGluay1cXHUwMDNlY29uZi1cXHUwMDNlY2hhbnJlcSA9IGxpbmstXFx1MDAzZWNzYS5jaGFucmVxO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjkwODpcXHRcXHRjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHNkYXRhLVxcdTAwM2VkZXYsIFxcdTAwMjZsaW5rLVxcdTAwM2Vjc2EuY2hhbnJlcS5vcGVyLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjkwOS1cXHRcXHRcXHRcXHRcXHQgIGxpbmstXFx1MDAzZWxpbmtfaWQpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0zMDE2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9jaHN3aXRjaF9wb3N0X2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzA1Ny1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjMwNTg6XFx0Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeShzZGF0YS1cXHUwMDNlZGV2LCBcXHUwMDI2bGluay1cXHUwMDNlY29uZi1cXHUwMDNlY2hhbnJlcS5vcGVyLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzA1OS1cXHRcXHRcXHRcXHQgIGxpbmstXFx1MDAzZWxpbmtfaWQpO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yMjI5OT1zdGF0aWMgdm9pZCBubDgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM0OC1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIyMzQ5OnZvaWQgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIzNTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiAqY2hhbmRlZixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIzNTktXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMjM2MDpcXHR0cmFjZV9jZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KGRldiwgY2hhbmRlZiwgbGlua19pZCk7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM2MS1cXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIzOTAtfVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIzOTE6RVhQT1JUX1NZTUJPTChjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzkyLVxcbi0tXFxubmV0L3dpcmVsZXNzL3RyYWNlLmg9MzU2OD1UUkFDRV9FVkVOVChjZmc4MDIxMV9yZWdfY2FuX2JlYWNvbixcXG4tLVxcbm5ldC93aXJlbGVzcy90cmFjZS5oLTM1OTEtXFxubmV0L3dpcmVsZXNzL3RyYWNlLmg6MzU5MjpUUkFDRV9FVkVOVChjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5LFxcbm5ldC93aXJlbGVzcy90cmFjZS5oLTM1OTMtXFx0VFBfUFJPVE8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDk6MTYuNDgwMDk4NDc3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NjE3OTQxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gYXBwcm9hY2ggdGhpcyBmdXp6aW5nIGVmZm9ydC4gSXQgc2VlbXMgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGlzIGNhbGxlZCBieSBgbWFjODAyMTFgLCBzcGVjaWZpY2FsbHkgZnJvbSB3aXRoaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AgYW5kIGBuZXQvbWFjODAyMTEvbWxtZS5jYC4gVGhhdCBpbXBsaWVzIHRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzaWJsZSB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGhlbHBmdWwgZm9yIHRlc3RpbmcuXG5cbkkgbm90aWNlIHRoZXJlIGhhdmUgYmVlbiBtb2RpZmljYXRpb25zIHRvIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YC4gVGhhdCBtYWtlcyBpdCBhIHBvdGVudGlhbCB0YXJnZXQgYXMgd2VsbC4gVGhlIHF1ZXN0aW9uIGlzLCB3aGljaCBvbmUgaXMgdGhlICpiZXR0ZXIqIGVudHJ5IHBvaW50PyBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaXMgZXhwb3J0ZWQgYW5kIGxvb2tzIGxpa2UgYSBjbGVhbiBlbnRyeSBwb2ludC4gQnV0LCBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaXMgKmFsc28qIGV4cG9ydGVkLiBXYWl0IGEgc2Vjb25kLi4uZGlkIEkgcmVhZCB0aGF0IHJpZ2h0PyBIbW0sIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBgbmV0L3dpcmVsZXNzL3NjYW4uY2AgYXJvdW5kIGxpbmUgMzQxOC4gSnVzdCB0byBiZSBzdXJlLiBJdCdzIGltcG9ydGFudCB0byBjb25maXJtIHRoZSBlbnRyeSBwb2ludHMgYmVmb3JlIGp1bXBpbmcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNzcsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDk6MjEuMjQxODk2NjY1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjYxMTg5OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OToyMS4zMzg1MTc0OTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyNDM3NDI1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uIENhbGwgRmxvdyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGEgcHJvYmxlbSDigJMgdGhlIGZ1bmN0aW9uIGBjZmc4MDIxMV9ic3NfaXRlcmAgaXNuJ3QgZXhwb3J0ZWQuIEhtbSwgbGluZSAzNDE2IHNob3dzIGl0ICppcyogZXhwb3J0ZWQuIE9rYXksIGdvb2QuIEJ1dCB3YWl0LCBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaXNuJ3QgZXhwb3J0ZWQgZWl0aGVyLiBUaGF0J3MgYSBiaXQgb2RkLiBJIHNlZSBpdCdzIGRlY2xhcmVkIGluIGBuZXQvd2lyZWxlc3MvY29yZS5oYCwgYW5kIGl0J3MgY2FsbGVkIGZyb20gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgLiBSaWdodCwgc28gdGhhdCB0ZWxscyBtZSBpdCdzIGFuIGludGVybmFsIGBjZmc4MDIxMWAgZnVuY3Rpb24uIE5vdywgSSBuZWVkIHRvIGZpbmQgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCwgYW5kIHRoYXQgc2VlbXMgdG8gYmUgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgLiBPaywgSSB0aGluayBJJ3ZlIGdvdCBhIGhhbmRsZSBvbiB0aGUgc3RydWN0dXJlIG9mIHRoZSBjYWxsLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBpZGVudGlmaWVkIGFsbCB0aGUgY2FsbGVycy4gQXJlIHRoZXJlIGFueSBvdGhlciBjYWxsZXJzIG9mIHRoYXQgZnVuY3Rpb24/IE5lZWQgdG8gYmUgc3VyZSBvZiB0aGUgd2hvbGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYxMywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OToyNS40NjI4OTU1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODU3MzU2MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9jb3JlLmg9MzMzPXZvaWQgY2ZnODAyMTFfYnNzX2FnZShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxubmV0L3dpcmVsZXNzL2NvcmUuaC0zMzQtICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWdlX3NlY3MpO1xcbm5ldC93aXJlbGVzcy9jb3JlLmg6MzM1OnZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbm5ldC93aXJlbGVzcy9jb3JlLmgtMzM2LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGxpbmssXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIyMzQ5PXZvaWQgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM2NS1cXHRcXHRpZiAoIVdBUk5fT04oIXdkZXYtXFx1MDAzZWxpbmtzW2xpbmtfaWRdLmNsaWVudC5jdXJyZW50X2JzcykpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMjM2NjpcXHRcXHRcXHRjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5KHdkZXYsIGxpbmtfaWQsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM2Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHRjaGFuZGVmLVxcdTAwM2VjaGFuKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9zY2FuLmM9MzQxNj1FWFBPUlRfU1lNQk9MKGNmZzgwMjExX2Jzc19pdGVyKTtcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM0MTctXFxubmV0L3dpcmVsZXNzL3NjYW4uYzozNDE4OnZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzQxOS1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBsaW5rX2lkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OToyNS44NDg2NDAwOTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MTk2OTM0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENoYW5uZWwgU3dpdGNoIE5vdGlmaWNhdGlvbiBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YC4gUmlnaHQsIHRoYXQncyB0aGUga2V5IGZ1bmN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3Mgc2VlIGlmIHRoaXMgbm90aWZpY2F0aW9uIGlzIHRyaWdnZXJlZCBkaXJlY3RseSB0aHJvdWdoIG5ldGxpbmsuIEhtbSwgbm8sIGl0IGxvb2tzIGxpa2UgZHJpdmVycyBhY3R1YWxseSAqY2FsbCogYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIHRvIHRlbGwgY2ZnODAyMTEgdGhhdCB0aGV5J3ZlIG1hZGUgYSBjaGFubmVsIHN3aXRjaC5cblxuU28sIGhvdyAqaXMqIHRoZSBjaGFubmVsIHN3aXRjaCBpbml0aWF0ZWQgaW4gdGhlIGZpcnN0IHBsYWNlPyBBaCwgb2YgY291cnNlLCB0aHJvdWdoIG5ldGxpbmsuIExpa2VseSB1c2luZyBlaXRoZXIgYE5MODAyMTFfQ01EX0NIX1NXSVRDSF9OT1RJRllgIG9yIGBOTDgwMjExX0NNRF9DSEFOTkVMX1NXSVRDSGAuIFRoYXQncyB3aGVyZSB0aGUgY29tbWFuZCBvcmlnaW5hdGVzLiBUaW1lIHRvIGRpdmUgaW50byBgbmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCB3aXRoaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIGFuZCBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Mzk5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjI5Ljk5MDYxMTc4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwOTk2MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfY2hfc3dpdGNoX25vdGlmeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIyOTc9RVhQT1JUX1NZTUJPTChjZmc4MDIxMV9wbWtzYV9jYW5kaWRhdGVfbm90aWZ5KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMjk4LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIyOTk6c3RhdGljIHZvaWQgbmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzAwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIzNDk9dm9pZCBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzg3LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIzODg6XFx0bmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHJkZXYsIGRldiwgbGlua19pZCwgY2hhbmRlZiwgR0ZQX0tFUk5FTCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzg5LVxcdFxcdFxcdFxcdCBOTDgwMjExX0NNRF9DSF9TV0lUQ0hfTk9USUZZLCAwLCBmYWxzZSk7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIyNDMzPXZvaWQgY2ZnODAyMTFfY2hfc3dpdGNoX3N0YXJ0ZWRfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyNDQ3LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjI0NDg6XFx0bmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHJkZXYsIGRldiwgbGlua19pZCwgY2hhbmRlZiwgR0ZQX0tFUk5FTCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyNDQ5LVxcdFxcdFxcdFxcdCBOTDgwMjExX0NNRF9DSF9TV0lUQ0hfU1RBUlRFRF9OT1RJRlksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjMwLjExMTY1NjE2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTYxNzg0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQ2hhbm5lbCBTd2l0Y2ggTm90aWZpY2F0aW9ucyBpbiB0aGUgV2lyZWxlc3MgU3RhY2sqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IGNoYW5uZWwgc3dpdGNoIG5vdGlmaWNhdGlvbnMgd29yayBpbiB0aGUga2VybmVsLCBhbmQgYG5sODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaW1tZWRpYXRlbHkganVtcHMgb3V0IGFzIHRoZSBjZW50cmFsIHBvaW50IGZvciBzZW5kaW5nIHRob3NlIGV2ZW50cyB1cCB0byB1c2Vyc3BhY2UuIEkga25vdyB0aGF0IGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCB0aGUgZHJpdmVycyBjYWxsIHRvIHRyaWdnZXIgdGhpcyBwcm9jZXNzLlxuXG5JbiB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLCB0aGlzIG5vdGlmaWNhdGlvbiBpcyBmaXJlZCBmcm9tIHR3byBrZXkgcGxhY2VzOiBgaWVlZTgwMjExX2NzYV9zd2l0Y2hfd29ya2AgYW5kIGBpZWVlODAyMTFfY2hzd2l0Y2hfcG9zdF9iZWFjb25gLiBUaGVzZSwgYXMgSSByZWNhbGwsIGFyZSB0cmlnZ2VyZWQgd2hlbiB0aGUgYWNjZXNzIHBvaW50IHNlbmRzIGEgQ1NBIChDaGFubmVsIFN3aXRjaCBBbm5vdW5jZW1lbnQpIGVsZW1lbnQgd2l0aGluIHRoZSBiZWFjb24gZnJhbWUsIG9yIHdoZW4gdXNlcnNwYWNlIGFjdGl2ZWx5IHJlcXVlc3RzIGEgY2hhbm5lbCBjaGFuZ2UuIFRoZXJlZm9yZSwgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGlzIGNsZWFybHkgYSBwcmltZSBjYW5kaWRhdGUsIGEgcGVyZmVjdCBcIkZvY3VzU3ltYm9sXCIgaW4gbXkgYW5hbHlzaXMuXG5cbkJleW9uZCB0aGF0LCBJJ20gbm90aW5nIHRoYXQgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGNvdWxkIGJlIHVzZWZ1bCwgZXZlbiBpZiBpdCdzIG5vdCBleHBvcnRlZC4gSXQncyBub3QgZGVjbGFyZWQgc3RhdGljLCB3aGljaCBtZWFucyBpdCBoYXMgYSBnbG9iYWxseSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyB0cnVlLi4uIFllcywgYHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSguLi4pYCBjb25maXJtcyBpdC4gSSB0aGluayBJJ2xsIHVzZSB0aGF0IGFzIGFub3RoZXIgZm9jdXMgcG9pbnQuXG5cbk5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgbmVlZGVkIGZvciB0aGlzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gT2J2aW91c2x5LCBgQ09ORklHX0NGRzgwMjExYCBpcyBlc3NlbnRpYWwsIHRoYXQncyBhIGdpdmVuLiBJJ2xsIG5lZWQgYENPTkZJR19NQUM4MDIxMWAgdG8gYWN0dWFsbHkgdHJpZ2dlciB0aGUgbm90aWZpY2F0aW9uIHZpYSBhIGRyaXZlci4gQW5kLCBmb3IgcHJhY3RpY2FsIHRlc3RpbmcsIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gaGF2ZSBgQ09ORklHX01BQzgwMjExX0hXU0lNYCBjb25maWd1cmVkLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ20gZ29pbmcgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19DRkc4MDIxMWAgYW5kIGBDT05GSUdfTUFDODAyMTFgIGFyZSBhY3R1YWxseSBzZXQgYXMgZXhwZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjg0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjM2LjcyNzgzNzMyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg3MTAyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cXHRib29sIFxcXCJlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXFxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVxcdGJvb2wgXFxcInJlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXFx0Ym9vbCBcXFwiYWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVxcdGJvb2wgXFxcImNmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcImVuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OTozNi44MzY1NTI2OThaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0Mzg0MzU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBXaXJlbGVzcyBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIEknbSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoaXMga2VybmVsLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgQ0ZHODAyMTFgIOKAkyB0aGF0J3MgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuIFRoYXQncyB0aGUgZ28tdG8sIHRoZSBtYWluIHBvaW50IG9mIGNvbnRyb2wgZm9yIHRoZSB3aXJlbGVzcyBzdGFjay4gSXQncyB0aGUgY2VudHJhbCBodWIgZm9yIGhhbmRsaW5nIGFsbCBzb3J0cyBvZiByZWd1bGF0b3J5IGFuZCBjb25maWd1cmF0aW9uIGFzcGVjdHMgcmVsYXRlZCB0byA4MDIuMTEgc3RhbmRhcmRzLiBHb3QgaXQuXG5cbk5vdywgd2hlcmUgZG8gSSBmaW5kIHRoZSBtb3JlIHNwZWNpZmljIE1BQy1sYXllciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzPyBPaCwgcmlnaHQsIGBNQUM4MDIxMWAuIFRoYXQgc2hvdWxkIGJlIHRoZSBuZXh0IHRoaW5nIHRvIGluc3BlY3QuIEFuZCwgSSByZWNhbGwgaXQncyB3aXRoaW4gdGhlIGBuZXQvbWFjODAyMTFgIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJ2QgZmluZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IHNhbWUgZGlyZWN0b3J5LiBUaGF0IG1ha2VzIHNlbnNlOyBpdCB3aWxsIGFsbG93IG1lIHRvIHR1cm4gZmVhdHVyZXMgb24gb3Igb2ZmLiBUaGF0J3MgZ29vZCB0byBrbm93IGZvciBxdWljayByZWZlcmVuY2UgaW4gbXkgcmVzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDIxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDk6NDEuMDgwNDAwMzI0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjIwOTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OTo0MS4xNzY2MTU3ODNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2Mjk5MTc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipNQUM4MDIxMSBhbmQgdGhlIEhXU0lNIE1vZHVsZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHdpcmVsZXNzIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGBNQUM4MDIxMWAuIFRoYXQncyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGVudHJ5LCBpdCdzIHRoZSBmb3VuZGF0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aC4gQW5kIHRoZW4sIEkgc2VlIHRoaXMgcmVmZXJlbmNlIHRvIGBNQUM4MDIxMV9IV1NJTWAuIEFoLCByaWdodCwgdGhhdCdzIHRoZSBIYXJkd2FyZSBTaW11bGF0b3IgbW9kdWxlLiBJIHJlbWVtYmVyIHRoYXQuIEl0IGFsbG93cyB5b3UgdG8gZW11bGF0ZSB3aXJlbGVzcyBoYXJkd2FyZSBpbiBzb2Z0d2FyZSwgd2hpY2ggaXMgaW5jcmVkaWJseSB1c2VmdWwgZm9yIHRlc3RpbmcgYW5kIGRldmVsb3BtZW50LCBlc3BlY2lhbGx5IHdoZW4geW91IGRvbid0IGhhdmUgcGh5c2ljYWwgaGFyZHdhcmUgcmVhZGlseSBhdmFpbGFibGUuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgbG9jYXRpb24gb2YgdGhlIGBNQUM4MDIxMV9IV1NJTWAgaW1wbGVtZW50YXRpb24uIEl0IHNob3VsZCBiZSwgYXMgSSByZWNhbGwsIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBsaWtlbHkgaW4gYSBmaWxlIGNhbGxlZCBgbWFjODAyMTFfaHdzaW0uY2AsIG9yIHNvbWV0aGluZyBjbG9zZWx5IG5hbWVkLiBMZXQgbWUgZG91YmxlIGNoZWNrIHRoYXQgZGlyZWN0b3J5LiBUaGlzIHByb3ZpZGVzIGEgc29mdHdhcmUtYmFzZWQgYWJzdHJhY3Rpb24gbGF5ZXIsIGNyaXRpY2FsIGZvciB1bml0IHRlc3RpbmcgYW5kIENJL0NELlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDUxMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjQ0LjczOTYxMDQ2OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4ODYyMjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OTo0NC45Mzg0Nzg1NDZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc5NjMzODM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCdzIHJlbGF0ZWQgdG8gYE1BQzgwMjExX0hXU0lNYCwgbWVhbmluZyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gd2l0aGluIG1hYzgwMjExLiBHb29kLCB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUgYSBiaXQuIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSByZW1vdmluZyBhIGNoZWNrIHdpdGhpbiBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIGNvZGUgcGF0aCAqaXMqIGRlZmluaXRlbHkgcmVhY2hhYmxlLlxuXG5JIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gaGVyZS4gVGhlIGNvcmUgZnVuY3Rpb24gb2YgaW50ZXJlc3QgaXMgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgLCBhbmQgaXQgaXMgdHJpZ2dlcmVkIGJ5IGEgY2hhbm5lbCBzd2l0Y2ggbm90aWZpY2F0aW9uIHVzaW5nIGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YC4gV2Uga25vdyB0aGlzIGlzIHJlYWNoYWJsZSBiZWNhdXNlIG1hYzgwMjExIGRyaXZlcnMsIHdoaWNoIGluY2x1ZGVzIHRoZSBzaW11bGF0ZWQgaGFyZHdhcmUsIHVzZSB0aGlzIGZ1bmN0aW9uLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaXNuJ3QgaW5saW5lZC4gSSByZW1lbWJlciBzZWVpbmcgaXRzIGRlY2xhcmF0aW9uIGluIGBuZXQvd2lyZWxlc3MvY29yZS5oYCBhbmQgdGhlIGRlZmluaXRpb24gaW4gYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBBbHJpZ2h0LCBpdCdzIG5vdCBtYXJrZWQgYGlubGluZWAgd2hpY2ggbWVhbnMgaXQncyBhIGRpc3RpbmN0IGZ1bmN0aW9uIGNhbGwgYXMgSSBzdXNwZWN0ZWQuIEFuZCwgSSdtIGNvbmZpZGVudCBhYm91dCBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWA7IGl0IGlzIGRlZmluZWQgaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIGFuZCBpcyBleHBvcnRlZC5cblxuT3ZlcmFsbCwgZXZlcnl0aGluZyBzZWVtcyBjb25zaXN0ZW50IGFuZCBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4OTgsIk91dHB1dFRva2VucyI6MTkzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjUxLjczNDgyMDExM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzAwMjAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlcIixcbiAgICBcImNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaW4gdGhlIGNvcmUgY2ZnODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIGJ5IHJlbW92aW5nIGEgQlNTIHR5cGUgbWF0Y2ggY2hlY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIChgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWApIHRyaWdnZXJlZCBieSBtYWM4MDIxMSBkcml2ZXJzLiBJdCBjYW4gYmUgZnVsbHkgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5XCIsXG4gICAgXCJjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGluIHRoZSBjb3JlIGNmZzgwMjExIHdpcmVsZXNzIHN1YnN5c3RlbSBieSByZW1vdmluZyBhIEJTUyB0eXBlIG1hdGNoIGNoZWNrLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgY2hhbm5lbCBzd2l0Y2ggbm90aWZpY2F0aW9ucyAoYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgKSB0cmlnZ2VyZWQgYnkgbWFjODAyMTEgZHJpdmVycy4gSXQgY2FuIGJlIGZ1bGx5IHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHVzaW5nIHRoZSBzb2Z0d2FyZS1lbXVsYXRlZCBgbWFjODAyMTFfaHdzaW1gIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpdc6z[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 22:47:09 +0000 UTC FinishedAt: 2026-08-02 22:49:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "8ea3a36b-2a23-4302-a1d2-50fbec245c95" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cfg80211_update_assoc_bss_entry", "cfg80211_ch_switch_notify" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCBpbiB0aGUgY29yZSBjZmc4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0gYnkgcmVtb3ZpbmcgYSBCU1MgdHlwZSBtYXRjaCBjaGVjay4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNoYW5uZWwgc3dpdGNoIG5vdGlmaWNhdGlvbnMgKGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCkgdHJpZ2dlcmVkIGJ5IG1hYzgwMjExIGRyaXZlcnMuIEl0IGNhbiBiZSBmdWxseSB0ZXN0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyB0aGUgc29mdHdhcmUtZW11bGF0ZWQgYG1hYzgwMjExX2h3c2ltYCBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMWQ1MTM1YjJlMmE2YTAzMzI4YmI2MjYwOGZlZWIwYTA2ZDNiMjZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAyMjo0ODo0OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuaW5kZXggMDcxMDgzY2MzMzY3Mi4uOTdiZjdhYjhjYzk2NyAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9zY2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9zY2FuLmNcbkBAIC0zNDQzLDExICYjNDM7MzQ0Myw2IEBAIHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0Y2Jzcy1cdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGJzcywgXHUwMDI2cmRldi1cdTAwM2Vic3NfbGlzdCwgbGlzdCkge1xuLVx0XHRpZiAoIWNmZzgwMjExX2Jzc190eXBlX21hdGNoKGJzcy1cdTAwM2VwdWIuY2FwYWJpbGl0eSxcbi1cdFx0XHRcdFx0ICAgICBic3MtXHUwMDNlcHViLmNoYW5uZWwtXHUwMDNlYmFuZCxcbi1cdFx0XHRcdFx0ICAgICB3ZGV2LVx1MDAzZWNvbm5fYnNzX3R5cGUpKVxuLVx0XHRcdGNvbnRpbnVlO1xuLVxuIFx0XHRpZiAoYnNzID09IGNic3MpXG4gXHRcdFx0Y29udGludWU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCBpbiB0aGUgY29yZSBjZmc4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0gYnkgcmVtb3ZpbmcgYSBCU1MgdHlwZSBtYXRjaCBjaGVjay4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNoYW5uZWwgc3dpdGNoIG5vdGlmaWNhdGlvbnMgKGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCkgdHJpZ2dlcmVkIGJ5IG1hYzgwMjExIGRyaXZlcnMuIEl0IGNhbiBiZSBmdWxseSB0ZXN0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyB0aGUgc29mdHdhcmUtZW11bGF0ZWQgYG1hYzgwMjExX2h3c2ltYCBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMWQ1MTM1YjJlMmE2YTAzMzI4YmI2MjYwOGZlZWIwYTA2ZDNiMjZhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAyMjo0ODo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9zY2FuLmMgYi9uZXQvd2lyZWxlc3Mvc2Nhbi5jCmluZGV4IDA3MTA4M2NjMzM2NzIuLjk3YmY3YWI4Y2M5NjcgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9zY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3NjYW4uYwpAQCAtMzQ0MywxMSAmIzQzOzM0NDMsNiBAQCB2b2lkIGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAljYnNzLSZndDtwdWIuY2hhbm5lbCA9IGNoYW47CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJzcywgJmFtcDtyZGV2LSZndDtic3NfbGlzdCwgbGlzdCkgewotCQlpZiAoIWNmZzgwMjExX2Jzc190eXBlX21hdGNoKGJzcy0mZ3Q7cHViLmNhcGFiaWxpdHksCi0JCQkJCSAgICAgYnNzLSZndDtwdWIuY2hhbm5lbC0mZ3Q7YmFuZCwKLQkJCQkJICAgICB3ZGV2LSZndDtjb25uX2Jzc190eXBlKSkKLQkJCWNvbnRpbnVlOwotCiAJCWlmIChic3MgPT0gY2JzcykKIAkJCWNvbnRpbnVlOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgU3Vic3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC93aXJlbGVzcy9zY2FuLmNgLCBzcGVjaWZpY2FsbHkuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSByZW1vdmluZyBhIGNoZWNrOiBgIWNmZzgwMjExX2Jzc190eXBlX21hdGNoKC4uLilgIHdpdGhpbiB0aGUgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGZ1bmN0aW9uLiBSaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEvY2ZnODAyMTEgc3Vic3lzdGVtLiBXZSYjMzk7cmUgcG90ZW50aWFsbHkgaW1wYWN0aW5nIGhvdyBCU1MgZW50cmllcyBhcmUgdXBkYXRlZCwgc28gd2UgbmVlZCB0byBiZSBjYXJlZnVsLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIGluIHRoZSB3aXJlbGVzcyBzdGFjaywgYW5kIHRoZSB0YXJnZXQgaXMgbGlrZWx5IG1hYzgwMjExLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgY29kZSBwYXRoICppcyogcmVhY2hhYmxlLCBhbmQgSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IGl0IGJlaGF2ZXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTWFjODAyMTFfaHdzaW0gaXMgbXkgZ28tdG8gZm9yIHRoZXNlIHR5cGVzIG9mIGFuYWx5c2VzLCBzbyBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gc3BpbiB1cCBhIHF1aWNrIHRlc3QgY2FzZS4KCkxldCYjMzk7cyBkaXZlIGludG8gdGhhdCBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgZnVuY3Rpb24gd2l0aGluIGBuZXQvd2lyZWxlc3Mvc2Nhbi5jYCBhbmQgZmlndXJlIG91dCB3aGF0JiMzOTtzIHJlYWxseSBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3NjYW4uYz0zNDE2PUVYUE9SVF9TWU1CT0woY2ZnODAyMTFfYnNzX2l0ZXIpO1xubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE3LVxubmV0L3dpcmVsZXNzL3NjYW4uYzozNDE4OnZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE5LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGlua19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjA5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgZnVuY3Rpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhpcyBmdW5jdGlvbi4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZSBhbmQgaXRzIHBvdGVudGlhbCBpbXBhY3Qgb24gZGlmZmVyZW50IHN5c3RlbSBidWlsZHMuIEkga25vdyB0aGF0IGBuZXQvd2lyZWxlc3Mvc2Nhbi5jYCBpcyBkZWVwbHkgaW50ZXJ0d2luZWQgd2l0aCBgY2ZnODAyMTFgLCBzbyBJJiMzOTtsbCBzdGFydCBieSBtYWtpbmcgc3VyZSBJIGhhdmUgdGhlIENPTkZJRyBvcHRpb25zIGNvcnJlY3QgaW4gdGhvc2UgYXJlYXMgYXMgSSB0aGluayB0aGlzIGZpbGUgaXMgZ29pbmcgdG8gbmVlZCB0byBiZSBpbnZvbHZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY2FuLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgJiM0Mzs9IHdleHQtcHJpdi5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cbm5ldC93aXJlbGVzcy9NYWtlZmlsZTo5OmNmZzgwMjExLXkgJiM0Mzs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xMC1jZmc4MDIxMS15ICYjNDM7PSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5OTEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipFeGFtaW5pbmcgdGhlIERlcGVuZGVuY2llcyBhbmQgU3RydWN0dXJlKioKClJpZ2h0LCBzbyBgQ09ORklHX0NGRzgwMjExYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlIGhlcmUuIFRoYXQgbXVjaCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIE5vdywgdGhlIG1vcmUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXMgd2hldGhlciBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaXMgZXhwb3J0ZWQuIFRoYXQgZnVuY3Rpb24gc291bmRzIHBvdGVudGlhbGx5IHJlbGV2YW50LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L3dpcmVsZXNzL3NjYW4uY2AgYXJvdW5kIGxpbmUgMzQxOC4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBzZWUgaG93IGEgQlNTIGVudHJ5IHVwZGF0ZSBpcyBoYW5kbGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgc2Nhbm5pbmcgY29udGV4dC4gTGV0JiMzOTtzIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvc2Nhbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzQxOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzQxODpcdHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuMzQxOTpcdFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGlua19pZCxcbjM0MjA6XHRcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuKVxuMzQyMTpcdHtcbjM0MjI6XHRcdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSB3ZGV2LVx1MDAzZXdpcGh5O1xuMzQyMzpcdFx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2ID0gd2lwaHlfdG9fcmRldih3aXBoeSk7XG4zNDI0Olx0XHRzdHJ1Y3QgY2ZnODAyMTFfaW50ZXJuYWxfYnNzICpjYnNzID0gd2Rldi1cdTAwM2VsaW5rc1tsaW5rX2lkXS5jbGllbnQuY3VycmVudF9ic3M7XG4zNDI1Olx0XHRzdHJ1Y3QgY2ZnODAyMTFfaW50ZXJuYWxfYnNzICpuZXcgPSBOVUxMO1xuMzQyNjpcdFx0c3RydWN0IGNmZzgwMjExX2ludGVybmFsX2JzcyAqYnNzO1xuMzQyNzpcdFx0c3RydWN0IGNmZzgwMjExX2JzcyAqbm9udHJhbnNfYnNzO1xuMzQyODpcdFx0c3RydWN0IGNmZzgwMjExX2JzcyAqdG1wO1xuMzQyOTpcdFxuMzQzMDpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnJkZXYtXHUwMDNlYnNzX2xvY2spO1xuMzQzMTpcdFxuMzQzMjpcdFx0LypcbjM0MzM6XHRcdCAqIFNvbWUgQVBzIHVzZSBDU0EgYWxzbyBmb3IgYmFuZHdpZHRoIGNoYW5nZXMsIGkuZS4sIHdpdGhvdXQgYWN0dWFsbHlcbjM0MzQ6XHRcdCAqIGNoYW5naW5nIHRoZSBjb250cm9sIGNoYW5uZWwsIHNvIG5vIG5lZWQgdG8gdXBkYXRlIGluIHN1Y2ggYSBjYXNlLlxuMzQzNTpcdFx0ICovXG4zNDM2Olx0XHRpZiAoY2Jzcy1cdTAwM2VwdWIuY2hhbm5lbCA9PSBjaGFuKVxuMzQzNzpcdFx0XHRnb3RvIGRvbmU7XG4zNDM4Olx0XG4zNDM5Olx0XHQvKiB1c2UgdHJhbnNtaXR0aW5nIGJzcyAqL1xuMzQ0MDpcdFx0aWYgKGNic3MtXHUwMDNlcHViLnRyYW5zbWl0dGVkX2JzcylcbjM0NDE6XHRcdFx0Y2JzcyA9IGJzc19mcm9tX3B1YihjYnNzLVx1MDAzZXB1Yi50cmFuc21pdHRlZF9ic3MpO1xuMzQ0MjpcdFxuMzQ0MzpcdFx0Y2Jzcy1cdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XG4zNDQ0Olx0XG4zNDQ1Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGJzcywgXHUwMDI2cmRldi1cdTAwM2Vic3NfbGlzdCwgbGlzdCkge1xuMzQ0NjpcdFx0XHRpZiAoYnNzID09IGNic3MpXG4zNDQ3Olx0XHRcdFx0Y29udGludWU7XG4zNDQ4Olx0XG4zNDQ5Olx0XHRcdGlmICghY21wX2JzcyhcdTAwMjZic3MtXHUwMDNlcHViLCBcdTAwMjZjYnNzLVx1MDAzZXB1YiwgQlNTX0NNUF9SRUdVTEFSKSkge1xuMzQ1MDpcdFx0XHRcdG5ldyA9IGJzcztcbjM0NTE6XHRcdFx0XHRicmVhaztcbjM0NTI6XHRcdFx0fVxuMzQ1MzpcdFx0fVxuMzQ1NDpcdFxuMzQ1NTpcdFx0aWYgKG5ldykge1xuMzQ1NjpcdFx0XHQvKiB0byBzYXZlIHRpbWUsIHVwZGF0ZSBJRXMgZm9yIHRyYW5zbWl0dGluZyBic3Mgb25seSAqL1xuMzQ1NzpcdFx0XHRjZmc4MDIxMV91cGRhdGVfa25vd25fYnNzKHJkZXYsIGNic3MsIG5ldywgZmFsc2UpO1xuMzQ1ODpcdFx0XHRuZXctXHUwMDNlcHViLnByb2JlcmVzcF9pZXMgPSBOVUxMO1xuMzQ1OTpcdFx0XHRuZXctXHUwMDNlcHViLmJlYWNvbl9pZXMgPSBOVUxMO1xuMzQ2MDpcdFxuMzQ2MTpcdFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobm9udHJhbnNfYnNzLCB0bXAsXG4zNDYyOlx0XHRcdFx0XHRcdCBcdTAwMjZuZXctXHUwMDNlcHViLm5vbnRyYW5zX2xpc3QsXG4zNDYzOlx0XHRcdFx0XHRcdCBub250cmFuc19saXN0KSB7XG4zNDY0Olx0XHRcdFx0YnNzID0gYnNzX2Zyb21fcHViKG5vbnRyYW5zX2Jzcyk7XG4zNDY1Olx0XHRcdFx0aWYgKF9fY2ZnODAyMTFfdW5saW5rX2JzcyhyZGV2LCBic3MpKVxuMzQ2NjpcdFx0XHRcdFx0cmRldi1cdTAwM2Vic3NfZ2VuZXJhdGlvbiYjNDM7JiM0Mzs7XG4zNDY3Olx0XHRcdH1cbjM0Njg6XHRcbjM0Njk6XHRcdFx0V0FSTl9PTihhdG9taWNfcmVhZChcdTAwMjZuZXctXHUwMDNlaG9sZCkpO1xuMzQ3MDpcdFx0XHRpZiAoIVdBUk5fT04oIV9fY2ZnODAyMTFfdW5saW5rX2JzcyhyZGV2LCBuZXcpKSlcbjM0NzE6XHRcdFx0XHRyZGV2LVx1MDAzZWJzc19nZW5lcmF0aW9uJiM0MzsmIzQzOztcbjM0NzI6XHRcdH1cbjM0NzM6XHRcdGNmZzgwMjExX3JlaGFzaF9ic3MocmRldiwgY2Jzcyk7XG4zNDc0Olx0XG4zNDc1Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobm9udHJhbnNfYnNzLCB0bXAsXG4zNDc2Olx0XHRcdFx0XHQgXHUwMDI2Y2Jzcy1cdTAwM2VwdWIubm9udHJhbnNfbGlzdCxcbjM0Nzc6XHRcdFx0XHRcdCBub250cmFuc19saXN0KSB7XG4zNDc4Olx0XHRcdGJzcyA9IGJzc19mcm9tX3B1Yihub250cmFuc19ic3MpO1xuMzQ3OTpcdFx0XHRic3MtXHUwMDNlcHViLmNoYW5uZWwgPSBjaGFuO1xuMzQ4MDpcdFx0XHRjZmc4MDIxMV9yZWhhc2hfYnNzKHJkZXYsIGJzcyk7XG4zNDgxOlx0XHR9XG4zNDgyOlx0XG4zNDgzOlx0ZG9uZTpcbjM0ODQ6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnJkZXYtXHUwMDNlYnNzX2xvY2spO1xuMzQ4NTpcdH1cbjM0ODY6XHRcbjM0ODc6XHQjaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbjM0ODg6XHRzdGF0aWMgc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpcbjM0ODk6XHRjZmc4MDIxMV9nZXRfZGV2X2Zyb21faWZpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxuMzQ5MDpcdHtcbjM0OTE6XHRcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldjtcbjM0OTI6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4zNDkzOlx0XG4zNDk0Olx0XHRBU1NFUlRfUlROTCgpO1xuMzQ5NTpcdFxuMzQ5NjpcdFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleChuZXQsIGlmaW5kZXgpO1xuMzQ5NzpcdFx0aWYgKCFkZXYpXG4zNDk4Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuMzQ5OTpcdFx0aWYgKGRldi1cdTAwM2VpZWVlODAyMTFfcHRyKVxuMzUwMDpcdFx0XHRyZGV2ID0gd2lwaHlfdG9fcmRldihkZXYtXHUwMDNlaWVlZTgwMjExX3B0ci1cdTAwM2V3aXBoeSk7XG4zNTAxOlx0XHRlbHNlXG4zNTAyOlx0XHRcdHJkZXYgPSBFUlJfUFRSKC1FTk9ERVYpO1xuMzUwMzpcdFx0ZGV2X3B1dChkZXYpO1xuMzUwNDpcdFx0cmV0dXJuIHJkZXY7XG4zNTA1Olx0fVxuMzUwNjpcdFxuMzUwNzpcdGludCBjZmc4MDIxMV93ZXh0X3Npd3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbjM1MDg6XHRcdFx0XHQgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4zNTA5Olx0XHRcdFx0ICB1bmlvbiBpd3JlcV9kYXRhICp3cnF1LCBjaGFyICpleHRyYSlcbjM1MTA6XHR7XG4zNTExOlx0XHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXY7XG4zNTEyOlx0XHRzdHJ1Y3Qgd2lwaHkgKndpcGh5O1xuMzUxMzpcdFx0c3RydWN0IGl3X3NjYW5fcmVxICp3cmVxID0gTlVMTDtcbjM1MTQ6XHRcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3RfaW50ICpjcmVxO1xuMzUxNTpcdFx0aW50IGksIGVyciwgbl9jaGFubmVscyA9IDA7XG4zNTE2Olx0XHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kO1xuMzUxNzpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHF1aXRlIGZhbWlsaWFyIHdpdGggYGNmZzgwMjExYCBhbmQgbmV0d29ya2luZyBpbnRlcm5hbHM6CgoqKkludmVzdGlnYXRpbmcgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgKioKClJpZ2h0LCBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAuIFRoYXQgZnVuY3Rpb24gbmFtZSByaW5ncyBhIGJlbGwuIEl0JiMzOTtzIGRlZmluaXRlbHkgcGFydCBvZiB0aGUgYGNmZzgwMjExYCB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGZyYW1ld29yayDigJMgbm8gc3VycHJpc2UgdGhlcmUuIEl0JiMzOTtzIGxpa2VseSBpbnZvbHZlZCBpbiB1cGRhdGluZyBCU1MgKEJhc2ljIFNlcnZpY2UgU2V0KSBlbnRyaWVzLCB3aGljaCBhcmUgZXNzZW50aWFsbHkgdGhlIGluZm9ybWF0aW9uIHRoZSBkcml2ZXIga2VlcHMgYWJvdXQgYXNzb2NpYXRlZCBhY2Nlc3MgcG9pbnRzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3aGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICp1c2VkKj8gV2hhdCBwYXJ0cyBvZiB0aGUgZHJpdmVyIG9yIGtlcm5lbCBhcmUgY2FsbGluZyBpdD8mIzM0Oy4gVGltZSB0byB0cmFjZSB0aG9zZSBjYWxscyBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdG8gZ3Jhc3AgaXRzIHB1cnBvc2UgYW5kIGltcGFjdCBmdWxseS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQgY2FsbHMgdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvY29yZS5oPTMzMz12b2lkIGNmZzgwMjExX2Jzc19hZ2Uoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL2NvcmUuaC0zMzQtICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWdlX3NlY3MpO1xubmV0L3dpcmVsZXNzL2NvcmUuaDozMzU6dm9pZCBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG5uZXQvd2lyZWxlc3MvY29yZS5oLTMzNi1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IGxpbmssXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yMjM0OT12b2lkIGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzY1LVx0XHRpZiAoIVdBUk5fT04oIXdkZXYtXHUwMDNlbGlua3NbbGlua19pZF0uY2xpZW50LmN1cnJlbnRfYnNzKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIzNjY6XHRcdFx0Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSh3ZGV2LCBsaW5rX2lkLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM2Ny1cdFx0XHRcdFx0XHRcdGNoYW5kZWYtXHUwMDNlY2hhbik7XG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYz0zNDE2PUVYUE9SVF9TWU1CT0woY2ZnODAyMTFfYnNzX2l0ZXIpO1xubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE3LVxubmV0L3dpcmVsZXNzL3NjYW4uYzozNDE4OnZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE5LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGlua19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzNwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDaGFubmVsIFN3aXRjaCBOb3RpZmljYXRpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHdpcmVsZXNzIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbiBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIGlzIHRoZSBvbmUgaW4gcXVlc3Rpb24uIEkgcmVjYWxsIHRoYXQgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGlzIGV4cG9ydGVkLCBtYWtpbmcgaXQgYWNjZXNzaWJsZSBmb3IgZHJpdmVycyB0byB1c2UuIFRoZSBjb250ZXh0IGluZGljYXRlcyB0aGF0IGRyaXZlcnMgbGlrZSBtYWM4MDIxMSBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiBhIGNoYW5uZWwgc3dpdGNoIGlzIHRyaWdnZXJlZC4KCkdpdmVuIHRoaXMgc2V0dXAsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGlzIGlzIGEgbGVnaXRpbWF0ZSBjYWxsIHBhdGgsIGFuZCBhIHRlc3RhYmxlIG9uZSBhdCB0aGF0LiBDb25zaWRlcmluZyBJIGhhdmUgbWFjODAyMTFfaHdzaW0gYXZhaWxhYmxlLCB0aGF0JiMzOTtzIGV4YWN0bHkgd2hlcmUgSSYjMzk7bGwgbG9vayBmb3IgdGVzdGFiaWxpdHkuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGl0c2VsZiBuZXh0LCB0byB1bmRlcnN0YW5kIHRoZSBub3RpZmljYXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9MTA3Nz12b2lkIGF0aDZrbF9jZmc4MDIxMV9zY2FuX2NvbXBsZXRlX2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIGJvb2wgYWJvcnRlZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTEwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMTA3OnZvaWQgYXRoNmtsX2NmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgaW50IGZyZXEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTEwOC1cdFx0XHRcdCAgICAgIGVudW0gd21pX3BoeV9tb2RlIG1vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTExMjItXHR3aXBoeV9sb2NrKHZpZi1cdTAwM2Vhci1cdTAwM2V3aXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTEyMzpcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkodmlmLVx1MDAzZW5kZXYsIFx1MDAyNmNoYW5kZWYsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTExMjQtXHR3aXBoeV91bmxvY2sodmlmLVx1MDAzZWFyLVx1MDAzZXdpcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmg9Mjc9c3RydWN0IHdpcmVsZXNzX2RldiAqYXRoNmtsX2ludGVyZmFjZV9hZGQoc3RydWN0IGF0aDZrbCAqYXIsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oLTMwLVx0XHRcdFx0XHQgIHU4IGZ3X3ZpZl9pZHgsIHU4IG53X3R5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oOjMxOnZvaWQgYXRoNmtsX2NmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgaW50IGZyZXEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmgtMzItXHRcdFx0XHQgICAgICBlbnVtIHdtaV9waHlfbW9kZSBtb2RlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYz0zNzQ9dm9pZCBhdGg2a2xfY29ubmVjdF9hcF9tb2RlX2JzcyhzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MTYgY2hhbm5lbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYy00MTUtXHRcdC8qIHdlIGFjdHVhbGx5IGRvbiYjMzk7dCBrbm93IHRoZSBwaHltb2RlLCBkZWZhdWx0IHRvIEhUMjAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jOjQxNjpcdFx0YXRoNmtsX2NmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkodmlmLCBjaGFubmVsLCBXTUlfMTFHX0hUMjApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNDE3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYz0yNjY9dm9pZCBtd2lmaWV4X2Rmc19jaGFuX3N3X3dvcmtfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMWguYy0yOTEtXHR3aXBoeV9sb2NrKHByaXYtXHUwMDNld2Rldi53aXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmM6MjkyOlx0Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeShwcml2LVx1MDAzZW5ldGRldiwgXHUwMDI2cHJpdi1cdTAwM2VkZnNfY2hhbmRlZiwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjkzLVx0d2lwaHlfdW5sb2NrKHByaXYtXHUwMDNld2Rldi53aXBoeSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvZXZlbnQuYz00MzY9cXRuZl9ldmVudF9oYW5kbGVfZnJlcV9jaGFuZ2Uoc3RydWN0IHF0bmZfd21hYyAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2V2ZW50LmMtNDgwLVx0XHR3aXBoeV9sb2NrKHByaXZfdG9fd2lwaHkodmlmLVx1MDAzZW1hYykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvZXZlbnQuYzo0ODE6XHRcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkodmlmLVx1MDAzZW5ldGRldiwgXHUwMDI2Y2hhbmRlZiwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9ldmVudC5jLTQ4Mi1cdFx0d2lwaHlfdW5sb2NrKHByaXZfdG9fd2lwaHkodmlmLVx1MDAzZW1hYykpO1xuLS1cbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg9OTk1OD1jZmc4MDIxMV9yZWdfY2FuX2JlYWNvbl9yZWxheChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtOTk3MC0vKipcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6OTk3MTogKiBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5IC0gdXBkYXRlIHdkZXYgY2hhbm5lbCBhbmQgbm90aWZ5IHVzZXJzcGFjZVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05OTcyLSAqIEBkZXY6IHRoZSBkZXZpY2Ugd2hpY2ggc3dpdGNoZWQgY2hhbm5lbHNcbi0tXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk5NzgtICovXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjk5Nzk6dm9pZCBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk5ODAtXHRcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiAqY2hhbmRlZixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDQ2Nz1zdGF0aWMgaW50IF9faWVlZTgwMjExX2NzYV9maW5hbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGlua19kYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00NTE2LVxubmV0L21hYzgwMjExL2NmZy5jOjQ1MTc6XHRjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bGlua19kYXRhLVx1MDAzZWNzYS5jaGFucmVxLm9wZXIsXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDUxOC1cdFx0XHRcdCAgbGlua19kYXRhLVx1MDAzZWxpbmtfaWQpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9Mjg3Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfY3NhX3N3aXRjaF93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0yOTA3LVx0XHRsaW5rLVx1MDAzZWNvbmYtXHUwMDNlY2hhbnJlcSA9IGxpbmstXHUwMDNlY3NhLmNoYW5yZXE7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjI5MDg6XHRcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZsaW5rLVx1MDAzZWNzYS5jaGFucmVxLm9wZXIsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI5MDktXHRcdFx0XHRcdCAgbGluay1cdTAwM2VsaW5rX2lkKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTMwMTY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Noc3dpdGNoX3Bvc3RfYmVhY29uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzA1Ny1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MzA1ODpcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZsaW5rLVx1MDAzZWNvbmYtXHUwMDNlY2hhbnJlcS5vcGVyLFxubmV0L21hYzgwMjExL21sbWUuYy0zMDU5LVx0XHRcdFx0ICBsaW5rLVx1MDAzZWxpbmtfaWQpO1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIyOTk9c3RhdGljIHZvaWQgbmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzQ4LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMjM0OTp2b2lkIGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIzNTAtXHRcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiAqY2hhbmRlZixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzU5LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMjM2MDpcdHRyYWNlX2NmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoZGV2LCBjaGFuZGVmLCBsaW5rX2lkKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIzNjEtXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM5MC19XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIyMzkxOkVYUE9SVF9TWU1CT0woY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSk7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzkyLVxuLS1cbm5ldC93aXJlbGVzcy90cmFjZS5oPTM1Njg9VFJBQ0VfRVZFTlQoY2ZnODAyMTFfcmVnX2Nhbl9iZWFjb24sXG4tLVxubmV0L3dpcmVsZXNzL3RyYWNlLmgtMzU5MS1cbm5ldC93aXJlbGVzcy90cmFjZS5oOjM1OTI6VFJBQ0VfRVZFTlQoY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSxcbm5ldC93aXJlbGVzcy90cmFjZS5oLTM1OTMtXHRUUF9QUk9UTyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDc3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gYXBwcm9hY2ggdGhpcyBmdXp6aW5nIGVmZm9ydC4gSXQgc2VlbXMgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGlzIGNhbGxlZCBieSBgbWFjODAyMTFgLCBzcGVjaWZpY2FsbHkgZnJvbSB3aXRoaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AgYW5kIGBuZXQvbWFjODAyMTEvbWxtZS5jYC4gVGhhdCBpbXBsaWVzIHRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzaWJsZSB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGhlbHBmdWwgZm9yIHRlc3RpbmcuCgpJIG5vdGljZSB0aGVyZSBoYXZlIGJlZW4gbW9kaWZpY2F0aW9ucyB0byBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAuIFRoYXQgbWFrZXMgaXQgYSBwb3RlbnRpYWwgdGFyZ2V0IGFzIHdlbGwuIFRoZSBxdWVzdGlvbiBpcywgd2hpY2ggb25lIGlzIHRoZSAqYmV0dGVyKiBlbnRyeSBwb2ludD8gYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGlzIGV4cG9ydGVkIGFuZCBsb29rcyBsaWtlIGEgY2xlYW4gZW50cnkgcG9pbnQuIEJ1dCwgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGlzICphbHNvKiBleHBvcnRlZC4gV2FpdCBhIHNlY29uZC4uLmRpZCBJIHJlYWQgdGhhdCByaWdodD8gSG1tLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgYG5ldC93aXJlbGVzcy9zY2FuLmNgIGFyb3VuZCBsaW5lIDM0MTguIEp1c3QgdG8gYmUgc3VyZS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGNvbmZpcm0gdGhlIGVudHJ5IHBvaW50cyBiZWZvcmUganVtcGluZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3NjYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MTMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBDYWxsIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGEgcHJvYmxlbSDigJMgdGhlIGZ1bmN0aW9uIGBjZmc4MDIxMV9ic3NfaXRlcmAgaXNuJiMzOTt0IGV4cG9ydGVkLiBIbW0sIGxpbmUgMzQxNiBzaG93cyBpdCAqaXMqIGV4cG9ydGVkLiBPa2F5LCBnb29kLiBCdXQgd2FpdCwgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGlzbiYjMzk7dCBleHBvcnRlZCBlaXRoZXIuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLiBJIHNlZSBpdCYjMzk7cyBkZWNsYXJlZCBpbiBgbmV0L3dpcmVsZXNzL2NvcmUuaGAsIGFuZCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AuIFJpZ2h0LCBzbyB0aGF0IHRlbGxzIG1lIGl0JiMzOTtzIGFuIGludGVybmFsIGBjZmc4MDIxMWAgZnVuY3Rpb24uIE5vdywgSSBuZWVkIHRvIGZpbmQgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCwgYW5kIHRoYXQgc2VlbXMgdG8gYmUgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgLiBPaywgSSB0aGluayBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIHN0cnVjdHVyZSBvZiB0aGUgY2FsbC4gTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGlkZW50aWZpZWQgYWxsIHRoZSBjYWxsZXJzLiBBcmUgdGhlcmUgYW55IG90aGVyIGNhbGxlcnMgb2YgdGhhdCBmdW5jdGlvbj8gTmVlZCB0byBiZSBzdXJlIG9mIHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvY29yZS5oPTMzMz12b2lkIGNmZzgwMjExX2Jzc19hZ2Uoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL2NvcmUuaC0zMzQtICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWdlX3NlY3MpO1xubmV0L3dpcmVsZXNzL2NvcmUuaDozMzU6dm9pZCBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG5uZXQvd2lyZWxlc3MvY29yZS5oLTMzNi1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IGxpbmssXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yMjM0OT12b2lkIGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzY1LVx0XHRpZiAoIVdBUk5fT04oIXdkZXYtXHUwMDNlbGlua3NbbGlua19pZF0uY2xpZW50LmN1cnJlbnRfYnNzKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIzNjY6XHRcdFx0Y2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSh3ZGV2LCBsaW5rX2lkLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM2Ny1cdFx0XHRcdFx0XHRcdGNoYW5kZWYtXHUwMDNlY2hhbik7XG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYz0zNDE2PUVYUE9SVF9TWU1CT0woY2ZnODAyMTFfYnNzX2l0ZXIpO1xubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE3LVxubmV0L3dpcmVsZXNzL3NjYW4uYzozNDE4OnZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE5LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGlua19pZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTM5OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENoYW5uZWwgU3dpdGNoIE5vdGlmaWNhdGlvbiBNZWNoYW5pc20qKgoKT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBrZXkgZnVuY3Rpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3Mgc2VlIGlmIHRoaXMgbm90aWZpY2F0aW9uIGlzIHRyaWdnZXJlZCBkaXJlY3RseSB0aHJvdWdoIG5ldGxpbmsuIEhtbSwgbm8sIGl0IGxvb2tzIGxpa2UgZHJpdmVycyBhY3R1YWxseSAqY2FsbCogYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIHRvIHRlbGwgY2ZnODAyMTEgdGhhdCB0aGV5JiMzOTt2ZSBtYWRlIGEgY2hhbm5lbCBzd2l0Y2guCgpTbywgaG93ICppcyogdGhlIGNoYW5uZWwgc3dpdGNoIGluaXRpYXRlZCBpbiB0aGUgZmlyc3QgcGxhY2U/IEFoLCBvZiBjb3Vyc2UsIHRocm91Z2ggbmV0bGluay4gTGlrZWx5IHVzaW5nIGVpdGhlciBgTkw4MDIxMV9DTURfQ0hfU1dJVENIX05PVElGWWAgb3IgYE5MODAyMTFfQ01EX0NIQU5ORUxfU1dJVENIYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29tbWFuZCBvcmlnaW5hdGVzLiBUaW1lIHRvIGRpdmUgaW50byBgbmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCB3aXRoaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIGFuZCBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtubDgwMjExX2NoX3N3aXRjaF9ub3RpZnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIyOTc9RVhQT1JUX1NZTUJPTChjZmc4MDIxMV9wbWtzYV9jYW5kaWRhdGVfbm90aWZ5KTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIyOTgtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIyMjk5OnN0YXRpYyB2b2lkIG5sODAyMTFfY2hfc3dpdGNoX25vdGlmeShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzAwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIzNDk9dm9pZCBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM4Ny1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIzODg6XHRubDgwMjExX2NoX3N3aXRjaF9ub3RpZnkocmRldiwgZGV2LCBsaW5rX2lkLCBjaGFuZGVmLCBHRlBfS0VSTkVMLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM4OS1cdFx0XHRcdCBOTDgwMjExX0NNRF9DSF9TV0lUQ0hfTk9USUZZLCAwLCBmYWxzZSk7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yMjQzMz12b2lkIGNmZzgwMjExX2NoX3N3aXRjaF9zdGFydGVkX25vdGlmeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjI0NDctXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIyNDQ4Olx0bmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHJkZXYsIGRldiwgbGlua19pZCwgY2hhbmRlZiwgR0ZQX0tFUk5FTCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjI0NDktXHRcdFx0XHQgTkw4MDIxMV9DTURfQ0hfU1dJVENIX1NUQVJURURfTk9USUZZLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI4NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBDaGFubmVsIFN3aXRjaCBOb3RpZmljYXRpb25zIGluIHRoZSBXaXJlbGVzcyBTdGFjayoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIHdvcmsgaW4gdGhlIGtlcm5lbCwgYW5kIGBubDgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGltbWVkaWF0ZWx5IGp1bXBzIG91dCBhcyB0aGUgY2VudHJhbCBwb2ludCBmb3Igc2VuZGluZyB0aG9zZSBldmVudHMgdXAgdG8gdXNlcnNwYWNlLiBJIGtub3cgdGhhdCBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgdGhlIGRyaXZlcnMgY2FsbCB0byB0cmlnZ2VyIHRoaXMgcHJvY2Vzcy4KCkluIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0sIHRoaXMgbm90aWZpY2F0aW9uIGlzIGZpcmVkIGZyb20gdHdvIGtleSBwbGFjZXM6IGBpZWVlODAyMTFfY3NhX3N3aXRjaF93b3JrYCBhbmQgYGllZWU4MDIxMV9jaHN3aXRjaF9wb3N0X2JlYWNvbmAuIFRoZXNlLCBhcyBJIHJlY2FsbCwgYXJlIHRyaWdnZXJlZCB3aGVuIHRoZSBhY2Nlc3MgcG9pbnQgc2VuZHMgYSBDU0EgKENoYW5uZWwgU3dpdGNoIEFubm91bmNlbWVudCkgZWxlbWVudCB3aXRoaW4gdGhlIGJlYWNvbiBmcmFtZSwgb3Igd2hlbiB1c2Vyc3BhY2UgYWN0aXZlbHkgcmVxdWVzdHMgYSBjaGFubmVsIGNoYW5nZS4gVGhlcmVmb3JlLCBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaXMgY2xlYXJseSBhIHByaW1lIGNhbmRpZGF0ZSwgYSBwZXJmZWN0ICYjMzQ7Rm9jdXNTeW1ib2wmIzM0OyBpbiBteSBhbmFseXNpcy4KCkJleW9uZCB0aGF0LCBJJiMzOTttIG5vdGluZyB0aGF0IGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCBjb3VsZCBiZSB1c2VmdWwsIGV2ZW4gaWYgaXQmIzM5O3Mgbm90IGV4cG9ydGVkLiBJdCYjMzk7cyBub3QgZGVjbGFyZWQgc3RhdGljLCB3aGljaCBtZWFucyBpdCBoYXMgYSBnbG9iYWxseSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyB0cnVlLi4uIFllcywgYHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSguLi4pYCBjb25maXJtcyBpdC4gSSB0aGluayBJJiMzOTtsbCB1c2UgdGhhdCBhcyBhbm90aGVyIGZvY3VzIHBvaW50LgoKTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9ucyBuZWVkZWQgZm9yIHRoaXMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBPYnZpb3VzbHksIGBDT05GSUdfQ0ZHODAyMTFgIGlzIGVzc2VudGlhbCwgdGhhdCYjMzk7cyBhIGdpdmVuLiBJJiMzOTtsbCBuZWVkIGBDT05GSUdfTUFDODAyMTFgIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIG5vdGlmaWNhdGlvbiB2aWEgYSBkcml2ZXIuIEFuZCwgZm9yIHByYWN0aWNhbCB0ZXN0aW5nLCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGhhdmUgYENPTkZJR19NQUM4MDIxMV9IV1NJTWAgY29uZmlndXJlZC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19DRkc4MDIxMWAgYW5kIGBDT05GSUdfTUFDODAyMTFgIGFyZSBhY3R1YWxseSBzZXQgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjAyMQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgV2lyZWxlc3MgTGFuZHNjYXBlKioKCkFscmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoaXMga2VybmVsLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgQ0ZHODAyMTFgIOKAkyB0aGF0JiMzOTtzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlLiBUaGF0JiMzOTtzIHRoZSBnby10bywgdGhlIG1haW4gcG9pbnQgb2YgY29udHJvbCBmb3IgdGhlIHdpcmVsZXNzIHN0YWNrLiBJdCYjMzk7cyB0aGUgY2VudHJhbCBodWIgZm9yIGhhbmRsaW5nIGFsbCBzb3J0cyBvZiByZWd1bGF0b3J5IGFuZCBjb25maWd1cmF0aW9uIGFzcGVjdHMgcmVsYXRlZCB0byA4MDIuMTEgc3RhbmRhcmRzLiBHb3QgaXQuCgpOb3csIHdoZXJlIGRvIEkgZmluZCB0aGUgbW9yZSBzcGVjaWZpYyBNQUMtbGF5ZXIgaW1wbGVtZW50YXRpb24gZGV0YWlscz8gT2gsIHJpZ2h0LCBgTUFDODAyMTFgLiBUaGF0IHNob3VsZCBiZSB0aGUgbmV4dCB0aGluZyB0byBpbnNwZWN0LiBBbmQsIEkgcmVjYWxsIGl0JiMzOTtzIHdpdGhpbiB0aGUgYG5ldC9tYWM4MDIxMWAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkmIzM5O2QgZmluZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IHNhbWUgZGlyZWN0b3J5LiBUaGF0IG1ha2VzIHNlbnNlOyBpdCB3aWxsIGFsbG93IG1lIHRvIHR1cm4gZmVhdHVyZXMgb24gb3Igb2ZmLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdyBmb3IgcXVpY2sgcmVmZXJlbmNlIGluIG15IHJlc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMjItXHRib29sXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxubmV0L21hYzgwMjExL0tjb25maWctNDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXHRzdHJpbmdcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFwmIzM0O1NvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1Rcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNzgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xubmV0L21hYzgwMjExL0tjb25maWctODAtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cdGJvb2wgXCYjMzQ7VHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTExLVx0Ym9vbCBcJiMzNDtTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIEhUIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgT0NCIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTg3LVx0Ym9vbCBcJiMzNDtWZXJib3NlIElCU1MgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTk4LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBURExTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVx0aW50IFwmIzM0O1N0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcJiMzNDsgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDUxMAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbjoKCioqTUFDODAyMTEgYW5kIHRoZSBIV1NJTSBNb2R1bGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHdpcmVsZXNzIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGBNQUM4MDIxMWAuIFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBlbnRyeSwgaXQmIzM5O3MgdGhlIGZvdW5kYXRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gQW5kIHRoZW4sIEkgc2VlIHRoaXMgcmVmZXJlbmNlIHRvIGBNQUM4MDIxMV9IV1NJTWAuIEFoLCByaWdodCwgdGhhdCYjMzk7cyB0aGUgSGFyZHdhcmUgU2ltdWxhdG9yIG1vZHVsZS4gSSByZW1lbWJlciB0aGF0LiBJdCBhbGxvd3MgeW91IHRvIGVtdWxhdGUgd2lyZWxlc3MgaGFyZHdhcmUgaW4gc29mdHdhcmUsIHdoaWNoIGlzIGluY3JlZGlibHkgdXNlZnVsIGZvciB0ZXN0aW5nIGFuZCBkZXZlbG9wbWVudCwgZXNwZWNpYWxseSB3aGVuIHlvdSBkb24mIzM5O3QgaGF2ZSBwaHlzaWNhbCBoYXJkd2FyZSByZWFkaWx5IGF2YWlsYWJsZS4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBsb2NhdGlvbiBvZiB0aGUgYE1BQzgwMjExX0hXU0lNYCBpbXBsZW1lbnRhdGlvbi4gSXQgc2hvdWxkIGJlLCBhcyBJIHJlY2FsbCwgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3NgIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGxpa2VseSBpbiBhIGZpbGUgY2FsbGVkIGBtYWM4MDIxMV9od3NpbS5jYCwgb3Igc29tZXRoaW5nIGNsb3NlbHkgbmFtZWQuIExldCBtZSBkb3VibGUgY2hlY2sgdGhhdCBkaXJlY3RvcnkuIFRoaXMgcHJvdmlkZXMgYSBzb2Z0d2FyZS1iYXNlZCBhYnN0cmFjdGlvbiBsYXllciwgY3JpdGljYWwgZm9yIHVuaXQgdGVzdGluZyBhbmQgQ0kvQ0QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMV9IV1NJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4OTgKCQkJCQkJCW91dHB1dDogMTkzCgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQmIzM5O3MgcmVsYXRlZCB0byBgTUFDODAyMTFfSFdTSU1gLCBtZWFuaW5nIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gd2l0aGluIG1hYzgwMjExLiBHb29kLCB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUgYSBiaXQuIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSByZW1vdmluZyBhIGNoZWNrIHdpdGhpbiBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIGNvZGUgcGF0aCAqaXMqIGRlZmluaXRlbHkgcmVhY2hhYmxlLgoKSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGhlcmUuIFRoZSBjb3JlIGZ1bmN0aW9uIG9mIGludGVyZXN0IGlzIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCwgYW5kIGl0IGlzIHRyaWdnZXJlZCBieSBhIGNoYW5uZWwgc3dpdGNoIG5vdGlmaWNhdGlvbiB1c2luZyBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAuIFdlIGtub3cgdGhpcyBpcyByZWFjaGFibGUgYmVjYXVzZSBtYWM4MDIxMSBkcml2ZXJzLCB3aGljaCBpbmNsdWRlcyB0aGUgc2ltdWxhdGVkIGhhcmR3YXJlLCB1c2UgdGhpcyBmdW5jdGlvbi4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCBpc24mIzM5O3QgaW5saW5lZC4gSSByZW1lbWJlciBzZWVpbmcgaXRzIGRlY2xhcmF0aW9uIGluIGBuZXQvd2lyZWxlc3MvY29yZS5oYCBhbmQgdGhlIGRlZmluaXRpb24gaW4gYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBBbHJpZ2h0LCBpdCYjMzk7cyBub3QgbWFya2VkIGBpbmxpbmVgIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGEgZGlzdGluY3QgZnVuY3Rpb24gY2FsbCBhcyBJIHN1c3BlY3RlZC4gQW5kLCBJJiMzOTttIGNvbmZpZGVudCBhYm91dCBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWA7IGl0IGlzIGRlZmluZWQgaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIGFuZCBpcyBleHBvcnRlZC4KCk92ZXJhbGwsIGV2ZXJ5dGhpbmcgc2VlbXMgY29uc2lzdGVudCBhbmQgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaW4gdGhlIGNvcmUgY2ZnODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIGJ5IHJlbW92aW5nIGEgQlNTIHR5cGUgbWF0Y2ggY2hlY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIChgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWApIHRyaWdnZXJlZCBieSBtYWM4MDIxMSBkcml2ZXJzLiBJdCBjYW4gYmUgZnVsbHkgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaW4gdGhlIGNvcmUgY2ZnODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIGJ5IHJlbW92aW5nIGEgQlNTIHR5cGUgbWF0Y2ggY2hlY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIChgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWApIHRyaWdnZXJlZCBieSBtYWM4MDIxMSBkcml2ZXJzLiBJdCBjYW4gYmUgZnVsbHkgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDg6NDkuNTE3MjM0MDA1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIzOTA2MDczNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlcIixcbiAgICBcImNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaW4gdGhlIGNvcmUgY2ZnODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIGJ5IHJlbW92aW5nIGEgQlNTIHR5cGUgbWF0Y2ggY2hlY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIChgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWApIHRyaWdnZXJlZCBieSBtYWM4MDIxMSBkcml2ZXJzLiBJdCBjYW4gYmUgZnVsbHkgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0ODo0OS41MTcyNDA3NjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTE3MDcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYxZDUxMzViMmUyYTZhMDMzMjhiYjYyNjA4ZmVlYjBhMDZkM2IyNmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMiAyMjo0ODo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbmluZGV4IDA3MTA4M2NjMzM2NzIuLjk3YmY3YWI4Y2M5NjcgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbisrKyBiL25ldC93aXJlbGVzcy9zY2FuLmNcXG5AQCAtMzQ0MywxMSArMzQ0Myw2IEBAIHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRjYnNzLVxcdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGJzcywgXFx1MDAyNnJkZXYtXFx1MDAzZWJzc19saXN0LCBsaXN0KSB7XFxuLVxcdFxcdGlmICghY2ZnODAyMTFfYnNzX3R5cGVfbWF0Y2goYnNzLVxcdTAwM2VwdWIuY2FwYWJpbGl0eSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBic3MtXFx1MDAzZXB1Yi5jaGFubmVsLVxcdTAwM2ViYW5kLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIHdkZXYtXFx1MDAzZWNvbm5fYnNzX3R5cGUpKVxcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFxuIFxcdFxcdGlmIChic3MgPT0gY2JzcylcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0ODo1MC4wMjMzNjIzOThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MTg4NDQ2NDk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeVwiLFxuICAgIFwiY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YCBpbiB0aGUgY29yZSBjZmc4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0gYnkgcmVtb3ZpbmcgYSBCU1MgdHlwZSBtYXRjaCBjaGVjay4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNoYW5uZWwgc3dpdGNoIG5vdGlmaWNhdGlvbnMgKGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCkgdHJpZ2dlcmVkIGJ5IG1hYzgwMjExIGRyaXZlcnMuIEl0IGNhbiBiZSBmdWxseSB0ZXN0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyB0aGUgc29mdHdhcmUtZW11bGF0ZWQgYG1hYzgwMjExX2h3c2ltYCBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYxZDUxMzViMmUyYTZhMDMzMjhiYjYyNjA4ZmVlYjBhMDZkM2IyNmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDIyOjQ4OjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3NjYW4uYyBiL25ldC93aXJlbGVzcy9zY2FuLmNcbmluZGV4IDA3MTA4M2NjMzM2NzIuLjk3YmY3YWI4Y2M5NjcgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jXG4rKysgYi9uZXQvd2lyZWxlc3Mvc2Nhbi5jXG5AQCAtMzQ0MywxMSArMzQ0Myw2IEBAIHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0Y2Jzcy1cdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGJzcywgXHUwMDI2cmRldi1cdTAwM2Vic3NfbGlzdCwgbGlzdCkge1xuLVx0XHRpZiAoIWNmZzgwMjExX2Jzc190eXBlX21hdGNoKGJzcy1cdTAwM2VwdWIuY2FwYWJpbGl0eSxcbi1cdFx0XHRcdFx0ICAgICBic3MtXHUwMDNlcHViLmNoYW5uZWwtXHUwMDNlYmFuZCxcbi1cdFx0XHRcdFx0ICAgICB3ZGV2LVx1MDAzZWNvbm5fYnNzX3R5cGUpKVxuLVx0XHRcdGNvbnRpbnVlO1xuLVxuIFx0XHRpZiAoYnNzID09IGNic3MpXG4gXHRcdFx0Y29udGludWU7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0ODo1MC4wMjMzNjQxMzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODkzNzk3NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIFN1YnN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC93aXJlbGVzcy9zY2FuLmNgLCBzcGVjaWZpY2FsbHkuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbG9va3MgbGlrZSB0aGV5J3JlIHJlbW92aW5nIGEgY2hlY2s6IGAhY2ZnODAyMTFfYnNzX3R5cGVfbWF0Y2goLi4uKWAgd2l0aGluIHRoZSBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgZnVuY3Rpb24uIFJpZ2h0IGF3YXksIHRoaXMgc2NyZWFtcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtYWM4MDIxMS9jZmc4MDIxMSBzdWJzeXN0ZW0uIFdlJ3JlIHBvdGVudGlhbGx5IGltcGFjdGluZyBob3cgQlNTIGVudHJpZXMgYXJlIHVwZGF0ZWQsIHNvIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bC5cblxuR2l2ZW4gdGhhdCB0aGlzIGlzIGluIHRoZSB3aXJlbGVzcyBzdGFjaywgYW5kIHRoZSB0YXJnZXQgaXMgbGlrZWx5IG1hYzgwMjExLCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBjb2RlIHBhdGggKmlzKiByZWFjaGFibGUsIGFuZCBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyBpdCBiZWhhdmVzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIE1hYzgwMjExX2h3c2ltIGlzIG15IGdvLXRvIGZvciB0aGVzZSB0eXBlcyBvZiBhbmFseXNlcywgc28gSSdtIGdvaW5nIHRvIHdhbnQgdG8gc3BpbiB1cCBhIHF1aWNrIHRlc3QgY2FzZS5cblxuTGV0J3MgZGl2ZSBpbnRvIHRoYXQgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3dpcmVsZXNzL3NjYW4uY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0ODo1My45MTcxNjQyNTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NDQ2MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jPTM0MTY9RVhQT1JUX1NZTUJPTChjZmc4MDIxMV9ic3NfaXRlcik7XFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE3LVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzQxODp2b2lkIGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM0MTktXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbGlua19pZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDg6NTQuMDUxNjE2NDQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MzIxOTMyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIG1vZGlmaWNhdGlvbiB0byB0aGUgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGZ1bmN0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgaW5mbHVlbmNlIHRoaXMgZnVuY3Rpb24uIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIGRpZmZlcmVudCBzeXN0ZW0gYnVpbGRzLiBJIGtub3cgdGhhdCBgbmV0L3dpcmVsZXNzL3NjYW4uY2AgaXMgZGVlcGx5IGludGVydHdpbmVkIHdpdGggYGNmZzgwMjExYCwgc28gSSdsbCBzdGFydCBieSBtYWtpbmcgc3VyZSBJIGhhdmUgdGhlIENPTkZJRyBvcHRpb25zIGNvcnJlY3QgaW4gdGhvc2UgYXJlYXMgYXMgSSB0aGluayB0aGlzIGZpbGUgaXMgZ29pbmcgdG8gbmVlZCB0byBiZSBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ4OjU3LjQ5NDgzODAwNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTcwODY5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2FuLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9NYWtlZmlsZT03PW9iai0kKENPTkZJR19XRVhUX1BSSVYpICs9IHdleHQtcHJpdi5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlLTgtXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjk6Y2ZnODAyMTEteSArPSBjb3JlLm8gc3lzZnMubyByYWRpb3RhcC5vIHV0aWwubyByZWcubyBzY2FuLm8gbmw4MDIxMS5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlLTEwLWNmZzgwMjExLXkgKz0gbWxtZS5vIGlic3MubyBzbWUubyBjaGFuLm8gZXRodG9vbC5vIG1lc2gubyBhcC5vIHRyYWNlLm8gb2NiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDg6NTcuNTY2NTUzMDIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzODI4MTUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgYW5kIFN0cnVjdHVyZSoqXG5cblJpZ2h0LCBzbyBgQ09ORklHX0NGRzgwMjExYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlIGhlcmUuIFRoYXQgbXVjaCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIE5vdywgdGhlIG1vcmUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXMgd2hldGhlciBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaXMgZXhwb3J0ZWQuIFRoYXQgZnVuY3Rpb24gc291bmRzIHBvdGVudGlhbGx5IHJlbGV2YW50LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L3dpcmVsZXNzL3NjYW4uY2AgYXJvdW5kIGxpbmUgMzQxOC4gVGhhdCdzIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHNlZSBob3cgYSBCU1MgZW50cnkgdXBkYXRlIGlzIGhhbmRsZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBzY2FubmluZyBjb250ZXh0LiBMZXQncyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTkxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDk6MDEuMTA0ODM4NDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNDE4LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzQxODpcXHR2b2lkIGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4zNDE5OlxcdFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGxpbmtfaWQsXFxuMzQyMDpcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbilcXG4zNDIxOlxcdHtcXG4zNDIyOlxcdFxcdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSB3ZGV2LVxcdTAwM2V3aXBoeTtcXG4zNDIzOlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiA9IHdpcGh5X3RvX3JkZXYod2lwaHkpO1xcbjM0MjQ6XFx0XFx0c3RydWN0IGNmZzgwMjExX2ludGVybmFsX2JzcyAqY2JzcyA9IHdkZXYtXFx1MDAzZWxpbmtzW2xpbmtfaWRdLmNsaWVudC5jdXJyZW50X2JzcztcXG4zNDI1OlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9pbnRlcm5hbF9ic3MgKm5ldyA9IE5VTEw7XFxuMzQyNjpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfaW50ZXJuYWxfYnNzICpic3M7XFxuMzQyNzpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfYnNzICpub250cmFuc19ic3M7XFxuMzQyODpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfYnNzICp0bXA7XFxuMzQyOTpcXHRcXG4zNDMwOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cmRldi1cXHUwMDNlYnNzX2xvY2spO1xcbjM0MzE6XFx0XFxuMzQzMjpcXHRcXHQvKlxcbjM0MzM6XFx0XFx0ICogU29tZSBBUHMgdXNlIENTQSBhbHNvIGZvciBiYW5kd2lkdGggY2hhbmdlcywgaS5lLiwgd2l0aG91dCBhY3R1YWxseVxcbjM0MzQ6XFx0XFx0ICogY2hhbmdpbmcgdGhlIGNvbnRyb2wgY2hhbm5lbCwgc28gbm8gbmVlZCB0byB1cGRhdGUgaW4gc3VjaCBhIGNhc2UuXFxuMzQzNTpcXHRcXHQgKi9cXG4zNDM2OlxcdFxcdGlmIChjYnNzLVxcdTAwM2VwdWIuY2hhbm5lbCA9PSBjaGFuKVxcbjM0Mzc6XFx0XFx0XFx0Z290byBkb25lO1xcbjM0Mzg6XFx0XFxuMzQzOTpcXHRcXHQvKiB1c2UgdHJhbnNtaXR0aW5nIGJzcyAqL1xcbjM0NDA6XFx0XFx0aWYgKGNic3MtXFx1MDAzZXB1Yi50cmFuc21pdHRlZF9ic3MpXFxuMzQ0MTpcXHRcXHRcXHRjYnNzID0gYnNzX2Zyb21fcHViKGNic3MtXFx1MDAzZXB1Yi50cmFuc21pdHRlZF9ic3MpO1xcbjM0NDI6XFx0XFxuMzQ0MzpcXHRcXHRjYnNzLVxcdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XFxuMzQ0NDpcXHRcXG4zNDQ1OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoYnNzLCBcXHUwMDI2cmRldi1cXHUwMDNlYnNzX2xpc3QsIGxpc3QpIHtcXG4zNDQ2OlxcdFxcdFxcdGlmIChic3MgPT0gY2JzcylcXG4zNDQ3OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjM0NDg6XFx0XFxuMzQ0OTpcXHRcXHRcXHRpZiAoIWNtcF9ic3MoXFx1MDAyNmJzcy1cXHUwMDNlcHViLCBcXHUwMDI2Y2Jzcy1cXHUwMDNlcHViLCBCU1NfQ01QX1JFR1VMQVIpKSB7XFxuMzQ1MDpcXHRcXHRcXHRcXHRuZXcgPSBic3M7XFxuMzQ1MTpcXHRcXHRcXHRcXHRicmVhaztcXG4zNDUyOlxcdFxcdFxcdH1cXG4zNDUzOlxcdFxcdH1cXG4zNDU0OlxcdFxcbjM0NTU6XFx0XFx0aWYgKG5ldykge1xcbjM0NTY6XFx0XFx0XFx0LyogdG8gc2F2ZSB0aW1lLCB1cGRhdGUgSUVzIGZvciB0cmFuc21pdHRpbmcgYnNzIG9ubHkgKi9cXG4zNDU3OlxcdFxcdFxcdGNmZzgwMjExX3VwZGF0ZV9rbm93bl9ic3MocmRldiwgY2JzcywgbmV3LCBmYWxzZSk7XFxuMzQ1ODpcXHRcXHRcXHRuZXctXFx1MDAzZXB1Yi5wcm9iZXJlc3BfaWVzID0gTlVMTDtcXG4zNDU5OlxcdFxcdFxcdG5ldy1cXHUwMDNlcHViLmJlYWNvbl9pZXMgPSBOVUxMO1xcbjM0NjA6XFx0XFxuMzQ2MTpcXHRcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobm9udHJhbnNfYnNzLCB0bXAsXFxuMzQ2MjpcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNm5ldy1cXHUwMDNlcHViLm5vbnRyYW5zX2xpc3QsXFxuMzQ2MzpcXHRcXHRcXHRcXHRcXHRcXHQgbm9udHJhbnNfbGlzdCkge1xcbjM0NjQ6XFx0XFx0XFx0XFx0YnNzID0gYnNzX2Zyb21fcHViKG5vbnRyYW5zX2Jzcyk7XFxuMzQ2NTpcXHRcXHRcXHRcXHRpZiAoX19jZmc4MDIxMV91bmxpbmtfYnNzKHJkZXYsIGJzcykpXFxuMzQ2NjpcXHRcXHRcXHRcXHRcXHRyZGV2LVxcdTAwM2Vic3NfZ2VuZXJhdGlvbisrO1xcbjM0Njc6XFx0XFx0XFx0fVxcbjM0Njg6XFx0XFxuMzQ2OTpcXHRcXHRcXHRXQVJOX09OKGF0b21pY19yZWFkKFxcdTAwMjZuZXctXFx1MDAzZWhvbGQpKTtcXG4zNDcwOlxcdFxcdFxcdGlmICghV0FSTl9PTighX19jZmc4MDIxMV91bmxpbmtfYnNzKHJkZXYsIG5ldykpKVxcbjM0NzE6XFx0XFx0XFx0XFx0cmRldi1cXHUwMDNlYnNzX2dlbmVyYXRpb24rKztcXG4zNDcyOlxcdFxcdH1cXG4zNDczOlxcdFxcdGNmZzgwMjExX3JlaGFzaF9ic3MocmRldiwgY2Jzcyk7XFxuMzQ3NDpcXHRcXG4zNDc1OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShub250cmFuc19ic3MsIHRtcCxcXG4zNDc2OlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2Y2Jzcy1cXHUwMDNlcHViLm5vbnRyYW5zX2xpc3QsXFxuMzQ3NzpcXHRcXHRcXHRcXHRcXHQgbm9udHJhbnNfbGlzdCkge1xcbjM0Nzg6XFx0XFx0XFx0YnNzID0gYnNzX2Zyb21fcHViKG5vbnRyYW5zX2Jzcyk7XFxuMzQ3OTpcXHRcXHRcXHRic3MtXFx1MDAzZXB1Yi5jaGFubmVsID0gY2hhbjtcXG4zNDgwOlxcdFxcdFxcdGNmZzgwMjExX3JlaGFzaF9ic3MocmRldiwgYnNzKTtcXG4zNDgxOlxcdFxcdH1cXG4zNDgyOlxcdFxcbjM0ODM6XFx0ZG9uZTpcXG4zNDg0OlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZyZGV2LVxcdTAwM2Vic3NfbG9jayk7XFxuMzQ4NTpcXHR9XFxuMzQ4NjpcXHRcXG4zNDg3OlxcdCNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbjM0ODg6XFx0c3RhdGljIHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqXFxuMzQ4OTpcXHRjZmc4MDIxMV9nZXRfZGV2X2Zyb21faWZpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxcbjM0OTA6XFx0e1xcbjM0OTE6XFx0XFx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2O1xcbjM0OTI6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcXG4zNDkzOlxcdFxcbjM0OTQ6XFx0XFx0QVNTRVJUX1JUTkwoKTtcXG4zNDk1OlxcdFxcbjM0OTY6XFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9pbmRleChuZXQsIGlmaW5kZXgpO1xcbjM0OTc6XFx0XFx0aWYgKCFkZXYpXFxuMzQ5ODpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcXG4zNDk5OlxcdFxcdGlmIChkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHIpXFxuMzUwMDpcXHRcXHRcXHRyZGV2ID0gd2lwaHlfdG9fcmRldihkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHItXFx1MDAzZXdpcGh5KTtcXG4zNTAxOlxcdFxcdGVsc2VcXG4zNTAyOlxcdFxcdFxcdHJkZXYgPSBFUlJfUFRSKC1FTk9ERVYpO1xcbjM1MDM6XFx0XFx0ZGV2X3B1dChkZXYpO1xcbjM1MDQ6XFx0XFx0cmV0dXJuIHJkZXY7XFxuMzUwNTpcXHR9XFxuMzUwNjpcXHRcXG4zNTA3OlxcdGludCBjZmc4MDIxMV93ZXh0X3Npd3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4zNTA4OlxcdFxcdFxcdFxcdCAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcXG4zNTA5OlxcdFxcdFxcdFxcdCAgdW5pb24gaXdyZXFfZGF0YSAqd3JxdSwgY2hhciAqZXh0cmEpXFxuMzUxMDpcXHR7XFxuMzUxMTpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXY7XFxuMzUxMjpcXHRcXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5O1xcbjM1MTM6XFx0XFx0c3RydWN0IGl3X3NjYW5fcmVxICp3cmVxID0gTlVMTDtcXG4zNTE0OlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3RfaW50ICpjcmVxO1xcbjM1MTU6XFx0XFx0aW50IGksIGVyciwgbl9jaGFubmVscyA9IDA7XFxuMzUxNjpcXHRcXHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kO1xcbjM1MTc6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjAxLjEwNTA4ODg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0OTMwMTkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBxdWl0ZSBmYW1pbGlhciB3aXRoIGBjZmc4MDIxMWAgYW5kIG5ldHdvcmtpbmcgaW50ZXJuYWxzOlxuXG4qKkludmVzdGlnYXRpbmcgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgKipcblxuUmlnaHQsIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YC4gVGhhdCBmdW5jdGlvbiBuYW1lIHJpbmdzIGEgYmVsbC4gSXQncyBkZWZpbml0ZWx5IHBhcnQgb2YgdGhlIGBjZmc4MDIxMWAgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsg4oCTIG5vIHN1cnByaXNlIHRoZXJlLiBJdCdzIGxpa2VseSBpbnZvbHZlZCBpbiB1cGRhdGluZyBCU1MgKEJhc2ljIFNlcnZpY2UgU2V0KSBlbnRyaWVzLCB3aGljaCBhcmUgZXNzZW50aWFsbHkgdGhlIGluZm9ybWF0aW9uIHRoZSBkcml2ZXIga2VlcHMgYWJvdXQgYXNzb2NpYXRlZCBhY2Nlc3MgcG9pbnRzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCB3aGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICp1c2VkKj8gV2hhdCBwYXJ0cyBvZiB0aGUgZHJpdmVyIG9yIGtlcm5lbCBhcmUgY2FsbGluZyBpdD9cIi4gVGltZSB0byB0cmFjZSB0aG9zZSBjYWxscyBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdG8gZ3Jhc3AgaXRzIHB1cnBvc2UgYW5kIGltcGFjdCBmdWxseS4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCBjYWxscyB0aGlzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OTowNC41NTQzOTM0MzdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDQ3NDk4NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL2NvcmUuaD0zMzM9dm9pZCBjZmc4MDIxMV9ic3NfYWdlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3MvY29yZS5oLTMzNC0gICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhZ2Vfc2Vjcyk7XFxubmV0L3dpcmVsZXNzL2NvcmUuaDozMzU6dm9pZCBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L3dpcmVsZXNzL2NvcmUuaC0zMzYtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbGluayxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIzNDk9dm9pZCBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzY1LVxcdFxcdGlmICghV0FSTl9PTighd2Rldi1cXHUwMDNlbGlua3NbbGlua19pZF0uY2xpZW50LmN1cnJlbnRfYnNzKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIyMzY2OlxcdFxcdFxcdGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkod2RldiwgbGlua19pZCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzY3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdGNoYW5kZWYtXFx1MDAzZWNoYW4pO1xcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYz0zNDE2PUVYUE9SVF9TWU1CT0woY2ZnODAyMTFfYnNzX2l0ZXIpO1xcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzQxNy1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjM0MTg6dm9pZCBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDE5LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGxpbmtfaWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjA4Ljk1OTE0OTQxMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTgzMzk4MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNoYW5uZWwgU3dpdGNoIE5vdGlmaWNhdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUga2VybmVsJ3Mgd2lyZWxlc3Mgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AgaXMgdGhlIG9uZSBpbiBxdWVzdGlvbi4gSSByZWNhbGwgdGhhdCBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaXMgZXhwb3J0ZWQsIG1ha2luZyBpdCBhY2Nlc3NpYmxlIGZvciBkcml2ZXJzIHRvIHVzZS4gVGhlIGNvbnRleHQgaW5kaWNhdGVzIHRoYXQgZHJpdmVycyBsaWtlIG1hYzgwMjExIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIGEgY2hhbm5lbCBzd2l0Y2ggaXMgdHJpZ2dlcmVkLlxuXG5HaXZlbiB0aGlzIHNldHVwLCBpdCdzIHByZXR0eSBjbGVhciB0aGlzIGlzIGEgbGVnaXRpbWF0ZSBjYWxsIHBhdGgsIGFuZCBhIHRlc3RhYmxlIG9uZSBhdCB0aGF0LiBDb25zaWRlcmluZyBJIGhhdmUgbWFjODAyMTFfaHdzaW0gYXZhaWxhYmxlLCB0aGF0J3MgZXhhY3RseSB3aGVyZSBJJ2xsIGxvb2sgZm9yIHRlc3RhYmlsaXR5LiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGl0c2VsZiBuZXh0LCB0byB1bmRlcnN0YW5kIHRoZSBub3RpZmljYXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUzNywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OToxMi45NDI1NTAxNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUzNzU0Mjc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9MTA3Nz12b2lkIGF0aDZrbF9jZmc4MDIxMV9zY2FuX2NvbXBsZXRlX2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIGJvb2wgYWJvcnRlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMTA3OnZvaWQgYXRoNmtsX2NmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgaW50IGZyZXEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTExMDgtXFx0XFx0XFx0XFx0ICAgICAgZW51bSB3bWlfcGh5X21vZGUgbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMTIyLVxcdHdpcGh5X2xvY2sodmlmLVxcdTAwM2Vhci1cXHUwMDNld2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMTIzOlxcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkodmlmLVxcdTAwM2VuZGV2LCBcXHUwMDI2Y2hhbmRlZiwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTExMjQtXFx0d2lwaHlfdW5sb2NrKHZpZi1cXHUwMDNlYXItXFx1MDAzZXdpcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaD0yNz1zdHJ1Y3Qgd2lyZWxlc3NfZGV2ICphdGg2a2xfaW50ZXJmYWNlX2FkZChzdHJ1Y3QgYXRoNmtsICphciwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaC0zMC1cXHRcXHRcXHRcXHRcXHQgIHU4IGZ3X3ZpZl9pZHgsIHU4IG53X3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaDozMTp2b2lkIGF0aDZrbF9jZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIGludCBmcmVxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaC0zMi1cXHRcXHRcXHRcXHQgICAgICBlbnVtIHdtaV9waHlfbW9kZSBtb2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jPTM3ND12b2lkIGF0aDZrbF9jb25uZWN0X2FwX21vZGVfYnNzKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNDE1LVxcdFxcdC8qIHdlIGFjdHVhbGx5IGRvbid0IGtub3cgdGhlIHBoeW1vZGUsIGRlZmF1bHQgdG8gSFQyMCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jOjQxNjpcXHRcXHRhdGg2a2xfY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeSh2aWYsIGNoYW5uZWwsIFdNSV8xMUdfSFQyMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNDE3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jPTI2Nj12b2lkIG13aWZpZXhfZGZzX2NoYW5fc3dfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjkxLVxcdHdpcGh5X2xvY2socHJpdi1cXHUwMDNld2Rldi53aXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExaC5jOjI5MjpcXHRjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHByaXYtXFx1MDAzZW5ldGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZWRmc19jaGFuZGVmLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFoLmMtMjkzLVxcdHdpcGh5X3VubG9jayhwcml2LVxcdTAwM2V3ZGV2LndpcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2V2ZW50LmM9NDM2PXF0bmZfZXZlbnRfaGFuZGxlX2ZyZXFfY2hhbmdlKHN0cnVjdCBxdG5mX3dtYWMgKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2V2ZW50LmMtNDgwLVxcdFxcdHdpcGh5X2xvY2socHJpdl90b193aXBoeSh2aWYtXFx1MDAzZW1hYykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2V2ZW50LmM6NDgxOlxcdFxcdGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkodmlmLVxcdTAwM2VuZXRkZXYsIFxcdTAwMjZjaGFuZGVmLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9ldmVudC5jLTQ4Mi1cXHRcXHR3aXBoeV91bmxvY2socHJpdl90b193aXBoeSh2aWYtXFx1MDAzZW1hYykpO1xcbi0tXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD05OTU4PWNmZzgwMjExX3JlZ19jYW5fYmVhY29uX3JlbGF4KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk5NzAtLyoqXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo5OTcxOiAqIGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnkgLSB1cGRhdGUgd2RldiBjaGFubmVsIGFuZCBub3RpZnkgdXNlcnNwYWNlXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05OTcyLSAqIEBkZXY6IHRoZSBkZXZpY2Ugd2hpY2ggc3dpdGNoZWQgY2hhbm5lbHNcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtOTk3OC0gKi9cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjk5Nzk6dm9pZCBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05OTgwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDQ2Nz1zdGF0aWMgaW50IF9faWVlZTgwMjExX2NzYV9maW5hbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGlua19kYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ1MTYtXFxubmV0L21hYzgwMjExL2NmZy5jOjQ1MTc6XFx0Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeShzZGF0YS1cXHUwMDNlZGV2LCBcXHUwMDI2bGlua19kYXRhLVxcdTAwM2Vjc2EuY2hhbnJlcS5vcGVyLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NTE4LVxcdFxcdFxcdFxcdCAgbGlua19kYXRhLVxcdTAwM2VsaW5rX2lkKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9Mjg3Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfY3NhX3N3aXRjaF93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI5MDctXFx0XFx0bGluay1cXHUwMDNlY29uZi1cXHUwMDNlY2hhbnJlcSA9IGxpbmstXFx1MDAzZWNzYS5jaGFucmVxO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjkwODpcXHRcXHRjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHNkYXRhLVxcdTAwM2VkZXYsIFxcdTAwMjZsaW5rLVxcdTAwM2Vjc2EuY2hhbnJlcS5vcGVyLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjkwOS1cXHRcXHRcXHRcXHRcXHQgIGxpbmstXFx1MDAzZWxpbmtfaWQpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0zMDE2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9jaHN3aXRjaF9wb3N0X2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzA1Ny1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjMwNTg6XFx0Y2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeShzZGF0YS1cXHUwMDNlZGV2LCBcXHUwMDI2bGluay1cXHUwMDNlY29uZi1cXHUwMDNlY2hhbnJlcS5vcGVyLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzA1OS1cXHRcXHRcXHRcXHQgIGxpbmstXFx1MDAzZWxpbmtfaWQpO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0yMjI5OT1zdGF0aWMgdm9pZCBubDgwMjExX2NoX3N3aXRjaF9ub3RpZnkoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM0OC1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIyMzQ5OnZvaWQgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIzNTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiAqY2hhbmRlZixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIzNTktXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMjM2MDpcXHR0cmFjZV9jZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KGRldiwgY2hhbmRlZiwgbGlua19pZCk7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM2MS1cXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjIzOTAtfVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIzOTE6RVhQT1JUX1NZTUJPTChjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzkyLVxcbi0tXFxubmV0L3dpcmVsZXNzL3RyYWNlLmg9MzU2OD1UUkFDRV9FVkVOVChjZmc4MDIxMV9yZWdfY2FuX2JlYWNvbixcXG4tLVxcbm5ldC93aXJlbGVzcy90cmFjZS5oLTM1OTEtXFxubmV0L3dpcmVsZXNzL3RyYWNlLmg6MzU5MjpUUkFDRV9FVkVOVChjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5LFxcbm5ldC93aXJlbGVzcy90cmFjZS5oLTM1OTMtXFx0VFBfUFJPVE8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDk6MTYuNDgwMDk4NDc3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NjE3OTQxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gYXBwcm9hY2ggdGhpcyBmdXp6aW5nIGVmZm9ydC4gSXQgc2VlbXMgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGlzIGNhbGxlZCBieSBgbWFjODAyMTFgLCBzcGVjaWZpY2FsbHkgZnJvbSB3aXRoaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AgYW5kIGBuZXQvbWFjODAyMTEvbWxtZS5jYC4gVGhhdCBpbXBsaWVzIHRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzaWJsZSB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGhlbHBmdWwgZm9yIHRlc3RpbmcuXG5cbkkgbm90aWNlIHRoZXJlIGhhdmUgYmVlbiBtb2RpZmljYXRpb25zIHRvIGBjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5YC4gVGhhdCBtYWtlcyBpdCBhIHBvdGVudGlhbCB0YXJnZXQgYXMgd2VsbC4gVGhlIHF1ZXN0aW9uIGlzLCB3aGljaCBvbmUgaXMgdGhlICpiZXR0ZXIqIGVudHJ5IHBvaW50PyBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaXMgZXhwb3J0ZWQgYW5kIGxvb2tzIGxpa2UgYSBjbGVhbiBlbnRyeSBwb2ludC4gQnV0LCBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaXMgKmFsc28qIGV4cG9ydGVkLiBXYWl0IGEgc2Vjb25kLi4uZGlkIEkgcmVhZCB0aGF0IHJpZ2h0PyBIbW0sIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBgbmV0L3dpcmVsZXNzL3NjYW4uY2AgYXJvdW5kIGxpbmUgMzQxOC4gSnVzdCB0byBiZSBzdXJlLiBJdCdzIGltcG9ydGFudCB0byBjb25maXJtIHRoZSBlbnRyeSBwb2ludHMgYmVmb3JlIGp1bXBpbmcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNzcsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDk6MjEuMjQxODk2NjY1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjYxMTg5OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OToyMS4zMzg1MTc0OTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyNDM3NDI1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uIENhbGwgRmxvdyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGEgcHJvYmxlbSDigJMgdGhlIGZ1bmN0aW9uIGBjZmc4MDIxMV9ic3NfaXRlcmAgaXNuJ3QgZXhwb3J0ZWQuIEhtbSwgbGluZSAzNDE2IHNob3dzIGl0ICppcyogZXhwb3J0ZWQuIE9rYXksIGdvb2QuIEJ1dCB3YWl0LCBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaXNuJ3QgZXhwb3J0ZWQgZWl0aGVyLiBUaGF0J3MgYSBiaXQgb2RkLiBJIHNlZSBpdCdzIGRlY2xhcmVkIGluIGBuZXQvd2lyZWxlc3MvY29yZS5oYCwgYW5kIGl0J3MgY2FsbGVkIGZyb20gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgLiBSaWdodCwgc28gdGhhdCB0ZWxscyBtZSBpdCdzIGFuIGludGVybmFsIGBjZmc4MDIxMWAgZnVuY3Rpb24uIE5vdywgSSBuZWVkIHRvIGZpbmQgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCwgYW5kIHRoYXQgc2VlbXMgdG8gYmUgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgLiBPaywgSSB0aGluayBJJ3ZlIGdvdCBhIGhhbmRsZSBvbiB0aGUgc3RydWN0dXJlIG9mIHRoZSBjYWxsLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBpZGVudGlmaWVkIGFsbCB0aGUgY2FsbGVycy4gQXJlIHRoZXJlIGFueSBvdGhlciBjYWxsZXJzIG9mIHRoYXQgZnVuY3Rpb24/IE5lZWQgdG8gYmUgc3VyZSBvZiB0aGUgd2hvbGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYxMywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OToyNS40NjI4OTU1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODU3MzU2MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9jb3JlLmg9MzMzPXZvaWQgY2ZnODAyMTFfYnNzX2FnZShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxubmV0L3dpcmVsZXNzL2NvcmUuaC0zMzQtICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWdlX3NlY3MpO1xcbm5ldC93aXJlbGVzcy9jb3JlLmg6MzM1OnZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbm5ldC93aXJlbGVzcy9jb3JlLmgtMzM2LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGxpbmssXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIyMzQ5PXZvaWQgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM2NS1cXHRcXHRpZiAoIVdBUk5fT04oIXdkZXYtXFx1MDAzZWxpbmtzW2xpbmtfaWRdLmNsaWVudC5jdXJyZW50X2JzcykpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMjM2NjpcXHRcXHRcXHRjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5KHdkZXYsIGxpbmtfaWQsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjM2Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHRjaGFuZGVmLVxcdTAwM2VjaGFuKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9zY2FuLmM9MzQxNj1FWFBPUlRfU1lNQk9MKGNmZzgwMjExX2Jzc19pdGVyKTtcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM0MTctXFxubmV0L3dpcmVsZXNzL3NjYW4uYzozNDE4OnZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzQxOS1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBsaW5rX2lkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OToyNS44NDg2NDAwOTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MTk2OTM0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENoYW5uZWwgU3dpdGNoIE5vdGlmaWNhdGlvbiBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YC4gUmlnaHQsIHRoYXQncyB0aGUga2V5IGZ1bmN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3Mgc2VlIGlmIHRoaXMgbm90aWZpY2F0aW9uIGlzIHRyaWdnZXJlZCBkaXJlY3RseSB0aHJvdWdoIG5ldGxpbmsuIEhtbSwgbm8sIGl0IGxvb2tzIGxpa2UgZHJpdmVycyBhY3R1YWxseSAqY2FsbCogYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIHRvIHRlbGwgY2ZnODAyMTEgdGhhdCB0aGV5J3ZlIG1hZGUgYSBjaGFubmVsIHN3aXRjaC5cblxuU28sIGhvdyAqaXMqIHRoZSBjaGFubmVsIHN3aXRjaCBpbml0aWF0ZWQgaW4gdGhlIGZpcnN0IHBsYWNlPyBBaCwgb2YgY291cnNlLCB0aHJvdWdoIG5ldGxpbmsuIExpa2VseSB1c2luZyBlaXRoZXIgYE5MODAyMTFfQ01EX0NIX1NXSVRDSF9OT1RJRllgIG9yIGBOTDgwMjExX0NNRF9DSEFOTkVMX1NXSVRDSGAuIFRoYXQncyB3aGVyZSB0aGUgY29tbWFuZCBvcmlnaW5hdGVzLiBUaW1lIHRvIGRpdmUgaW50byBgbmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCB3aXRoaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIGFuZCBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Mzk5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjI5Ljk5MDYxMTc4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwOTk2MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfY2hfc3dpdGNoX25vdGlmeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIyOTc9RVhQT1JUX1NZTUJPTChjZmc4MDIxMV9wbWtzYV9jYW5kaWRhdGVfbm90aWZ5KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMjk4LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIyOTk6c3RhdGljIHZvaWQgbmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzAwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIzNDk9dm9pZCBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzg3LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjIzODg6XFx0bmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHJkZXYsIGRldiwgbGlua19pZCwgY2hhbmRlZiwgR0ZQX0tFUk5FTCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyMzg5LVxcdFxcdFxcdFxcdCBOTDgwMjExX0NNRF9DSF9TV0lUQ0hfTk9USUZZLCAwLCBmYWxzZSk7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIyNDMzPXZvaWQgY2ZnODAyMTFfY2hfc3dpdGNoX3N0YXJ0ZWRfbm90aWZ5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyNDQ3LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjI0NDg6XFx0bmw4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5KHJkZXYsIGRldiwgbGlua19pZCwgY2hhbmRlZiwgR0ZQX0tFUk5FTCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyNDQ5LVxcdFxcdFxcdFxcdCBOTDgwMjExX0NNRF9DSF9TV0lUQ0hfU1RBUlRFRF9OT1RJRlksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjMwLjExMTY1NjE2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTYxNzg0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQ2hhbm5lbCBTd2l0Y2ggTm90aWZpY2F0aW9ucyBpbiB0aGUgV2lyZWxlc3MgU3RhY2sqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IGNoYW5uZWwgc3dpdGNoIG5vdGlmaWNhdGlvbnMgd29yayBpbiB0aGUga2VybmVsLCBhbmQgYG5sODAyMTFfY2hfc3dpdGNoX25vdGlmeWAgaW1tZWRpYXRlbHkganVtcHMgb3V0IGFzIHRoZSBjZW50cmFsIHBvaW50IGZvciBzZW5kaW5nIHRob3NlIGV2ZW50cyB1cCB0byB1c2Vyc3BhY2UuIEkga25vdyB0aGF0IGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCB0aGUgZHJpdmVycyBjYWxsIHRvIHRyaWdnZXIgdGhpcyBwcm9jZXNzLlxuXG5JbiB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLCB0aGlzIG5vdGlmaWNhdGlvbiBpcyBmaXJlZCBmcm9tIHR3byBrZXkgcGxhY2VzOiBgaWVlZTgwMjExX2NzYV9zd2l0Y2hfd29ya2AgYW5kIGBpZWVlODAyMTFfY2hzd2l0Y2hfcG9zdF9iZWFjb25gLiBUaGVzZSwgYXMgSSByZWNhbGwsIGFyZSB0cmlnZ2VyZWQgd2hlbiB0aGUgYWNjZXNzIHBvaW50IHNlbmRzIGEgQ1NBIChDaGFubmVsIFN3aXRjaCBBbm5vdW5jZW1lbnQpIGVsZW1lbnQgd2l0aGluIHRoZSBiZWFjb24gZnJhbWUsIG9yIHdoZW4gdXNlcnNwYWNlIGFjdGl2ZWx5IHJlcXVlc3RzIGEgY2hhbm5lbCBjaGFuZ2UuIFRoZXJlZm9yZSwgYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgIGlzIGNsZWFybHkgYSBwcmltZSBjYW5kaWRhdGUsIGEgcGVyZmVjdCBcIkZvY3VzU3ltYm9sXCIgaW4gbXkgYW5hbHlzaXMuXG5cbkJleW9uZCB0aGF0LCBJJ20gbm90aW5nIHRoYXQgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGNvdWxkIGJlIHVzZWZ1bCwgZXZlbiBpZiBpdCdzIG5vdCBleHBvcnRlZC4gSXQncyBub3QgZGVjbGFyZWQgc3RhdGljLCB3aGljaCBtZWFucyBpdCBoYXMgYSBnbG9iYWxseSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyB0cnVlLi4uIFllcywgYHZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeSguLi4pYCBjb25maXJtcyBpdC4gSSB0aGluayBJJ2xsIHVzZSB0aGF0IGFzIGFub3RoZXIgZm9jdXMgcG9pbnQuXG5cbk5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgbmVlZGVkIGZvciB0aGlzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gT2J2aW91c2x5LCBgQ09ORklHX0NGRzgwMjExYCBpcyBlc3NlbnRpYWwsIHRoYXQncyBhIGdpdmVuLiBJJ2xsIG5lZWQgYENPTkZJR19NQUM4MDIxMWAgdG8gYWN0dWFsbHkgdHJpZ2dlciB0aGUgbm90aWZpY2F0aW9uIHZpYSBhIGRyaXZlci4gQW5kLCBmb3IgcHJhY3RpY2FsIHRlc3RpbmcsIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gaGF2ZSBgQ09ORklHX01BQzgwMjExX0hXU0lNYCBjb25maWd1cmVkLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ20gZ29pbmcgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19DRkc4MDIxMWAgYW5kIGBDT05GSUdfTUFDODAyMTFgIGFyZSBhY3R1YWxseSBzZXQgYXMgZXhwZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjg0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjM2LjcyNzgzNzMyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg3MTAyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cXHRib29sIFxcXCJlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXFxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVxcdGJvb2wgXFxcInJlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXFx0Ym9vbCBcXFwiYWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVxcdGJvb2wgXFxcImNmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcImVuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OTozNi44MzY1NTI2OThaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0Mzg0MzU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBXaXJlbGVzcyBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIEknbSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoaXMga2VybmVsLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgQ0ZHODAyMTFgIOKAkyB0aGF0J3MgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuIFRoYXQncyB0aGUgZ28tdG8sIHRoZSBtYWluIHBvaW50IG9mIGNvbnRyb2wgZm9yIHRoZSB3aXJlbGVzcyBzdGFjay4gSXQncyB0aGUgY2VudHJhbCBodWIgZm9yIGhhbmRsaW5nIGFsbCBzb3J0cyBvZiByZWd1bGF0b3J5IGFuZCBjb25maWd1cmF0aW9uIGFzcGVjdHMgcmVsYXRlZCB0byA4MDIuMTEgc3RhbmRhcmRzLiBHb3QgaXQuXG5cbk5vdywgd2hlcmUgZG8gSSBmaW5kIHRoZSBtb3JlIHNwZWNpZmljIE1BQy1sYXllciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzPyBPaCwgcmlnaHQsIGBNQUM4MDIxMWAuIFRoYXQgc2hvdWxkIGJlIHRoZSBuZXh0IHRoaW5nIHRvIGluc3BlY3QuIEFuZCwgSSByZWNhbGwgaXQncyB3aXRoaW4gdGhlIGBuZXQvbWFjODAyMTFgIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJ2QgZmluZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IHNhbWUgZGlyZWN0b3J5LiBUaGF0IG1ha2VzIHNlbnNlOyBpdCB3aWxsIGFsbG93IG1lIHRvIHR1cm4gZmVhdHVyZXMgb24gb3Igb2ZmLiBUaGF0J3MgZ29vZCB0byBrbm93IGZvciBxdWljayByZWZlcmVuY2UgaW4gbXkgcmVzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDIxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjI6NDk6NDEuMDgwNDAwMzI0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjIwOTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OTo0MS4xNzY2MTU3ODNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2Mjk5MTc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipNQUM4MDIxMSBhbmQgdGhlIEhXU0lNIE1vZHVsZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHdpcmVsZXNzIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIGBNQUM4MDIxMWAuIFRoYXQncyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGVudHJ5LCBpdCdzIHRoZSBmb3VuZGF0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aC4gQW5kIHRoZW4sIEkgc2VlIHRoaXMgcmVmZXJlbmNlIHRvIGBNQUM4MDIxMV9IV1NJTWAuIEFoLCByaWdodCwgdGhhdCdzIHRoZSBIYXJkd2FyZSBTaW11bGF0b3IgbW9kdWxlLiBJIHJlbWVtYmVyIHRoYXQuIEl0IGFsbG93cyB5b3UgdG8gZW11bGF0ZSB3aXJlbGVzcyBoYXJkd2FyZSBpbiBzb2Z0d2FyZSwgd2hpY2ggaXMgaW5jcmVkaWJseSB1c2VmdWwgZm9yIHRlc3RpbmcgYW5kIGRldmVsb3BtZW50LCBlc3BlY2lhbGx5IHdoZW4geW91IGRvbid0IGhhdmUgcGh5c2ljYWwgaGFyZHdhcmUgcmVhZGlseSBhdmFpbGFibGUuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgbG9jYXRpb24gb2YgdGhlIGBNQUM4MDIxMV9IV1NJTWAgaW1wbGVtZW50YXRpb24uIEl0IHNob3VsZCBiZSwgYXMgSSByZWNhbGwsIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBsaWtlbHkgaW4gYSBmaWxlIGNhbGxlZCBgbWFjODAyMTFfaHdzaW0uY2AsIG9yIHNvbWV0aGluZyBjbG9zZWx5IG5hbWVkLiBMZXQgbWUgZG91YmxlIGNoZWNrIHRoYXQgZGlyZWN0b3J5LiBUaGlzIHByb3ZpZGVzIGEgc29mdHdhcmUtYmFzZWQgYWJzdHJhY3Rpb24gbGF5ZXIsIGNyaXRpY2FsIGZvciB1bml0IHRlc3RpbmcgYW5kIENJL0NELlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDUxMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjQ0LjczOTYxMDQ2OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4ODYyMjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMjo0OTo0NC45Mzg0Nzg1NDZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc5NjMzODM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCdzIHJlbGF0ZWQgdG8gYE1BQzgwMjExX0hXU0lNYCwgbWVhbmluZyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gd2l0aGluIG1hYzgwMjExLiBHb29kLCB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUgYSBiaXQuIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSByZW1vdmluZyBhIGNoZWNrIHdpdGhpbiBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIGNvZGUgcGF0aCAqaXMqIGRlZmluaXRlbHkgcmVhY2hhYmxlLlxuXG5JIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gaGVyZS4gVGhlIGNvcmUgZnVuY3Rpb24gb2YgaW50ZXJlc3QgaXMgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgLCBhbmQgaXQgaXMgdHJpZ2dlcmVkIGJ5IGEgY2hhbm5lbCBzd2l0Y2ggbm90aWZpY2F0aW9uIHVzaW5nIGBjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5YC4gV2Uga25vdyB0aGlzIGlzIHJlYWNoYWJsZSBiZWNhdXNlIG1hYzgwMjExIGRyaXZlcnMsIHdoaWNoIGluY2x1ZGVzIHRoZSBzaW11bGF0ZWQgaGFyZHdhcmUsIHVzZSB0aGlzIGZ1bmN0aW9uLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaXNuJ3QgaW5saW5lZC4gSSByZW1lbWJlciBzZWVpbmcgaXRzIGRlY2xhcmF0aW9uIGluIGBuZXQvd2lyZWxlc3MvY29yZS5oYCBhbmQgdGhlIGRlZmluaXRpb24gaW4gYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBBbHJpZ2h0LCBpdCdzIG5vdCBtYXJrZWQgYGlubGluZWAgd2hpY2ggbWVhbnMgaXQncyBhIGRpc3RpbmN0IGZ1bmN0aW9uIGNhbGwgYXMgSSBzdXNwZWN0ZWQuIEFuZCwgSSdtIGNvbmZpZGVudCBhYm91dCBgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWA7IGl0IGlzIGRlZmluZWQgaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgIGFuZCBpcyBleHBvcnRlZC5cblxuT3ZlcmFsbCwgZXZlcnl0aGluZyBzZWVtcyBjb25zaXN0ZW50IGFuZCBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4OTgsIk91dHB1dFRva2VucyI6MTkzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIyOjQ5OjUxLjczNDgyMDExM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzAwMjAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlcIixcbiAgICBcImNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeWAgaW4gdGhlIGNvcmUgY2ZnODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtIGJ5IHJlbW92aW5nIGEgQlNTIHR5cGUgbWF0Y2ggY2hlY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjaGFubmVsIHN3aXRjaCBub3RpZmljYXRpb25zIChgY2ZnODAyMTFfY2hfc3dpdGNoX25vdGlmeWApIHRyaWdnZXJlZCBieSBtYWM4MDIxMSBkcml2ZXJzLiBJdCBjYW4gYmUgZnVsbHkgdGVzdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdXNpbmcgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIGBtYWM4MDIxMV9od3NpbWAgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZmc4MDIxMV91cGRhdGVfYXNzb2NfYnNzX2VudHJ5XCIsXG4gICAgXCJjZmc4MDIxMV9jaF9zd2l0Y2hfbm90aWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnlgIGluIHRoZSBjb3JlIGNmZzgwMjExIHdpcmVsZXNzIHN1YnN5c3RlbSBieSByZW1vdmluZyBhIEJTUyB0eXBlIG1hdGNoIGNoZWNrLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgY2hhbm5lbCBzd2l0Y2ggbm90aWZpY2F0aW9ucyAoYGNmZzgwMjExX2NoX3N3aXRjaF9ub3RpZnlgKSB0cmlnZ2VyZWQgYnkgbWFjODAyMTEgZHJpdmVycy4gSXQgY2FuIGJlIGZ1bGx5IHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHVzaW5nIHRoZSBzb2Z0d2FyZS1lbXVsYXRlZCBgbWFjODAyMTFfaHdzaW1gIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpdc6z[1] Phase: Succeeded StartedAt: 2026-08-02 22:50:04 +0000 UTC FinishedAt: 2026-08-02 22:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 22:50:04 +0000 UTC FinishedAt: 2026-08-02 22:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2] Phase: Succeeded StartedAt: 2026-08-02 22:50:04 +0000 UTC FinishedAt: 2026-08-03 02:40:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 22:50:04 +0000 UTC FinishedAt: 2026-08-03 02:40:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 22:50:04 +0000 UTC FinishedAt: 2026-08-02 22:50:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 22:50:04 +0000 UTC FinishedAt: 2026-08-02 22:50:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowpdc6z/series-workflowpdc6z-convert-artifact-736622265/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 22:50:50 +0000 UTC FinishedAt: 2026-08-02 23:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 22:50:50 +0000 UTC FinishedAt: 2026-08-02 23:13:54 +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:*434a35df-6ecc-4efa-9f81-7d27eeb003a9,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-workflowpdc6z/series-workflowpdc6z-convert-artifact-736622265/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": "d8e2eb9a-a6d8-4815-b993-682e0b7db045", "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-workflowpdc6z/series-workflowpdc6z-build-action-2318164951/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 22:50:50 +0000 UTC FinishedAt: 2026-08-02 23:13:44 +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:*434a35df-6ecc-4efa-9f81-7d27eeb003a9,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-workflowpdc6z/series-workflowpdc6z-convert-artifact-736622265/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": "d8e2eb9a-a6d8-4815-b993-682e0b7db045", "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-workflowpdc6z/series-workflowpdc6z-build-action-2318164951/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 23:13:54 +0000 UTC FinishedAt: 2026-08-02 23:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 23:13:54 +0000 UTC FinishedAt: 2026-08-02 23:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 23:13:54 +0000 UTC FinishedAt: 2026-08-02 23:14:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 23:13:54 +0000 UTC FinishedAt: 2026-08-02 23:13:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowpdc6z/series-workflowpdc6z-convert-artifact-2599883404/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 23:14:04 +0000 UTC FinishedAt: 2026-08-02 23:16:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 23:14:04 +0000 UTC FinishedAt: 2026-08-02 23:15:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d8e2eb9a-a6d8-4815-b993-682e0b7db045,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-workflowpdc6z/series-workflowpdc6z-build-action-2318164951/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-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 23:16:04 +0000 UTC FinishedAt: 2026-08-02 23:16:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 23:16:04 +0000 UTC FinishedAt: 2026-08-02 23:16:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 23:16:04 +0000 UTC FinishedAt: 2026-08-02 23:35:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 23:16:04 +0000 UTC FinishedAt: 2026-08-02 23:35:39 +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:*434a35df-6ecc-4efa-9f81-7d27eeb003a9,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-workflowpdc6z/series-workflowpdc6z-convert-artifact-2599883404/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": "b9ad134d-0c95-4ec8-bba3-4ef94f9b7a4b", "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-workflowpdc6z/series-workflowpdc6z-build-action-4041307816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 23:16:04 +0000 UTC FinishedAt: 2026-08-02 23:35:29 +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:*434a35df-6ecc-4efa-9f81-7d27eeb003a9,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-workflowpdc6z/series-workflowpdc6z-convert-artifact-2599883404/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": "b9ad134d-0c95-4ec8-bba3-4ef94f9b7a4b", "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-workflowpdc6z/series-workflowpdc6z-build-action-4041307816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 23:35:39 +0000 UTC FinishedAt: 2026-08-02 23:35:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 23:35:39 +0000 UTC FinishedAt: 2026-08-02 23:35:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 23:35:39 +0000 UTC FinishedAt: 2026-08-02 23:37:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 23:35:39 +0000 UTC FinishedAt: 2026-08-02 23:37:48 +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:*b9ad134d-0c95-4ec8-bba3-4ef94f9b7a4b,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-workflowpdc6z/series-workflowpdc6z-build-action-4041307816/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-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 23:37:58 +0000 UTC FinishedAt: 2026-08-03 02:40:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 23:37:58 +0000 UTC FinishedAt: 2026-08-03 02:40:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"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:*d8e2eb9a-a6d8-4815-b993-682e0b7db045,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b9ad134d-0c95-4ec8-bba3-4ef94f9b7a4b,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-workflowpdc6z/series-workflowpdc6z-build-action-2318164951/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-workflowpdc6z/series-workflowpdc6z-build-action-4041307816/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 23:37:58 +0000 UTC FinishedAt: 2026-08-02 23:38:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 23:37:58 +0000 UTC FinishedAt: 2026-08-02 23:38:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"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-workflowpdc6z/series-workflowpdc6z-convert-artifact-208898037/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 23:37:58 +0000 UTC FinishedAt: 2026-08-02 23:37:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 23:37:58 +0000 UTC FinishedAt: 2026-08-02 23:37:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 23:37:58 +0000 UTC FinishedAt: 2026-08-02 23:37:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 23:38:08 +0000 UTC FinishedAt: 2026-08-03 02:40:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpdc6z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfg80211_update_assoc_bss_entry","cfg80211_ch_switch_notify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"8ea3a36b-2a23-4302-a1d2-50fbec245c95","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 23:38:08 +0000 UTC FinishedAt: 2026-08-03 02:40:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d8e2eb9a-a6d8-4815-b993-682e0b7db045,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b9ad134d-0c95-4ec8-bba3-4ef94f9b7a4b,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-workflowpdc6z/series-workflowpdc6z-build-action-2318164951/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-workflowpdc6z/series-workflowpdc6z-build-action-4041307816/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-workflowpdc6z/series-workflowpdc6z-convert-artifact-208898037/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,}