SGk6CgpBcyBhIERlYmlhbiBtYWludGFpbmVyIG9mIHRoZSBjYWxsaWdyYSBwYWNrYWdlLCBJJ20g cmV2aWV3aW5nIGxpY2Vuc2luZyBhbmQKY29weXJpZ2h0IGRldGFpbHMuIFdlJ3ZlIGZvdW5kIHNv bWUgaXNzdWVzIHRoYXQgSSdsbCBleHBsYWluIGluIHRoaXMgZW1haWwKYW5kIHdlJ2QgbGlrZSB0 byBoZWFyIHlvdXIgcG9pbnQgb2Ygdmlldy4KCkknbSBjb25zaWRlcmluZyB0aGF0IGdlbmVyYWwg bGljZW5zaW5nIGFzIHBlciBDT1BZSU5HLCBDT1BZSU5HLkRPQyBhbmQKQ09QWUlORy5MSUIgYXBw bGllcyB0byBhbnkgZmlsZXMgdGhhdCBkb24ndCBoYXZlIGFuIGV4cGxpY2l0IGxpY2Vuc2UuIEJ1 dCBpbgpzb21lIGNhc2VzIGl0IG1pZ2h0IGJlIHVuY2xlYXIsIHNvIEknbSBwb2ludGluZyB0aGVt IG91dC4KClBsZWFzZSBjb3JyZWN0IG1lIGlmIHRoZXJlJ3MgYW55IG1pc3Rha2VzIGluIHRoaXMg YXNzZXNzbWVudC4KClpJUCBmaWxlcwo9PT09PT09PT0KbGlicy9mbGFrZS90ZXN0cy9zdG9yZS56 aXA6CiAgb25seSBqcGcgYW5kIHBuZyBmaWxlcy4KUFJPUE9TQUw6IGlmIGdlbmVyYWwgbGljZW5z ZSBhcHBsaWVzLCBubyBmdXJ0aGVyIGFjdGlvbi4KCmZpbHRlcnMvbGlibXNvb3htbC9kb2MvcHJl c2V0U2hhcGVEZWZpbml0aW9ucy54bWwuemlwOgogIG9ubHkgYW4geG1sIGZpbGUuIEknZCBhc3Np Z24gdGhpcyB0aGUgZ2VuZXJhbCBsaWNlbnNlLiBKdXN0IG91dCBvZiBjdXJpb3NpdHkgCndoYXQg aXMgdGhpcyBmb3I/ClBST1BPU0FMOiBpZiBnZW5lcmFsIGxpY2Vuc2UgYXBwbGllcywgbm8gZnVy dGhlciBhY3Rpb24uCgpzdGFnZS90ZW1wbGF0ZXMvZXhwb3J0SFRNTC90ZW1wbGF0ZXMvc3RhZ2Uu emlwOgogIFRoaXMgemlwIGNvbnRhaW5zIHNldmVyYWwgcG5nIGZpbGVzIHdoaWNoIGNvcHlyaWdo dCBhbmQgbGljZW5zaW5nIEknZCAKYXBwcmVjaWF0ZSB0byBiZSBjb25maXJtZWQuIEl0IGFsc28g Y29udGFpbnMgYSBjc3Mgd2hlcmUgSSdkIGFzc3VtZSBnZW5lcmFsIApsaWNlbnNlIGFwcGxpZXMg YW5kIGEgbWluaWZpZWQganMgZmlsZSAoc2VlIG5leHQgc2VjdGlvbikKUFJPUE9TQUw6IGlmIGdl bmVyYWwgbGljZW5zZSBhcHBsaWVzIGZvciBwbmcvanBnL2Nzcywgbm8gZnVydGhlciBhY3Rpb24u IFJlYWQgCm5leHQgc2VjdGlvbi4KCk1pbmlmaWVkIGpzIGZpbGVzCj09PT09PT09PT09PT09PT09 CiAgTWluaWZpZWQganMgZmlsZXMgYXJlIGNvbnNpZGVyZWQgY29tcGlsZWQgZmlsZXMgaW4gRGVi aWFuLCBhbmQgcmVxdWlyZSBzb3VyY2UKY29kZSAodGhlIG5vbiBtaW5pZmllZCBqcykgdG8gcHJv ZHVjZSB0aGUgbWluaWZpZWQvY29tcGlsZWQgZmlsZSBvbiBwYWNrYWdlCmJ1aWxkLgoKICBUaGUg b2xkZXN0IGNoYW5nZXNldCB3aGVyZSBJIGNvdWxkIHRyYWNlIApzdGFnZS90ZW1wbGF0ZXMvZXhw b3J0SFRNTC90ZW1wbGF0ZXMvc3RhZ2UuemlwIHdoaWNoIGNvbnRhaW5zIHRoZSBqcy9qcXVlcnkt Cm1pbi5qcyBmaWxlIGlzIHRoaXM6IApodHRwOi8vY29tbWl0cy5rZGUub3JnL2NhbGxpZ3JhLzBk M2MwODUxYWNiZWVjODdjNTQxZDUwYTgwM2IwZWU0OWMxMTFhNTcKCiAgVW5mb3J0dW5hdGVseSwg dGhpcyBpcyBub3QgZW5vdWdoIHRvIGdlbmVyYXRlIHRoZSBtaW5pZmllZCBmaWxlIGZyb20gc291 cmNlLgpQUk9QT1NBTDogcHJvdmlkZWQgbm9uLW1pbmlmaWVkIHNvdXJjZSBhbmQgcHJvY2VkdXJl IHRvIGdlbmVyYXRlIG1pbmlmaWVkIGpzIAoocG9zc2libHkgYXQgYnVpbGQgdGltZSkKCk1vcmUg bWluaWZpZWQgZmlsZXM6CiBrZXhpL3dlYmZvcm1zL3dlYnJvb3QvZXh0anMvZXh0LWFsbC5qcwog a2V4aS93ZWJmb3Jtcy93ZWJyb290L2V4dGpzL2V4dGpzL2FkYXB0ZXIvZXh0L2V4dC1iYXNlLmpz ClBST1BPU0FMMTogcHJvdmlkZWQgbm9uLW1pbmlmaWVkIHNvdXJjZSBhbmQgcHJvY2VkdXJlIHRv IGdlbmVyYXRlIG1pbmlmaWVkIGpzIAoocG9zc2libHkgYXQgYnVpbGQgdGltZSkKUFJPUE9TQUwy OiByZW1vdmUgd2ViZm9ybXMgYXMgYWxyZWFkeSBkb25lIGluIG1hc3Rlci4KCkNvbG9yIHByb2Zp bGVzIChJQ0MsIElDTSkKPT09PT09PT09PT09PT09PT09PQogIFdlJ3JlIGNvbmNlcm5lZCBhYm91 dCBsaWNlbnNlIGZvciB0aGVzZSBwcm9maWxlcy4gSW4gc29tZSBjYXNlcywgbmVpdGhlcgpsaWNl bnNpbmcgbm9yIGNvcHlyaWdodCBpcyBjbGVhci4gTWV0YWRhdGEgaXMgaGVscGZ1bCwgYnV0IG5v dCBlbm91Z2guClB1YmxpYyBkb21haW4gcHJvZmlsZXMgYXJlIG9rLCBidXQgdGhlcmUgbXVzdCBi ZSBhIHdheSB0byB2ZXJpZnkgaXQuIEZvcgppbnN0YW5jZTogZG93bmxvYWQgdXJsIHdoZXJlIHRo ZSBhdXRob3JzaGlwL2xpY2Vuc2UgaXMgc3RhdGVkLgoKICBJZiBjb2xvciBwcm9maWxlcyAoYXMg YmluYXJ5IGZpbGUpIGFyZSBnZW5lcmF0ZWQgZnJvbSBhIGh1bWFuIHJlYWRhYmxlCnNvdXJjZSwg dGhlbiBoYXZpbmcgc291cmNlICh3aXRoIGxpY2Vuc2luZyBpbmZvcm1hdGlvbikgd291bGQgYmUg aGVscGZ1bCBhcwp3ZWxsLgoKICBOb3RlOiBJIHVzZWQgaWNjZHVtcCBmcm9tIGRlYmlhbiBwYWNr YWdlIGFyZ3lsbCB0byBnZXQgcHJvZmlsZSBtZXRhZGF0YS4KKGFyZ3lsbCBwYWNrYWdlIGlzIGh0 dHBzOi8vcGFja2FnZXMuZGViaWFuLm9yZy9zaWQvYXJneWxsICkKCmtyaXRhL2RhdGEvcHJvZmls ZXMvV2lkZUdhbXV0LmljbSAoTm8gY29weXJpZ2h0KQprcml0YS9kYXRhL3Byb2ZpbGVzL3NSR0Iu aWNtIChObyBjb3B5cmlnaHQpClBST1BPU0FMOiB2ZXJpZnkgYXV0aG9yc2hpcCBhbmQgbGljZW5z aW5nIG9mIHRoZXNlIGZpbGVzLgoKa3JpdGEvZGF0YS9wcm9maWxlcy9zY1JHQi5pY20gKMKpIEN5 cmlsbGUgQmVyZ2VyKQogIFZlcmlmaWVkLiBGb3IgaW5zdGFuY2U6IAogIGh0dHA6Ly9jb21taXRz LmtkZS5vcmcvY2FsbGlncmEvZDk3YjdkNmE1ZTQ2YzA1N2Y2NjYwY2Q3NjQwOWIyZWI2Mjk0MzYx MgpQUk9QT1NBTDogSWYgYXNzZXNzbWVudCBpcyBjb3JyZWN0LCBubyBmdXJ0aGVyIGFjdGlvbi4K CmtyaXRhL2RhdGEvcHJvZmlsZXMva3JpdGEyNV9sY21zLWJ1aWx0aW4tc1JHQl9nMTAwLXRydWVn YW1tYS5pY2MgKE5vIGNvcHlyaWdodCwgCnVzZSBmcmVlbHkpCiAgSW5jbHVkZWQgaW4gaHR0cDov L2NvbW1pdHMua2RlLm9yZy9jYWxsaWdyYS9iMGQ4M2JiYjM1YjUgbWVudGlvbmluZyBhbiAKZW1h aWwuIElzIHRoYXQgZW1haWwgcHVibGljPwpQUk9QT1NBTDogdmVyaWZ5IGF1dGhvcnNoaXAgYW5k IGxpY2Vuc2luZyBvZiB0aGlzIGZpbGUuCgpwbHVnaW5zL2NvbG9yZW5naW5lcy9sY21zMi9jb2xv cnByb2ZpbGVzL2RhdGEvZm9ncmEyN2wuaWNtIChwdWJsaWMgZG9tYWluKQogIEFjY29yZGluZyB0 byBtZXRhZGF0YSwgcHJvZmlsZSBpcyBwdWJsaWMgZG9tYWluLCB5ZXQgdGhlIG9yaWdpbiBpcyBu ZWVkZWQgZm9yIAp2ZXJpZmljYXRpb24uCiAgUmVmZXJlbmNlczoKICAtIEFkZGl0aW9uIG9mIHRo ZSBwcm9maWxlIGluIGtvZmZpY2U6CnN2bjovL3N2bi5rZGUub3JnL2hvbWUva2RlL3RydW5rL2tv ZmZpY2UvbGlicy9waWdtZW50L2NvbG9ycHJvZmlsZXMvZGF0YS9mb2dyYTI3bC5pY21AMTA2OTQ1 NwogIC0gUmVuYW1lIG9mIHRoZSBzYW1lIHByb2ZpbGUgaW4gc2NyaWJ1cyAod2hlcmUgaXQgaGFz IGJlZW4gcHJlc3VtYWJseSB0YWtlbikKICAgIHN2bjovL3NjcmlidXMubmV0L3RydW5rL1Njcmli dXNANjc1MApQUk9QT1NBTDE6IHZlcmlmeSBhdXRob3JzaGlwIGFuZCBsaWNlbnNpbmcgb2YgdGhp cyBmaWxlLgpQUk9QT1NBTDI6IGZvZ3JhMjdsIGlzIHN1cGVyc2VkZWQgYnkgZm9ncmEzOWwsIGFj Y29yZGluZyB0byAKaHR0cDovL2FsdHVybC5jb20venR3MzQgKHNob3VsZCB0YWtlIHRvIGZvZ3Jh Lm9yZyB3ZWJzaXRlKS4gVXNpbmcgZm9ncmEzOWwgCndvdWxkIGxlYWQgdG8gdGhlIHNhbWUgc2l0 dWF0aW9uLiBTZWUgYWxzbyBodHRwOi8vd3d3LmNvbG9yLm9yZy9mb2dyYTM5LnhhbHRlcgpQUk9Q T1NBTDM6IHN3aXRjaCB0byBhIHZlcmlmaWVkIGZyZWUgcHJvZmlsZS4KCnBsdWdpbnMvY29sb3Jl bmdpbmVzL2xjbXMyL2NvbG9ycHJvZmlsZXMvZGF0YS9DTVkuaWNtIChjb3B5cmlnaHQgU3VuIApN aWNyb3N5c3RlbXMsIDE5OTYpCiAgVGhpcyBpcyB2ZXJ5IHByb2JsZW1hdGljLiBEZWJpYW4gcGFj a2FnZXMgY2FuJ3Qgc2hpcCB0aGlzIGZpbGUgd2l0aG91dCAKY2xhcmlmeWluZyBsaWNlbnNpbmcg d2hpY2ggSSBjb3VsZG4ndCBmaW5kIGFueXdoZXJlLgogIEFkZGVkIGluIApzdm46Ly9zdm4ua2Rl Lm9yZy9ob21lL2tkZS90cnVuay9rb2ZmaWNlL2tyaXRhL2RhdGEvcHJvZmlsZXMvQ01ZLmljbUAz NjU4MDEKUFJPUE9TQUwxOiB2ZXJpZnkgYXV0aG9yc2hpcCBhbmQgbGljZW5zaW5nIG9mIHRoaXMg ZmlsZS4KUFJPUE9TQUwyOiBzd2l0Y2ggdG8gYSB2ZXJpZmllZCBmcmVlIHByb2ZpbGUuIEhlcmUg aXMgYSBwdWJsaWMgZG9tYWluLCBnZW5lcmljIApDTVlLOgogICAgICAgaHR0cDovL3d3dy5hcmd5 bGxjbXMuY29tL2NteWsuaWNtIChzZWUgYWxzbyAKaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL2xj bXMvbWFpbG1hbi9tZXNzYWdlLzMyNzU1ODg0LyApCgpKYXZhIGphciBmaWxlcwo9PT09PT09PT09 PT09PQpqYXIgZmlsZXMgYXJlIGJpbmFyeSBmaWxlcywgYXMgc3VjaCwgaW4gRGViaWFuIHdlIG5l ZWQgdGhlIHNvdXJjZSBjb2RlIG9mIHRob3NlIApmaWxlcyBhbmQgZ2VuZXJhdGUgdGhlbSBvbiBw YWNrYWdlIGJ1aWxkIChvciByZW1vdmluZyB0aGUgZmlsZXMgZnJvbSB0aGUgdGFyYmFsbCAKYW5k IGFkZGluZyBkZXBlbmRlbmNpZXMgb24gdGhlIHBhY2thZ2VzIHRoYXQgcHJvdmlkZSB0aGVzZSBm aWxlcykuCgpJbiB0aGUgamFyIGNhc2UsIHRoZXJlIGFyZSBzb21lIHBvaW50ZXJzIG9uIHdoZXJl IHRoZSBqYXIgY29tZXMgZnJvbSwgYnV0IApzdGlsbCBidW5kbGluZyBhIGdlbmVyYXRlZCBiaW5h cnkgaXMgbm90IGRlc2lyYWJsZS4KClRoZSBmaXhlcyBmb3IgdGhhdCBmcm9tIHRoZSBsaWNlbnNp bmcgcG9pbnQgb2YgdmlldyBhcmU6Ci0gUmVtb3ZpbmcgdGhlIGZlYXR1cmUKLSBJZiB0aGUgamFy IGdlbmVyYXRlcyBjb2RlIG5lZWRlZCBhdCBidWlsZCB0aW1lLCBhZGRpbmcgdGhlIHJlcXVpcmVk IChzb3VyY2UpIApmaWxlcyB3aGljaCBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIGphci4gQnV0IG5v dCB0aGUgamFyLiBBbHNvIGluY2x1ZGUgYSBzY3JpcHQgCm9yIGRvY3VtZW50IGEgcHJvY2VkdXJl IGhvdyB0byBnZXQgdGhvc2UgZmlsZXMuCi0gSWYgdGhlIGphciBpcyByZXF1aXJlZCBhcyBhIHJ1 bnRpbWUgZGVwZW5kZW5jeSwgeW91IGNvdWxkIGVpdGhlciBhZGQgYSBydW4gCnRpbWUgZGVwZW5k ZW5jeSBvbiBhIHNlcGFyYXRlIHBhY2thZ2UgcHJvdmlkaW5nIHRoYXQgamFyIG9yIGdlbmVyYXRl IHRoZSBqYXIgCmF0IGJ1aWxkIHRpbWUuCgpmaWx0ZXJzL2xpYm1zby9nZW5lcmF0ZWQvbXNvLmph cgogIEFzIHBlciBSRUFETUUgaW4gdGhhdCBkaXJlY3RvcnkgdGhpcyBqYXIgZ2VuZXJhdGVzIHNv bWUgY29kZSB0aGF0J3MgdXNlZCAKbGF0ZXIuClBST1BPU0FMOiBEZXNjcmliZSAob3Igc2NyaXB0 KSB0aGUgcHJvY2VkdXJlIHRvIGdlbmVyYXRlIHRoZSBjb2RlIGFuZCByZW1vdmUgCnRoZSBqYXIg ZmlsZS4KCmZpbHRlcnMvcGxhbi9tcHhqL3BsYW5jb252ZXJ0L2phci9QbGFuQ29udmVydC5qYXIK ICBUaGUgZmVhdHVyZSBsb29rcyBnb29kLCBidXQgbWF5YmUgc2luY2UgdGhlcmUncyBhbHJlYWR5 IGEgY21ha2Ugc3dpdGNoIHRvCmVuYWJsZSBpdCB0aGUgamF2YSBwYXJ0IGNvdWxkIGJlIGEgc2Vw YXJhdGVkIGRlcGVuZGVuY3kgcmF0aGVyIHRoYXQKaW5jbHVkZWQgaW4gY2FsbGlncmEgaXRzZWxm LiBGb3IgaW5zdGFuY2U6IHByb3ZpZGluZyBhIHNlcGFyYXRlIHBhY2thZ2UgZm9yCm1weCBjb252 ZXJzaW9uIHdoaWNoIGNhbGxpZ3JhKHBsYW4pIHdvdWxkIGludm9rZSBpZiBmZWF0dXJlIGlzIGVu YWJsZWQuClBST1BPU0FMMTogYnVuZGxpbmcgc291cmNlIGphdmEgZmlsZXMgYW5kIGJ1aWxkIGph cgpQUk9QT1NBTDI6IGRlcGVuZCBvbiBleHRlcm5hbCBwYWNrYWdlLgoKQmluYXJpZXMKPT09PT09 PT09ClRoZXNlIGFyZSBiaW5hcnkgZmlsZXMgd2hpY2ggc2hvdWxkIGJlIGF2b2lkZWQgaW4gYW4g dXBzdHJlYW0gdGFyYmFsbCBpZgpwb3NzaWJsZS4KM3JkcGFydHkvZ29vZ2xlLWJyZWFrcGFkL3Ny Yy9jbGllbnQvbWFjL2djb3YvbGliZ2Nvdi5hCjNyZHBhcnR5L2dvb2dsZS1icmVha3BhZC9zcmMv dGhpcmRfcGFydHkvbGludXgvbGliL2dsb2cvbGliZ2xvZy5hCjNyZHBhcnR5L2dvb2dsZS1icmVh a3BhZC9zcmMvdGhpcmRfcGFydHkvbGludXgvbGliL2dmbGFncy9saWJnZmxhZ3MuYQozcmRwYXJ0 eS9nb29nbGUtYnJlYWtwYWQvc3JjL3Rvb2xzL3dpbmRvd3MvYmluYXJpZXMvc3ltdXBsb2FkLmV4 ZQozcmRwYXJ0eS9nb29nbGUtYnJlYWtwYWQvc3JjL3Rvb2xzL3dpbmRvd3MvYmluYXJpZXMvZHVt cF9zeW1zLmV4ZQpQUk9QT1NBTDogcmVtb3ZlIHRoZXNlIGZpbGVzLgoKICBXaGF0IGRvIHlvdSB0 aGluaz8KCiAgT24gdGhlc2UgbGljZW5zaW5nIGNvbmZsaWN0cywgRGViaWFuIG1haW50YWluZXJz IG9mIENhbGxpZ3JhIGRlY2lkZWQgdG8gCnJlcGFjayB0aGUgdmFuaWxsYSB0YXJiYWxsLCBzdHJp cHBpbmcgdGhlIGNvbmZsaWN0aW5nIGZpbGVzLiBUaGlzIGlzIHN1Ym9wdGltYWwgCmFzIHdlbGwg YW5kIHJlcXVpcmVzIG1vcmUgdGltZSBmcm9tIG1haW50YWluZXJzIGluIG9yZGVyIHRvIGNoZWNr IHRoYXQgCkNhbGxpZ3JhIHN0aWxsIHdvcmtzIHByb3Blcmx5IGFuZCB3b3JrYXJvdW5kIHBvc3Np YmxlIHByb2JsZW1zLiBUaGlzIGhhdmUgYmVlbiAKZG9uZSBpbiBvcmRlciBub3QgdG8gbG9vc2Ug dGhlIGNoYW5jZSBDYWxsaWdyYSBpcyBpbiB0aGUgbWFpbiBzZWN0aW9uLCB3aGVyZSAKRGViaWFu IGZyZWUgc29mdHdhcmUgZ3VpZGVsaW5lcyBjb21wbGlhbnQgcGFja2FnZXMgbGl2ZS4KCiAgVGhy b3VnaG91dCB0aGlzIG1haWwsIHRoZXJlIGhhdmUgYmVlbiBzb21lIHByb3Bvc2Fscy4gSSdtIHdp bGxpbmcgdG8gcHJvdmlkZSAKYW5kIHJldmlldyBwYXRjaGVzIGZpeGluZyB0aGUgaXNzdWVzIGlm IHlvdSBhcmUgb2sgd2l0aCB0aGUgcHJvcG9zYWxzLgoKICBJZiB0aGVzZSBhbGwgaXNzdWVzIGFy ZSBhZGRyZXNzZWQsIGNhbGxpZ3JhIHdpbGwgc3RheSBpbiB0aGUgZGViaWFuIG1haW4gCnNlY3Rp b24gYXMgaXQgaXMgbm93IGFuZCB3ZSBhbGwgd291bGQgYmUgcHJvYmFibHkgaGFwcGllciA6KQoK ICBMYXN0IGJ1dCBub3QgbGVhc3QsIHRoYW5rcyB0byBNYXhpbWlsaWFubyBDdXJpYSB3aG8gaGVs cGVkIGEgbG90IHJldmlld2luZyAKYW5kIGNvbW1lbnRpbmcgb24gdGhpcyBlbWFpbC4KCiAgUGQ6 IFBsZWFzZSwgQ0MgbWUgb24gYW5zd2Vycy4KCiAgUmVnYXJkcywKCi0tIAogICAgIFJhw7psIFPD oW5jaGV6IFNpbGVzCi0tLS0tPlByb3VkIERlYmlhbiB1c2VyPC0tLS0tCkxpbnV4IHJlZ2lzdGVy ZWQgdXNlciAjNDE2MDk4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmNhbGxpZ3JhLWRldmVsIG1haWxpbmcgbGlzdApjYWxsaWdyYS1kZXZlbEBrZGUub3Jn Cmh0dHBzOi8vbWFpbC5rZGUub3JnL21haWxtYW4vbGlzdGluZm8vY2FsbGlncmEtZGV2ZWwK