ICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5IGhvdy10bwogICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuOQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGx5IHRhcnJlYXUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTgvMTIvMDgKCgoxKSBIb3cgdG8gYnVpbGQgaXQKLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGlzIGEgZGV2ZWxvcG1lbnQgdmVyc2lvbiwgc28gaXQgaXMgZXhwZWN0ZWQgdG8gYnJlYWsgZnJvbSB0aW1lIHRvIHRpbWUsCnRvIGFkZCBhbmQgcmVtb3ZlIGZlYXR1cmVzIHdpdGhvdXQgcHJpb3Igbm90aWZpY2F0aW9uIGFuZCBpdCBzaG91bGQgbm90IGJlIHVzZWQKaW4gcHJvZHVjdGlvbi4gSWYgeW91IGFyZSBub3QgdXNlZCB0byBidWlsZCBmcm9tIHNvdXJjZXMgb3IgaWYgeW91IGFyZSBub3QgdXNlZAp0byBmb2xsb3cgdXBkYXRlcyB0aGVuIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgaW5zdGVhZCB5b3UgdXNlIHRoZSBwYWNrYWdlcyBwcm92aWRlZApieSB5b3VyIHNvZnR3YXJlIHZlbmRvciBvciBMaW51eCBkaXN0cmlidXRpb24uIE1vc3Qgb2YgdGhlbSBhcmUgdGFraW5nIHRoaXMgdGFzawpzZXJpb3VzbHkgYW5kIGFyZSBkb2luZyBhIGdvb2Qgam9iIGF0IGJhY2twb3J0aW5nIGltcG9ydGFudCBmaXhlcy4gSWYgZm9yIGFueQpyZWFzb24geW91J2QgcHJlZmVyIGEgZGlmZmVyZW50IHZlcnNpb24gdGhhbiB0aGUgb25lIHBhY2thZ2VkIGZvciB5b3VyIHN5c3RlbSwKeW91IHdhbnQgdG8gYmUgY2VydGFpbiB0byBoYXZlIGFsbCB0aGUgZml4ZXMgb3IgdG8gZ2V0IHNvbWUgY29tbWVyY2lhbCBzdXBwb3J0LApvdGhlciBjaG9pY2VzIGFyZSBhdmFpbGFibGUgYXQgOgoKICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5oYXByb3h5LmNvbS8KClRvIGJ1aWxkIGhhcHJveHksIHlvdSB3aWxsIG5lZWQgOgogIC0gR05VIG1ha2UuIE5laXRoZXIgU29sYXJpcyBub3IgT3BlbkJTRCdzIG1ha2Ugd29yayB3aXRoIHRoZSBHTlUgTWFrZWZpbGUuCiAgICBJZiB5b3UgZ2V0IG1hbnkgc3ludGF4IGVycm9ycyB3aGVuIHJ1bm5pbmcgIm1ha2UiLCB5b3UgbWF5IHdhbnQgdG8gcmV0cnkKICAgIHdpdGggImdtYWtlIiB3aGljaCBpcyB0aGUgbmFtZSBjb21tb25seSB1c2VkIGZvciBHTlUgbWFrZSBvbiBCU0Qgc3lzdGVtcy4KICAtIEdDQyBiZXR3ZWVuIDIuOTUgYW5kIDguMS4gT3RoZXJzIG1heSB3b3JrLCBidXQgbm90IHRlc3RlZC4KICAtIEdOVSBsZAoKQWxzbywgeW91IG1pZ2h0IHdhbnQgdG8gYnVpbGQgd2l0aCBsaWJwY3JlIHN1cHBvcnQsIHdoaWNoIHdpbGwgcHJvdmlkZSBhIHZlcnkKZWZmaWNpZW50IHJlZ2V4IGltcGxlbWVudGF0aW9uIGFuZCB3aWxsIGFsc28gZml4IHNvbWUgYmFkbmVzcyBvbiBTb2xhcmlzJyBvbmUuCgpUbyBidWlsZCBoYXByb3h5LCB5b3UgaGF2ZSB0byBjaG9vc2UgeW91ciB0YXJnZXQgT1MgYW1vbmdzdCB0aGUgZm9sbG93aW5nIG9uZXMKYW5kIGFzc2lnbiBpdCB0byB0aGUgVEFSR0VUIHZhcmlhYmxlIDoKCiAgLSBsaW51eDIyICAgICBmb3IgTGludXggMi4yCiAgLSBsaW51eDI0ICAgICBmb3IgTGludXggMi40IGFuZCBhYm92ZSAoZGVmYXVsdCkKICAtIGxpbnV4MjRlICAgIGZvciBMaW51eCAyLjQgd2l0aCBzdXBwb3J0IGZvciBhIHdvcmtpbmcgZXBvbGwgKD4gMC4yMSkKICAtIGxpbnV4MjYgICAgIGZvciBMaW51eCAyLjYgYW5kIGFib3ZlCiAgLSBsaW51eDI2MjggICBmb3IgTGludXggMi42LjI4LCAzLngsIGFuZCBhYm92ZSAoZW5hYmxlcyBzcGxpY2UgYW5kIHRwcm94eSkKICAtIHNvbGFyaXMgICAgIGZvciBTb2xhcmlzIDggb3IgMTAgKG90aGVycyB1bnRlc3RlZCkKICAtIGZyZWVic2QgICAgIGZvciBGcmVlQlNEIDUgdG8gMTIgKG90aGVycyB1bnRlc3RlZCkKICAtIG5ldGJzZCAgICAgIGZvciBOZXRCU0QKICAtIG9zeCAgICAgICAgIGZvciBNYWMgT1MvWAogIC0gb3BlbmJzZCAgICAgZm9yIE9wZW5CU0QgNS43IGFuZCBhYm92ZQogIC0gYWl4NTEgICAgICAgZm9yIEFJWCA1LjEKICAtIGFpeDUyICAgICAgIGZvciBBSVggNS4yCiAgLSBjeWd3aW4gICAgICBmb3IgQ3lnd2luCiAgLSBoYWlrdSAgICAgICBmb3IgSGFpa3UKICAtIGdlbmVyaWMgICAgIGZvciBhbnkgb3RoZXIgT1Mgb3IgdmVyc2lvbi4KICAtIGN1c3RvbSAgICAgIHRvIG1hbnVhbGx5IGFkanVzdCBldmVyeSBzZXR0aW5nCgpZb3UgbWF5IGFsc28gY2hvb3NlIHlvdXIgQ1BVIHRvIGJlbmVmaXQgZnJvbSBzb21lIG9wdGltaXphdGlvbnMuIFRoaXMgaXMKcGFydGljdWxhcmx5IGltcG9ydGFudCBvbiBVbHRyYVNwYXJjIG1hY2hpbmVzLiBGb3IgdGhpcywgeW91IGNhbiBhc3NpZ24Kb25lIG9mIHRoZSBmb2xsb3dpbmcgY2hvaWNlcyB0byB0aGUgQ1BVIHZhcmlhYmxlIDoKCiAgLSBpNjg2IGZvciBpbnRlbCBQZW50aXVtUHJvLCBQZW50aXVtIDIgYW5kIGFib3ZlLCBBTUQgQXRobG9uCiAgLSBpNTg2IGZvciBpbnRlbCBQZW50aXVtLCBBTUQgSzYsIFZJQSBDMy4KICAtIHVsdHJhc3BhcmMgOiBTdW4gVWx0cmFTcGFyYyBJL0lJL0lJSS9JViBwcm9jZXNzb3IKICAtIG5hdGl2ZSA6IHVzZSB0aGUgYnVpbGQgbWFjaGluZSdzIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zLiBVc2Ugd2l0aAogICAgZXh0cmVtZSBjYXJlLCBhbmQgbmV2ZXIgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChrbm93biB0byBicmVhaykuCiAgLSBnZW5lcmljIDogYW55IG90aGVyIHByb2Nlc3NvciBvciBubyBDUFUtc3BlY2lmaWMgb3B0aW1pemF0aW9uLiAoZGVmYXVsdCkKCkFsdGVybmF0aXZlbHksIHlvdSBtYXkganVzdCBzZXQgdGhlIENQVV9DRkxBR1MgdmFsdWUgdG8gdGhlIG9wdGltYWwgR0NDIG9wdGlvbnMKZm9yIHlvdXIgcGxhdGZvcm0uCgpCeSBkZWZhdWx0IHRoZSBidWlsZCBwcm9jZXNzIHJ1bnMgaW4gcXVpZXQgbW9kZSBhbmQgaGlkZSB0aGUgZGV0YWlscyBvZiB0aGUKY29tbWFuZHMgdGhhdCBhcmUgZXhlY3V0ZWQuIFRoaXMgYWxsb3dzIHRvIG1vcmUgZWFzaWx5IGNhdGNoIGJ1aWxkIHdhcm5pbmdzCmFuZCBzZWUgd2hhdCBpcyBoYXBwZW5pbmcuIEhvd2V2ZXIgaXQgaXMgbm90IGNvbnZlbmllbnQgYXQgYWxsIHRvIG9ic2VydmUgd2hhdApmbGFncyBhcmUgcGFzc2VkIHRvIHRoZSBjb21waWxlciBub3Igd2hhdCBjb21waWxlciBpcyBpbnZvbHZlZC4gU2ltcGx5IGFwcGVuZAoiVj0xIiB0byB0aGUgIm1ha2UiIGNvbW1hbmQgbGluZSB0byBzd2l0Y2ggdG8gdmVyYm9zZSBtb2RlIGFuZCBkaXNwbGF5IHRoZQpkZXRhaWxzIGFnYWluLgoKWW91IG1heSB3YW50IHRvIGJ1aWxkIHNwZWNpZmljIHRhcmdldCBiaW5hcmllcyB3aGljaCBkbyBub3QgbWF0Y2ggeW91ciBuYXRpdmUKY29tcGlsZXIncyB0YXJnZXQuIFRoaXMgaXMgcGFydGljdWxhcmx5IHRydWUgb24gNjQtYml0IHN5c3RlbXMgd2hlbiB5b3Ugd2FudAp0byBidWlsZCBhIDMyLWJpdCBiaW5hcnkuIFVzZSB0aGUgQVJDSCB2YXJpYWJsZSBmb3IgdGhpcyBwdXJwb3NlLiBSaWdodCBub3cKaXQgb25seSBrbm93cyBhYm91dCBhIGZldyB4ODYgdmFyaWFudHMgKGkzODYsaTQ4NixpNTg2LGk2ODYseDg2XzY0KSwgdHdvCmdlbmVyaWMgb25lcyAoMzIsNjQpIGFuZCBzZXRzIC1tMzIvLW02NCBhcyB3ZWxsIGFzIC1tYXJjaD08YXJjaD4gYWNjb3JkaW5nbHkuCgpJZiB5b3VyIHN5c3RlbSBzdXBwb3J0cyBQQ1JFIChQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyksIHRoZW4geW91CnJlYWxseSBzaG91bGQgYnVpbGQgd2l0aCBsaWJwY3JlIHdoaWNoIGlzIGJldHdlZW4gMiBhbmQgMTAgdGltZXMgZmFzdGVyIHRoYW4Kb3RoZXIgbGliYyBpbXBsZW1lbnRhdGlvbnMuIFJlZ2V4IGFyZSB1c2VkIGZvciBoZWFkZXIgcHJvY2Vzc2luZyAoZGVsZXRpb24sCnJld3JpdGluZywgYWxsb3csIGRlbnkpLiBUaGUgb25seSBpbmNvbnZlbmllbnQgb2YgbGlicGNyZSBpcyB0aGF0IGl0IGlzIG5vdAp5ZXQgd2lkZWx5IHNwcmVhZCwgc28gaWYgeW91IGJ1aWxkIGZvciBvdGhlciBzeXN0ZW1zLCB5b3UgbWlnaHQgZ2V0IGludG8KdHJvdWJsZSBpZiB0aGV5IGRvbid0IGhhdmUgdGhlIGR5bmFtaWMgbGlicmFyeS4gSW4gdGhpcyBzaXR1YXRpb24sIHlvdSBzaG91bGQKc3RhdGljYWxseSBsaW5rIGxpYnBjcmUgaW50byBoYXByb3h5IHNvIHRoYXQgaXQgd2lsbCBub3QgYmUgbmVjZXNzYXJ5IHRvCmluc3RhbGwgaXQgb24gdGFyZ2V0IHN5c3RlbXMuIEF2YWlsYWJsZSBidWlsZCBvcHRpb25zIGZvciBQQ1JFIGFyZSA6CgogIC0gVVNFX1BDUkU9MSB0byB1c2UgbGlicGNyZSwgaW4gd2hhdGV2ZXIgZm9ybSBpcyBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0KICAgIChzaGFyZWQgb3Igc3RhdGljKQoKICAtIFVTRV9TVEFUSUNfUENSRT0xIHRvIHVzZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGxpYnBjcmUgZXZlbiBpZiB0aGUgZHluYW1pYwogICAgb25lIGlzIGF2YWlsYWJsZS4gVGhpcyB3aWxsIGVuaGFuY2UgcG9ydGFiaWxpdHkuCgogIC0gd2l0aCBubyBvcHRpb24sIHVzZSB5b3VyIE9TIGxpYmMncyBzdGFuZGFyZCByZWdleCBpbXBsZW1lbnRhdGlvbiAoZGVmYXVsdCkuCiAgICBXYXJuaW5nISBncm91cCByZWZlcmVuY2VzIG9uIFNvbGFyaXMgc2VlbSBicm9rZW4uIFVzZSBzdGF0aWMtcGNyZSB3aGVuZXZlcgogICAgcG9zc2libGUuCgpJZiB5b3VyIHN5c3RlbSBkb2Vzbid0IHByb3ZpZGUgUENSRSwgeW91IGFyZSBlbmNvdXJhZ2VkIHRvIGRvd25sb2FkIGl0IGZyb20KaHR0cDovL3d3dy5wY3JlLm9yZy8gYW5kIGJ1aWxkIGl0IHlvdXJzZWxmLCBpdCdzIGZhc3QgYW5kIGVhc3kuCgpSZWNlbnQgc3lzdGVtcyBjYW4gcmVzb2x2ZSBJUHY2IGhvc3QgbmFtZXMgdXNpbmcgZ2V0YWRkcmluZm8oKS4gVGhpcyBwcmltaXRpdmUKaXMgbm90IHByZXNlbnQgaW4gYWxsIGxpYmNzIGFuZCBkb2VzIG5vdCB3b3JrIGluIGFsbCBvZiB0aGVtIGVpdGhlci4gU3VwcG9ydCBpbgpnbGliYyB3YXMgYnJva2VuIGJlZm9yZSAyLjMuIFNvbWUgZW1iZWRkZWQgbGlicyBtYXkgbm90IHByb3Blcmx5IHdvcmsgZWl0aGVyLAp0aHVzLCBzdXBwb3J0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIG1lYW5pbmcgdGhhdCBzb21lIGhvc3QgbmFtZXMgd2hpY2ggb25seQpyZXNvbHZlIGFzIElQdjYgYWRkcmVzc2VzIHdpbGwgbm90IHJlc29sdmUgYW5kIGNvbmZpZ3MgbWlnaHQgZW1pdCBhbiBlcnJvcgpkdXJpbmcgcGFyc2luZy4gSWYgeW91IGtub3cgdGhhdCB5b3VyIE9TIGxpYmMgaGFzIHJlbGlhYmxlIHN1cHBvcnQgZm9yCmdldGFkZHJpbmZvKCksIHlvdSBjYW4gYWRkIFVTRV9HRVRBRERSSU5GTz0xIG9uIHRoZSBtYWtlIGNvbW1hbmQgbGluZSB0byBlbmFibGUKaXQuIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIG9wdGlvbiBmb3IgbW9zdCBMaW51eCBkaXN0cm8gcGFja2FnZXJzIHNpbmNlIGl0J3MKd29ya2luZyBmaW5lIG9uIGFsbCByZWNlbnQgbWFpbnN0cmVhbSBkaXN0cm9zLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgb24KU29sYXJpcyA4IGFuZCBhYm92ZSwgYXMgaXQncyBrbm93biB0byB3b3JrLgoKSXQgaXMgcG9zc2libGUgdG8gYWRkIG5hdGl2ZSBzdXBwb3J0IGZvciBTU0wgdXNpbmcgdGhlIEdOVSBtYWtlZmlsZSwgYnkgcGFzc2luZwoiVVNFX09QRU5TU0w9MSIgb24gdGhlIG1ha2UgY29tbWFuZCBsaW5lLiBUaGUgbGlic3NsIGFuZCBsaWJjcnlwdG8gd2lsbAphdXRvbWF0aWNhbGx5IGJlIGxpbmtlZCB3aXRoIGhhcHJveHkuIFNvbWUgc3lzdGVtcyBhbHNvIHJlcXVpcmUgbGlieiwgc28gaWYgdGhlCmJ1aWxkIGZhaWxzIGR1ZSB0byBtaXNzaW5nIHN5bWJvbHMgc3VjaCBhcyBkZWZsYXRlSW5pdCgpLCB0aGVuIHRyeSBhZ2FpbiB3aXRoCiJBRERMSUI9LWx6Ii4KCllvdXIgYXJlIHN0cm9uZ2x5IGVuY291cmFnZWQgdG8gYWx3YXlzIHVzZSBhbiB1cC10by1kYXRlIHZlcnNpb24gb2YgT3BlblNTTCwgYXMKZm91bmQgb24gaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvIGFzIHZ1bG5lcmFiaWxpdGllcyBhcmUgb2NjYXNpb25hbGx5IGZvdW5kIGFuZAp5b3UgZG9uJ3Qgd2FudCB0aGVtIG9uIHlvdXIgc3lzdGVtcy4gSEFQcm94eSBpcyBrbm93biB0byBidWlsZCBjb3JyZWN0bHkgb24gYWxsCmN1cnJlbnRseSBzdXBwb3J0ZWQgYnJhbmNoZXMgKDAuOS44LCAxLjAuMCwgMS4wLjEsIDEuMC4yIGFuZCAxLjEuMCBhdCB0aGUgdGltZQpvZiB3cml0aW5nKS4gQnJhbmNoIDEuMC4yIGlzIGN1cnJlbnRseSByZWNvbW1lbmRlZCBmb3IgdGhlIGJlc3QgY29tYmluYXRpb24gb2YKZmVhdHVyZXMgYW5kIHN0YWJpbGl0eS4gQXN5bmNocm9ub3VzIGVuZ2luZXMgcmVxdWlyZSBPcGVuU1NMIDEuMS4wIHRob3VnaC4gSXQncwp3b3J0aCBtZW50aW9uaW5nIHRoYXQgc29tZSBPcGVuU1NMIGRlcml2YXRpdmVzIGFyZSBhbHNvIHJlcG9ydGVkIHRvIHdvcmsgYnV0Cm1heSBvY2Nhc2lvbmFsbHkgYnJlYWsuIFBhdGNoZXMgdG8gZml4IHRoZW0gYXJlIHdlbGNvbWUgYnV0IHBsZWFzZSByZWFkIHRoZQpDT05UUklCVVRJTkcgZmlsZSBmaXJzdC4KClRvIGxpbmsgT3BlblNTTCBzdGF0aWNhbGx5IGFnYWluc3QgaGFwcm94eSwgYnVpbGQgT3BlblNTTCB3aXRoIHRoZSBuby1zaGFyZWQKa2V5d29yZCBhbmQgaW5zdGFsbCBpdCB0byBhIGxvY2FsIGRpcmVjdG9yeSwgc28geW91ciBzeXN0ZW0gaXMgbm90IGFmZmVjdGVkIDoKCiAgICAkIGV4cG9ydCBTVEFUSUNMSUJTU0w9L3RtcC9zdGF0aWNsaWJzc2wKICAgICQgLi9jb25maWcgLS1wcmVmaXg9JFNUQVRJQ0xJQlNTTCBuby1zaGFyZWQKICAgICQgbWFrZSAmJiBtYWtlIGluc3RhbGxfc3cKCldoZW4gYnVpbGRpbmcgaGFwcm94eSwgcGFzcyB0aGF0IHBhdGggdmlhIFNTTF9JTkMgYW5kIFNTTF9MSUIgdG8gbWFrZSBhbmQKaW5jbHVkZSBhZGRpdGlvbmFsIGxpYnMgd2l0aCBBRERMSUIgaWYgbmVlZGVkIChpbiB0aGlzIGNhc2UgZm9yIGV4YW1wbGUgbGliZGwpOgoKICAgICQgbWFrZSBUQVJHRVQ9bGludXgyNiBVU0VfT1BFTlNTTD0xIFNTTF9JTkM9JFNUQVRJQ0xJQlNTTC9pbmNsdWRlIFNTTF9MSUI9JFNUQVRJQ0xJQlNTTC9saWIgQURETElCPS1sZGwKCkl0IGlzIGFsc28gcG9zc2libGUgdG8gaW5jbHVkZSBuYXRpdmUgc3VwcG9ydCBmb3IgemxpYiB0byBiZW5lZml0IGZyb20gSFRUUApjb21wcmVzc2lvbi4gRm9yIHRoaXMsIHBhc3MgIlVTRV9aTElCPTEiIG9uIHRoZSAibWFrZSIgY29tbWFuZCBsaW5lIGFuZCBlbnN1cmUKdGhhdCB6bGliIGlzIHByZXNlbnQgb24gdGhlIHN5c3RlbS4gQWx0ZXJuYXRpdmVseSBpdCBpcyBwb3NzaWJsZSB0byB1c2UgbGlic2x6CmZvciBhIGZhc3RlciwgbWVtb3J5IGxlc3MsIGJ1dCBzbGlnaHRseSBsZXNzIGVmZmljaWVudCBjb21wcmVzc2lvbiwgYnkgcGFzc2luZwoiVVNFX1NMWj0xIi4KClpsaWIgaXMgY29tbW9ubHkgZm91bmQgb24gbW9zdCBzeXN0ZW1zLCBvdGhlcndpc2UgdXBkYXRlcyBjYW4gYmUgcmV0cmlldmVkIGZyb20KaHR0cDovL3d3dy56bGliLm5ldC8uIEl0IGlzIGVhc3kgYW5kIGZhc3QgdG8gYnVpbGQuIExpYnNseiBjYW4gYmUgZG93bmxvYWRlZApmcm9tIGh0dHA6Ly8xd3QuZXUvcHJvamVjdHMvbGlic2x6LyBhbmQgaXMgZXZlbiBlYXNpZXIgdG8gYnVpbGQuCgpCeSBkZWZhdWx0LCB0aGUgREVCVUcgdmFyaWFibGUgaXMgc2V0IHRvICctZycgdG8gZW5hYmxlIGRlYnVnIHN5bWJvbHMuIEl0IGlzCm5vdCB3aXNlIHRvIGRpc2FibGUgaXQgb24gdW5jb21tb24gc3lzdGVtcywgYmVjYXVzZSBpdCdzIG9mdGVuIHRoZSBvbmx5IHdheSB0bwpnZXQgYSBjb21wbGV0ZSBjb3JlIHdoZW4geW91IG5lZWQgb25lLiBPdGhlcndpc2UsIHlvdSBjYW4gc2V0IERFQlVHIHRvICctcycgdG8Kc3RyaXAgdGhlIGJpbmFyeS4KCkZvciBleGFtcGxlLCBJIHVzZSB0aGlzIHRvIGJ1aWxkIGZvciBTb2xhcmlzIDggOgoKICAgICQgbWFrZSBUQVJHRVQ9c29sYXJpcyBDUFU9dWx0cmFzcGFyYyBVU0VfU1RBVElDX1BDUkU9MQoKQW5kIEkgYnVpbGQgaXQgdGhpcyB3YXkgb24gT3BlbkJTRCBvciBGcmVlQlNEIDoKCiAgICAkIGdtYWtlIFRBUkdFVD1mcmVlYnNkIFVTRV9QQ1JFPTEgVVNFX09QRU5TU0w9MSBVU0VfWkxJQj0xCgpBbmQgb24gYSBjbGFzc2ljIExpbnV4IHdpdGggU1NMIGFuZCBaTElCIHN1cHBvcnQgKGVnOiBSZWQgSGF0IDUueCkgOgoKICAgICQgbWFrZSBUQVJHRVQ9bGludXgyNiBVU0VfUENSRT0xIFVTRV9PUEVOU1NMPTEgVVNFX1pMSUI9MQoKQW5kIG9uIGEgcmVjZW50IExpbnV4ID49IDIuNi4yOCB3aXRoIFNTTCBhbmQgWkxJQiBzdXBwb3J0IDoKCiAgICAkIG1ha2UgVEFSR0VUPWxpbnV4MjYyOCBVU0VfUENSRT0xIFVTRV9PUEVOU1NMPTEgVVNFX1pMSUI9MQoKSW4gb3JkZXIgdG8gYnVpbGQgYSAzMi1iaXQgYmluYXJ5IG9uIGFuIHg4Nl82NCBMaW51eCBzeXN0ZW0gd2l0aCBTU0wgc3VwcG9ydAp3aXRob3V0IHN1cHBvcnQgZm9yIGNvbXByZXNzaW9uIGJ1dCB3aGVuIE9wZW5TU0wgcmVxdWlyZXMgWkxJQiBhbnl3YXkgOgoKICAgICQgbWFrZSBUQVJHRVQ9bGludXgyNiBBUkNIPWkzODYgVVNFX09QRU5TU0w9MSBBRERMSUI9LWx6CgpUaGUgU1NMIHN0YWNrIHN1cHBvcnRzIHNlc3Npb24gY2FjaGUgc3luY2hyb25pemF0aW9uIGJldHdlZW4gYWxsIHJ1bm5pbmcKcHJvY2Vzc2VzLiBUaGlzIGludm9sdmVzIHNvbWUgYXRvbWljIG9wZXJhdGlvbnMgYW5kIHN5bmNocm9uaXphdGlvbiBvcGVyYXRpb25zCndoaWNoIGNvbWUgaW4gbXVsdGlwbGUgZmxhdm9ycyBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBhbmQgYXJjaGl0ZWN0dXJlIDoKCiAgQXRvbWljIG9wZXJhdGlvbnMgOgogICAgLSBpbnRlcm5hbCBhc3NlbWJsZXIgdmVyc2lvbnMgZm9yIHg4Ni94ODZfNjQgYXJjaGl0ZWN0dXJlcwoKICAgIC0gZ2NjIGJ1aWx0aW5zIGZvciBvdGhlciBhcmNoaXRlY3R1cmVzLiBTb21lIGFyY2hpdGVjdHVyZXMgbWlnaHQgbm90CiAgICAgIGJlIGZ1bGx5IHN1cHBvcnRlZCBvciBtaWdodCByZXF1aXJlIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBnY2MuCiAgICAgIElmIHlvdXIgYXJjaGl0ZWN0dXJlIGlzIG5vdCBzdXBwb3J0ZWQsIHlvdSB3aWxseSBoYXZlIHRvIGVpdGhlciB1c2UKICAgICAgcHRocmVhZCBpZiBzdXBwb3J0ZWQsIG9yIHRvIGRpc2FibGUgdGhlIHNoYXJlZCBjYWNoZS4KCiAgICAtIHB0aHJlYWQgKHBvc2l4IHRocmVhZHMpLiBQdGhyZWFkcyBhcmUgdmVyeSBjb21tb24gYnV0IGludGVyLXByb2Nlc3MKICAgICAgc3VwcG9ydCBpcyBub3QgdGhhdCBjb21tb24sIGFuZCBzb21lIG9sZGVyIG9wZXJhdGluZyBzeXN0ZW1zIGRpZCBub3QKICAgICAgcmVwb3J0IGFuIGVycm9yIHdoZW4gZW5hYmxpbmcgbXVsdGktcHJvY2VzcyBtb2RlLCBzbyB0aGV5IHVzZWQgdG8KICAgICAgc2lsZW50bHkgZmFpbCwgcG9zc2libHkgY2F1c2luZyBjcmFzaGVzLiBMaW51eCdzIGltcGxlbWVudGF0aW9uIGlzCiAgICAgIGZpbmUuIE9wZW5CU0QgZG9lc24ndCBzdXBwb3J0IHRoZW0gYW5kIGRvZXNuJ3QgYnVpbGQuIEZyZWVCU0QgOSBidWlsZHMKICAgICAgYW5kIHJlcG9ydHMgYW4gZXJyb3IgYXQgcnVudGltZSwgd2hpbGUgY2VydGFpbiBvbGRlciB2ZXJzaW9ucyBtaWdodAogICAgICBzaWxlbnRseSBmYWlsLiBQdGhyZWFkcyBhcmUgZW5hYmxlZCB1c2luZyBVU0VfUFRIUkVBRF9QU0hBUkVEPTEuCgogIFN5bmNocm9uaXphdGlvbiBvcGVyYXRpb25zIDoKICAgIC0gaW50ZXJuYWwgc3BpbmxvY2sgOiB0aGlzIG1vZGUgaXMgT1MtaW5kZXBlbmRlbnQsIGxpZ2h0IGJ1dCB3aWxsIG5vdAogICAgICBzY2FsZSB3ZWxsIHRvIG1hbnkgcHJvY2Vzc2VzLiBIb3dldmVyLCBhY2Nlc3NlcyB0byB0aGUgc2Vzc2lvbiBjYWNoZQogICAgICBhcmUgcmFyZSBlbm91Z2ggdGhhdCB0aGlzIG1vZGUgY291bGQgY2VydGFpbmx5IGFsd2F5cyBiZSB1c2VkLiBUaGlzCiAgICAgIGlzIHRoZSBkZWZhdWx0IG1vZGUuCgogICAgLSBGdXRleGVzLCB3aGljaCBhcmUgTGludXgtc3BlY2lmaWMgaGlnaGx5IHNjYWxhYmxlIGxpZ2h0IHdlaWdodCBtdXRleGVzCiAgICAgIGltcGxlbWVudGVkIGluIHVzZXItc3BhY2Ugd2l0aCBzb21lIGxpbWl0ZWQgYXNzaXN0YW5jZSBmcm9tIHRoZSBrZXJuZWwuCiAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgb24gTGludXggMi42IGFuZCBhYm92ZSBhbmQgaXMgZW5hYmxlZCBieSBwYXNzaW5nCiAgICAgIFVTRV9GVVRFWD0xCgogICAgLSBwdGhyZWFkIChwb3NpeCB0aHJlYWRzKS4gU2VlIGFib3ZlLgoKSWYgbm9uZSBvZiB0aGVzZSBtZWNoYW5pc21zIGlzIHN1cHBvcnRlZCBieSB5b3VyIHBsYXRmb3JtLCB5b3UgbWF5IG5lZWQgdG8KYnVpbGQgd2l0aCBVU0VfUFJJVkFURV9DQUNIRT0xIHRvIHRvdGFsbHkgZGlzYWJsZSBTU0wgY2FjaGUgc2hhcmluZy4gVGhlbgppdCBpcyBiZXR0ZXIgbm90IHRvIHJ1biBTU0wgb24gbXVsdGlwbGUgcHJvY2Vzc2VzLgoKSWYgeW91IG5lZWQgdG8gcGFzcyBvdGhlciBkZWZpbmVzLCBpbmNsdWRlcywgbGlicmFyaWVzLCBldGMuLi4gdGhlbiBwbGVhc2UKY2hlY2sgdGhlIE1ha2VmaWxlIHRvIHNlZSB3aGljaCBvbmVzIHdpbGwgYmUgYXZhaWxhYmxlIGluIHlvdXIgY2FzZSwgYW5kCnVzZSB0aGUgVVNFXyogdmFyaWFibGVzIGluIHRoZSBNYWtlZmlsZS4KCkFJWCA1LjMgaXMga25vd24gdG8gd29yayB3aXRoIHRoZSBnZW5lcmljIHRhcmdldC4gSG93ZXZlciwgZm9yIHRoZSBiaW5hcnkgdG8KYWxzbyBydW4gb24gNS4yIG9yIGVhcmxpZXIsIHlvdSBuZWVkIHRvIGJ1aWxkIHdpdGggREVGSU5FPSItRF9NU0dRU1VQUE9SVCIsCm90aGVyd2lzZSBfX2ZkX3NlbGVjdCgpIHdpbGwgYmUgdXNlZCB3aGlsZSBub3QgYmVpbmcgcHJlc2VudCBpbiB0aGUgbGliYywgYnV0CnRoaXMgaXMgZWFzaWx5IGFkZHJlc3NlZCB1c2luZyB0aGUgImFpeDUyIiB0YXJnZXQuIElmIHlvdSBnZXQgYnVpbGQgZXJyb3JzCmJlY2F1c2Ugb2Ygc3RyYW5nZSBzeW1ib2xzIG9yIHNlY3Rpb24gbWlzbWF0Y2hlcywgc2ltcGx5IHJlbW92ZSAtZyBmcm9tCkRFQlVHX0NGTEFHUy4KCllvdSBjYW4gZWFzaWx5IGRlZmluZSB5b3VyIG93biB0YXJnZXQgd2l0aCB0aGUgR05VIE1ha2VmaWxlLiBVbmtub3duIHRhcmdldHMKYXJlIHByb2Nlc3NlZCB3aXRoIG5vIGRlZmF1bHQgb3B0aW9uIGV4Y2VwdCBVU0VfUE9MTD1kZWZhdWx0LiBTbyB5b3UgY2FuIHZlcnkKd2VsbCB1c2UgdGhhdCBwcm9wZXJ0eSB0byBkZWZpbmUgeW91ciBvd24gc2V0IG9mIG9wdGlvbnMuIFVTRV9QT0xMIGNhbiBldmVuIGJlCmRpc2FibGVkIGJ5IHNldHRpbmcgVVNFX1BPTEw9IiIuIEZvciBleGFtcGxlIDoKCiAgICAkIGdtYWtlIFRBUkdFVD10aW55IFVTRV9QT0xMPSIiIFRBUkdFVF9DRkxBR1M9LWZvbWl0LWZyYW1lLXBvaW50ZXIKCgoxLjEpIERldmljZSBEZXRlY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpIQVByb3h5IHN1cHBvcnRzIHNldmVyYWwgZGV2aWNlIGRldGVjdGlvbiBtb2R1bGVzIHJlbHlpbmcgb24gdGhpcmQgcGFydHkKcHJvZHVjdHMuIFNvbWUgb2YgdGhlbSBtYXkgcHJvdmlkZSBmcmVlIGNvZGUsIG90aGVycyBmcmVlIGxpYnMsIG90aGVycyBmcmVlCmV2YWx1YXRpb24gbGljZW5zZXMuIFBsZWFzZSByZWFkIGFib3V0IHRoZWlyIHJlc3BlY3RpdmUgZGV0YWlscyBpbiB0aGUKZm9sbG93aW5nIGZpbGVzIDoKCiAgICBkb2MvRGV2aWNlQXRsYXMtZGV2aWNlLWRldGVjdGlvbi50eHQgICBmb3IgRGV2aWNlQXRsYXMKICAgIGRvYy81MURlZ3JlZXMtZGV2aWNlLWRldGVjdGlvbi50eHQgICAgIGZvciA1MURlZ3JlZXMKICAgIGRvYy9XVVJGTC1kZXZpY2UtZGV0ZWN0aW9uLnR4dCAgICAgICAgIGZvciBTY2llbnRpYW1vYmlsZSBXVVJGTAoKCjIpIEhvdyB0byBpbnN0YWxsIGl0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUbyBpbnN0YWxsIGhhcHJveHksIHlvdSBjYW4gZWl0aGVyIGNvcHkgdGhlIHNpbmdsZSByZXN1bHRpbmcgYmluYXJ5IHRvIHRoZQpwbGFjZSB5b3Ugd2FudCwgb3IgcnVuIDoKCiAgICAkIHN1ZG8gbWFrZSBpbnN0YWxsCgpJZiB5b3UncmUgcGFja2FnaW5nIGl0IGZvciBhbm90aGVyIHN5c3RlbSwgeW91IGNhbiBzcGVjaWZ5IGl0cyByb290IGRpcmVjdG9yeQppbiB0aGUgdXN1YWwgREVTVERJUiB2YXJpYWJsZS4KCgozKSBIb3cgdG8gc2V0IGl0IHVwCi0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZXJlIGlzIHNvbWUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgZG9jLyBkaXJlY3RvcnkgOgoKICAgIC0gaW50cm8udHh0IDogdGhpcyBpcyBhbiBpbnRyb2R1Y3Rpb24gdG8gaGFwcm94eSwgaXQgZXhwbGFpbnMgd2hhdCBpdCBpcwogICAgICB3aGF0IGl0IGlzIG5vdC4gVXNlZnVsIGZvciBiZWdpbm5lcnMgb3IgdG8gcmUtZGlzY292ZXIgaXQgd2hlbiBwbGFubmluZwogICAgICBmb3IgYW4gdXBncmFkZS4KCiAgICAtIGFyY2hpdGVjdHVyZS50eHQgOiB0aGlzIGlzIHRoZSBhcmNoaXRlY3R1cmUgbWFudWFsLiBJdCBpcyBxdWl0ZSBvbGQgYW5kCiAgICAgIGRvZXMgbm90IHRlbGwgYWJvdXQgdGhlIG5pY2UgbmV3IGZlYXR1cmVzLCBidXQgaXQncyBzdGlsbCBhIGdvb2Qgc3RhcnRpbmcKICAgICAgcG9pbnQgd2hlbiB5b3Uga25vdyB3aGF0IHlvdSB3YW50IGJ1dCBkb24ndCBrbm93IGhvdyB0byBkbyBpdC4KCiAgICAtIGNvbmZpZ3VyYXRpb24udHh0IDogdGhpcyBpcyB0aGUgY29uZmlndXJhdGlvbiBtYW51YWwuIEl0IHJlY2FsbHMgYSBmZXcKICAgICAgZXNzZW50aWFsIEhUVFAgYmFzaWMgY29uY2VwdHMsIGFuZCBkZXRhaWxzIGFsbCB0aGUgY29uZmlndXJhdGlvbiBmaWxlCiAgICAgIHN5bnRheCAoa2V5d29yZHMsIHVuaXRzKS4gSXQgYWxzbyBkZXNjcmliZXMgdGhlIGxvZyBhbmQgc3RhdHMgZm9ybWF0LiBJdAogICAgICBpcyBub3JtYWxseSBhbHdheXMgdXAgdG8gZGF0ZS4gSWYgeW91IHNlZSB0aGF0IHNvbWV0aGluZyBpcyBtaXNzaW5nIGZyb20KICAgICAgaXQsIHBsZWFzZSByZXBvcnQgaXQgYXMgdGhpcyBpcyBhIGJ1Zy4gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZpbGUgaXMKICAgICAgaHVnZSBhbmQgdGhhdCBpdCdzIGdlbmVyYWxseSBtb3JlIGNvbnZlbmllbnQgdG8gcmV2aWV3IEN5cmlsIEJvbnTpJ3MKICAgICAgSFRNTCB0cmFuc2xhdGlvbiBvbmxpbmUgaGVyZSA6CgogICAgICAgICAgIGh0dHA6Ly9jYm9udGUuZ2l0aHViLmlvL2hhcHJveHktZGNvbnYvY29uZmlndXJhdGlvbi0xLjYuaHRtbAoKICAgIC0gbWFuYWdlbWVudC50eHQgOiBpdCBleHBsYWlucyBob3cgdG8gc3RhcnQgaGFwcm94eSwgaG93IHRvIG1hbmFnZSBpdCBhdAogICAgICBydW50aW1lLCBob3cgdG8gbWFuYWdlIGl0IG9uIG11bHRpcGxlIG5vZGVzLCBob3cgdG8gcHJvY2VlZCB3aXRoIHNlYW1sZXNzCiAgICAgIHVwZ3JhZGVzLgoKICAgIC0gZ3BsLnR4dCAvIGxncGwudHh0IDogdGhlIGNvcHkgb2YgdGhlIGxpY2Vuc2VzIGNvdmVyaW5nIHRoZSBzb2Z0d2FyZS4gU2VlCiAgICAgIHRoZSAnTElDRU5TRScgZmlsZSBhdCB0aGUgdG9wIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKICAgIC0gdGhlIHJlc3QgaXMgbWFpbmx5IGZvciBkZXZlbG9wZXJzLgoKVGhlcmUgYXJlIGFsc28gYSBudW1iZXIgb2YgbmljZSBjb25maWd1cmF0aW9uIGV4YW1wbGVzIGluIHRoZSAiZXhhbXBsZXMiCmRpcmVjdG9yeSBhcyB3ZWxsIGFzIG9uIHNldmVyYWwgc2l0ZXMgYW5kIGFydGljbGVzIG9uIHRoZSBuZXQgd2hpY2ggYXJlIGxpbmtlZAp0byBmcm9tIHRoZSBoYXByb3h5IHdlYiBzaXRlLgoKCjQpIEhvdyB0byByZXBvcnQgYSBidWcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKSXQgaXMgcG9zc2libGUgdGhhdCBmcm9tIHRpbWUgdG8gdGltZSB5b3UnbGwgZmluZCBhIGJ1Zy4gQSBidWcgaXMgYSBjYXNlIHdoZXJlCndoYXQgeW91IHNlZSBpcyBub3Qgd2hhdCBpcyBkb2N1bWVudGVkLiBPdGhlcndpc2UgaXQgY2FuIGJlIGEgbWlzZGVzaWduLiBJZiB5b3UKZmluZCB0aGF0IHNvbWV0aGluZyBpcyBzdHVwaWRseSBkZXNpZ24sIHBsZWFzZSBkaXNjdXNzIGl0IG9uIHRoZSBsaXN0IChzZWUgdGhlCiJob3cgdG8gY29udHJpYnV0ZSIgc2VjdGlvbiBiZWxvdykuIElmIHlvdSBmZWVsIGxpa2UgeW91J3JlIHByb2NlZWRpbmcgcmlnaHQKYW5kIGhhcHJveHkgZG9lc24ndCBvYmV5LCB0aGVuIGZpcnN0IGFzayB5b3Vyc2VsZiBpZiBpdCBpcyBwb3NzaWJsZSB0aGF0IG5vYm9keQpiZWZvcmUgeW91IGhhcyBldmVuIGVuY291bnRlcmVkIHRoaXMgaXNzdWUuIElmIGl0J3MgdW5saWtlbHksIHRoZSB5b3UgcHJvYmFibHkKaGF2ZSBhbiBpc3N1ZSBpbiB5b3VyIHNldHVwLiBKdXN0IGluIGNhc2Ugb2YgZG91YnQsIHBsZWFzZSBjb25zdWx0IHRoZSBtYWlsaW5nCmxpc3QgYXJjaGl2ZXMgOgoKICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL21hcmMuaW5mby8/bD1oYXByb3h5CgpPdGhlcndpc2UsIHBsZWFzZSB0cnkgdG8gZ2F0aGVyIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBpbmZvcm1hdGlvbiB0byBoZWxwCnJlcHJvZHVjZSB0aGUgaXNzdWUgYW5kIHNlbmQgdGhhdCB0byB0aGUgbWFpbGluZyBsaXN0IDoKCiAgICAgICAgICAgICAgICAgICAgICAgIGhhcHJveHlAZm9ybWlsdXgub3JnCgpQbGVhc2UgaW5jbHVkZSB5b3VyIGNvbmZpZ3VyYXRpb24gYW5kIGxvZ3MuIFlvdSBjYW4gbWFzayB5b3VyIElQIGFkZHJlc3NlcyBhbmQKcGFzc3dvcmRzLCB3ZSBkb24ndCBuZWVkIHRoZW0uIEJ1dCBpdCdzIGVzc2VudGlhbCB0aGF0IHlvdSBwb3N0IHlvdXIgY29uZmlnIGlmCnlvdSB3YW50IHBlb3BsZSB0byBndWVzcyB3aGF0IGlzIGhhcHBlbmluZy4KCkFsc28sIGtlZXAgaW4gbWluZCB0aGF0IGhhcHJveHkgaXMgZGVzaWduZWQgdG8gTkVWRVIgQ1JBU0guIElmIHlvdSBzZWUgaXQgZGllCndpdGhvdXQgYW55IHJlYXNvbiwgdGhlbiBpdCBkZWZpbml0ZWx5IGlzIGEgY3JpdGljYWwgYnVnIHRoYXQgbXVzdCBiZSByZXBvcnRlZAphbmQgdXJnZW50bHkgZml4ZWQuIEl0IGhhcyBoYXBwZW5lZCBhIGNvdXBsZSBvZiB0aW1lcyBpbiB0aGUgcGFzdCwgZXNzZW50aWFsbHkKb24gZGV2ZWxvcG1lbnQgdmVyc2lvbnMgcnVubmluZyBvbiBuZXcgYXJjaGl0ZWN0dXJlcy4gSWYgeW91IHRoaW5rIHlvdXIgc2V0dXAKaXMgZmFpcmx5IGNvbW1vbiwgdGhlbiBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBpc3N1ZSBpcyB0b3RhbGx5IHVucmVsYXRlZC4KQW55d2F5LCBpZiB0aGF0IGhhcHBlbnMsIGZlZWwgZnJlZSB0byBjb250YWN0IG1lIGRpcmVjdGx5LCBhcyBJIHdpbGwgZ2l2ZSB5b3UKaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBjb2xsZWN0IGEgdXNhYmxlIGNvcmUgZmlsZSwgYW5kIHdpbGwgcHJvYmFibHkgYXNrIGZvcgpvdGhlciBjYXB0dXJlcyB0aGF0IHlvdSdsbCBub3Qgd2FudCB0byBzaGFyZSB3aXRoIHRoZSBsaXN0LgoKCjUpIEhvdyB0byBjb250cmlidXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgpQbGVhc2UgY2FyZWZ1bGx5IHJlYWQgdGhlIENPTlRSSUJVVElORyBmaWxlIHRoYXQgY29tZXMgd2l0aCB0aGUgc291cmNlcy4gSXQgaXMKbWFuZGF0b3J5LgoKLS0gZW5kCg==