ICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5IGhvdy10bwogICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuOAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGx5IHRhcnJlYXUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTcvMTEvMjYKCgoxKSBIb3cgdG8gYnVpbGQgaXQKLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIHZlcnNpb24gaXMgYSBzdGFibGUgdmVyc2lvbiwgd2hpY2ggbWVhbnMgdGhhdCBpdCBiZWxvbmdzIHRvIGEgYnJhbmNoIHdoaWNoCndpbGwgZ2V0IHNvbWUgZml4ZXMgZm9yIGJ1Z3MgYXMgdGhleSBhcmUgZGlzY292ZXJlZC4gVmVyc2lvbnMgd2hpY2ggaW5jbHVkZSB0aGUKc3VmZml4ICItZGV2IiBhcmUgZGV2ZWxvcG1lbnQgdmVyc2lvbnMgYW5kIHNob3VsZCBiZSBhdm9pZGVkIGluIHByb2R1Y3Rpb24uIElmCnlvdSBhcmUgbm90IHVzZWQgdG8gYnVpbGQgZnJvbSBzb3VyY2VzIG9yIGlmIHlvdSBhcmUgbm90IHVzZWQgdG8gZm9sbG93IHVwZGF0ZXMKdGhlbiBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IGluc3RlYWQgeW91IHVzZSB0aGUgcGFja2FnZXMgcHJvdmlkZWQgYnkgeW91cgpzb2Z0d2FyZSB2ZW5kb3Igb3IgTGludXggZGlzdHJpYnV0aW9uLiBNb3N0IG9mIHRoZW0gYXJlIHRha2luZyB0aGlzIHRhc2sKc2VyaW91c2x5IGFuZCBhcmUgZG9pbmcgYSBnb29kIGpvYiBhdCBiYWNrcG9ydGluZyBpbXBvcnRhbnQgZml4ZXMuIElmIGZvciBhbnkKcmVhc29uIHlvdSdkIHByZWZlciBhIGRpZmZlcmVudCB2ZXJzaW9uIHRoYW4gdGhlIG9uZSBwYWNrYWdlZCBmb3IgeW91ciBzeXN0ZW0sCnlvdSB3YW50IHRvIGJlIGNlcnRhaW4gdG8gaGF2ZSBhbGwgdGhlIGZpeGVzIG9yIHRvIGdldCBzb21lIGNvbW1lcmNpYWwgc3VwcG9ydCwKb3RoZXIgY2hvaWNlcyBhcmUgYXZhaWxhYmxlIGF0IDoKCiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuaGFwcm94eS5jb20vCgpUbyBidWlsZCBoYXByb3h5LCB5b3Ugd2lsbCBuZWVkIDoKICAtIEdOVSBtYWtlLiBOZWl0aGVyIFNvbGFyaXMgbm9yIE9wZW5CU0QncyBtYWtlIHdvcmsgd2l0aCB0aGUgR05VIE1ha2VmaWxlLgogICAgSWYgeW91IGdldCBtYW55IHN5bnRheCBlcnJvcnMgd2hlbiBydW5uaW5nICJtYWtlIiwgeW91IG1heSB3YW50IHRvIHJldHJ5CiAgICB3aXRoICJnbWFrZSIgd2hpY2ggaXMgdGhlIG5hbWUgY29tbW9ubHkgdXNlZCBmb3IgR05VIG1ha2Ugb24gQlNEIHN5c3RlbXMuCiAgLSBHQ0MgYmV0d2VlbiAyLjk1IGFuZCA0LjguIE90aGVycyBtYXkgd29yaywgYnV0IG5vdCB0ZXN0ZWQuCiAgLSBHTlUgbGQKCkFsc28sIHlvdSBtaWdodCB3YW50IHRvIGJ1aWxkIHdpdGggbGlicGNyZSBzdXBwb3J0LCB3aGljaCB3aWxsIHByb3ZpZGUgYSB2ZXJ5CmVmZmljaWVudCByZWdleCBpbXBsZW1lbnRhdGlvbiBhbmQgd2lsbCBhbHNvIGZpeCBzb21lIGJhZG5lc3Mgb24gU29sYXJpcycgb25lLgoKVG8gYnVpbGQgaGFwcm94eSwgeW91IGhhdmUgdG8gY2hvb3NlIHlvdXIgdGFyZ2V0IE9TIGFtb25nc3QgdGhlIGZvbGxvd2luZyBvbmVzCmFuZCBhc3NpZ24gaXQgdG8gdGhlIFRBUkdFVCB2YXJpYWJsZSA6CgogIC0gbGludXgyMiAgICAgZm9yIExpbnV4IDIuMgogIC0gbGludXgyNCAgICAgZm9yIExpbnV4IDIuNCBhbmQgYWJvdmUgKGRlZmF1bHQpCiAgLSBsaW51eDI0ZSAgICBmb3IgTGludXggMi40IHdpdGggc3VwcG9ydCBmb3IgYSB3b3JraW5nIGVwb2xsICg+IDAuMjEpCiAgLSBsaW51eDI2ICAgICBmb3IgTGludXggMi42IGFuZCBhYm92ZQogIC0gbGludXgyNjI4ICAgZm9yIExpbnV4IDIuNi4yOCwgMy54LCBhbmQgYWJvdmUgKGVuYWJsZXMgc3BsaWNlIGFuZCB0cHJveHkpCiAgLSBzb2xhcmlzICAgICBmb3IgU29sYXJpcyA4IG9yIDEwIChvdGhlcnMgdW50ZXN0ZWQpCiAgLSBmcmVlYnNkICAgICBmb3IgRnJlZUJTRCA1IHRvIDEwIChvdGhlcnMgdW50ZXN0ZWQpCiAgLSBuZXRic2QgICAgICBmb3IgTmV0QlNECiAgLSBvc3ggICAgICAgICBmb3IgTWFjIE9TL1gKICAtIG9wZW5ic2QgICAgIGZvciBPcGVuQlNEIDUuNyBhbmQgYWJvdmUKICAtIGFpeDUxICAgICAgIGZvciBBSVggNS4xCiAgLSBhaXg1MiAgICAgICBmb3IgQUlYIDUuMgogIC0gY3lnd2luICAgICAgZm9yIEN5Z3dpbgogIC0gaGFpa3UgICAgICAgZm9yIEhhaWt1CiAgLSBnZW5lcmljICAgICBmb3IgYW55IG90aGVyIE9TIG9yIHZlcnNpb24uCiAgLSBjdXN0b20gICAgICB0byBtYW51YWxseSBhZGp1c3QgZXZlcnkgc2V0dGluZwoKWW91IG1heSBhbHNvIGNob29zZSB5b3VyIENQVSB0byBiZW5lZml0IGZyb20gc29tZSBvcHRpbWl6YXRpb25zLiBUaGlzIGlzCnBhcnRpY3VsYXJseSBpbXBvcnRhbnQgb24gVWx0cmFTcGFyYyBtYWNoaW5lcy4gRm9yIHRoaXMsIHlvdSBjYW4gYXNzaWduCm9uZSBvZiB0aGUgZm9sbG93aW5nIGNob2ljZXMgdG8gdGhlIENQVSB2YXJpYWJsZSA6CgogIC0gaTY4NiBmb3IgaW50ZWwgUGVudGl1bVBybywgUGVudGl1bSAyIGFuZCBhYm92ZSwgQU1EIEF0aGxvbgogIC0gaTU4NiBmb3IgaW50ZWwgUGVudGl1bSwgQU1EIEs2LCBWSUEgQzMuCiAgLSB1bHRyYXNwYXJjIDogU3VuIFVsdHJhU3BhcmMgSS9JSS9JSUkvSVYgcHJvY2Vzc29yCiAgLSBuYXRpdmUgOiB1c2UgdGhlIGJ1aWxkIG1hY2hpbmUncyBzcGVjaWZpYyBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucy4gVXNlIHdpdGgKICAgIGV4dHJlbWUgY2FyZSwgYW5kIG5ldmVyIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoa25vd24gdG8gYnJlYWspLgogIC0gZ2VuZXJpYyA6IGFueSBvdGhlciBwcm9jZXNzb3Igb3Igbm8gQ1BVLXNwZWNpZmljIG9wdGltaXphdGlvbi4gKGRlZmF1bHQpCgpBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IGp1c3Qgc2V0IHRoZSBDUFVfQ0ZMQUdTIHZhbHVlIHRvIHRoZSBvcHRpbWFsIEdDQyBvcHRpb25zCmZvciB5b3VyIHBsYXRmb3JtLgoKWW91IG1heSB3YW50IHRvIGJ1aWxkIHNwZWNpZmljIHRhcmdldCBiaW5hcmllcyB3aGljaCBkbyBub3QgbWF0Y2ggeW91ciBuYXRpdmUKY29tcGlsZXIncyB0YXJnZXQuIFRoaXMgaXMgcGFydGljdWxhcmx5IHRydWUgb24gNjQtYml0IHN5c3RlbXMgd2hlbiB5b3Ugd2FudAp0byBidWlsZCBhIDMyLWJpdCBiaW5hcnkuIFVzZSB0aGUgQVJDSCB2YXJpYWJsZSBmb3IgdGhpcyBwdXJwb3NlLiBSaWdodCBub3cKaXQgb25seSBrbm93cyBhYm91dCBhIGZldyB4ODYgdmFyaWFudHMgKGkzODYsaTQ4NixpNTg2LGk2ODYseDg2XzY0KSwgdHdvCmdlbmVyaWMgb25lcyAoMzIsNjQpIGFuZCBzZXRzIC1tMzIvLW02NCBhcyB3ZWxsIGFzIC1tYXJjaD08YXJjaD4gYWNjb3JkaW5nbHkuCgpJZiB5b3VyIHN5c3RlbSBzdXBwb3J0cyBQQ1JFIChQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyksIHRoZW4geW91CnJlYWxseSBzaG91bGQgYnVpbGQgd2l0aCBsaWJwY3JlIHdoaWNoIGlzIGJldHdlZW4gMiBhbmQgMTAgdGltZXMgZmFzdGVyIHRoYW4Kb3RoZXIgbGliYyBpbXBsZW1lbnRhdGlvbnMuIFJlZ2V4IGFyZSB1c2VkIGZvciBoZWFkZXIgcHJvY2Vzc2luZyAoZGVsZXRpb24sCnJld3JpdGluZywgYWxsb3csIGRlbnkpLiBUaGUgb25seSBpbmNvbnZlbmllbnQgb2YgbGlicGNyZSBpcyB0aGF0IGl0IGlzIG5vdAp5ZXQgd2lkZWx5IHNwcmVhZCwgc28gaWYgeW91IGJ1aWxkIGZvciBvdGhlciBzeXN0ZW1zLCB5b3UgbWlnaHQgZ2V0IGludG8KdHJvdWJsZSBpZiB0aGV5IGRvbid0IGhhdmUgdGhlIGR5bmFtaWMgbGlicmFyeS4gSW4gdGhpcyBzaXR1YXRpb24sIHlvdSBzaG91bGQKc3RhdGljYWxseSBsaW5rIGxpYnBjcmUgaW50byBoYXByb3h5IHNvIHRoYXQgaXQgd2lsbCBub3QgYmUgbmVjZXNzYXJ5IHRvCmluc3RhbGwgaXQgb24gdGFyZ2V0IHN5c3RlbXMuIEF2YWlsYWJsZSBidWlsZCBvcHRpb25zIGZvciBQQ1JFIGFyZSA6CgogIC0gVVNFX1BDUkU9MSB0byB1c2UgbGlicGNyZSwgaW4gd2hhdGV2ZXIgZm9ybSBpcyBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0KICAgIChzaGFyZWQgb3Igc3RhdGljKQoKICAtIFVTRV9TVEFUSUNfUENSRT0xIHRvIHVzZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGxpYnBjcmUgZXZlbiBpZiB0aGUgZHluYW1pYwogICAgb25lIGlzIGF2YWlsYWJsZS4gVGhpcyB3aWxsIGVuaGFuY2UgcG9ydGFiaWxpdHkuCgogIC0gd2l0aCBubyBvcHRpb24sIHVzZSB5b3VyIE9TIGxpYmMncyBzdGFuZGFyZCByZWdleCBpbXBsZW1lbnRhdGlvbiAoZGVmYXVsdCkuCiAgICBXYXJuaW5nISBncm91cCByZWZlcmVuY2VzIG9uIFNvbGFyaXMgc2VlbSBicm9rZW4uIFVzZSBzdGF0aWMtcGNyZSB3aGVuZXZlcgogICAgcG9zc2libGUuCgpJZiB5b3VyIHN5c3RlbSBkb2Vzbid0IHByb3ZpZGUgUENSRSwgeW91IGFyZSBlbmNvdXJhZ2VkIHRvIGRvd25sb2FkIGl0IGZyb20KaHR0cDovL3d3dy5wY3JlLm9yZy8gYW5kIGJ1aWxkIGl0IHlvdXJzZWxmLCBpdCdzIGZhc3QgYW5kIGVhc3kuCgpSZWNlbnQgc3lzdGVtcyBjYW4gcmVzb2x2ZSBJUHY2IGhvc3QgbmFtZXMgdXNpbmcgZ2V0YWRkcmluZm8oKS4gVGhpcyBwcmltaXRpdmUKaXMgbm90IHByZXNlbnQgaW4gYWxsIGxpYmNzIGFuZCBkb2VzIG5vdCB3b3JrIGluIGFsbCBvZiB0aGVtIGVpdGhlci4gU3VwcG9ydCBpbgpnbGliYyB3YXMgYnJva2VuIGJlZm9yZSAyLjMuIFNvbWUgZW1iZWRkZWQgbGlicyBtYXkgbm90IHByb3Blcmx5IHdvcmsgZWl0aGVyLAp0aHVzLCBzdXBwb3J0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIG1lYW5pbmcgdGhhdCBzb21lIGhvc3QgbmFtZXMgd2hpY2ggb25seQpyZXNvbHZlIGFzIElQdjYgYWRkcmVzc2VzIHdpbGwgbm90IHJlc29sdmUgYW5kIGNvbmZpZ3MgbWlnaHQgZW1pdCBhbiBlcnJvcgpkdXJpbmcgcGFyc2luZy4gSWYgeW91IGtub3cgdGhhdCB5b3VyIE9TIGxpYmMgaGFzIHJlbGlhYmxlIHN1cHBvcnQgZm9yCmdldGFkZHJpbmZvKCksIHlvdSBjYW4gYWRkIFVTRV9HRVRBRERSSU5GTz0xIG9uIHRoZSBtYWtlIGNvbW1hbmQgbGluZSB0byBlbmFibGUKaXQuIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIG9wdGlvbiBmb3IgbW9zdCBMaW51eCBkaXN0cm8gcGFja2FnZXJzIHNpbmNlIGl0J3MKd29ya2luZyBmaW5lIG9uIGFsbCByZWNlbnQgbWFpbnN0cmVhbSBkaXN0cm9zLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgb24KU29sYXJpcyA4IGFuZCBhYm92ZSwgYXMgaXQncyBrbm93biB0byB3b3JrLgoKSXQgaXMgcG9zc2libGUgdG8gYWRkIG5hdGl2ZSBzdXBwb3J0IGZvciBTU0wgdXNpbmcgdGhlIEdOVSBtYWtlZmlsZSwgYnkgcGFzc2luZwoiVVNFX09QRU5TU0w9MSIgb24gdGhlIG1ha2UgY29tbWFuZCBsaW5lLiBUaGUgbGlic3NsIGFuZCBsaWJjcnlwdG8gd2lsbAphdXRvbWF0aWNhbGx5IGJlIGxpbmtlZCB3aXRoIGhhcHJveHkuIFNvbWUgc3lzdGVtcyBhbHNvIHJlcXVpcmUgbGlieiwgc28gaWYgdGhlCmJ1aWxkIGZhaWxzIGR1ZSB0byBtaXNzaW5nIHN5bWJvbHMgc3VjaCBhcyBkZWZsYXRlSW5pdCgpLCB0aGVuIHRyeSBhZ2FpbiB3aXRoCiJBRERMSUI9LWx6Ii4KCllvdXIgYXJlIHN0cm9uZ2x5IGVuY291cmFnZWQgdG8gYWx3YXlzIHVzZSBhbiB1cC10by1kYXRlIHZlcnNpb24gb2YgT3BlblNTTCwgYXMKZm91bmQgb24gaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvIGFzIHZ1bG5lcmFiaWxpdGllcyBhcmUgb2NjYXNpb25hbGx5IGZvdW5kIGFuZAp5b3UgZG9uJ3Qgd2FudCB0aGVtIG9uIHlvdXIgc3lzdGVtcy4gSEFQcm94eSBpcyBrbm93biB0byBidWlsZCBjb3JyZWN0bHkgb24gYWxsCmN1cnJlbnRseSBzdXBwb3J0ZWQgYnJhbmNoZXMgKDAuOS44LCAxLjAuMCwgMS4wLjEsIDEuMC4yIGFuZCAxLjEuMCBhdCB0aGUgdGltZQpvZiB3cml0aW5nKS4gQnJhbmNoIDEuMC4yIGlzIGN1cnJlbnRseSByZWNvbW1lbmRlZCBmb3IgdGhlIGJlc3QgY29tYmluYXRpb24gb2YKZmVhdHVyZXMgYW5kIHN0YWJpbGl0eS4gQXN5bmNocm9ub3VzIGVuZ2luZXMgcmVxdWlyZSBPcGVuU1NMIDEuMS4wIHRob3VnaC4gSXQncwp3b3J0aCBtZW50aW9ubmluZyB0aGF0IHNvbWUgT3BlblNTTCBkZXJpdmF0aXZlcyBhcmUgYWxzbyByZXBvcnRlZCB0byB3b3JrIGJ1dAptYXkgb2NjYXNpb25hbGx5IGJyZWFrLiBQYXRjaGVzIHRvIGZpeCB0aGVtIGFyZSB3ZWxjb21lIGJ1dCBwbGVhc2UgcmVhZCB0aGUKQ09OVFJJQlVUSU5HIGZpbGUgZmlyc3QuCgpUbyBsaW5rIE9wZW5TU0wgc3RhdGljYWxseSBhZ2FpbnN0IGhhcHJveHksIGJ1aWxkIE9wZW5TU0wgd2l0aCB0aGUgbm8tc2hhcmVkCmtleXdvcmQgYW5kIGluc3RhbGwgaXQgdG8gYSBsb2NhbCBkaXJlY3RvcnksIHNvIHlvdXIgc3lzdGVtIGlzIG5vdCBhZmZlY3RlZCA6CgogICAgJCBleHBvcnQgU1RBVElDTElCU1NMPS90bXAvc3RhdGljbGlic3NsCiAgICAkIC4vY29uZmlnIC0tcHJlZml4PSRTVEFUSUNMSUJTU0wgbm8tc2hhcmVkCiAgICAkIG1ha2UgJiYgbWFrZSBpbnN0YWxsX3N3CgpXaGVuIGJ1aWxkaW5nIGhhcHJveHksIHBhc3MgdGhhdCBwYXRoIHZpYSBTU0xfSU5DIGFuZCBTU0xfTElCIHRvIG1ha2UgYW5kCmluY2x1ZGUgYWRkaXRpb25hbCBsaWJzIHdpdGggQURETElCIGlmIG5lZWRlZCAoaW4gdGhpcyBjYXNlIGZvciBleGFtcGxlIGxpYmRsKToKCiAgICAkIG1ha2UgVEFSR0VUPWxpbnV4MjYgVVNFX09QRU5TU0w9MSBTU0xfSU5DPSRTVEFUSUNMSUJTU0wvaW5jbHVkZSBTU0xfTElCPSRTVEFUSUNMSUJTU0wvbGliIEFERExJQj0tbGRsCgpJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGluY2x1ZGUgbmF0aXZlIHN1cHBvcnQgZm9yIHpsaWIgdG8gYmVuZWZpdCBmcm9tIEhUVFAKY29tcHJlc3Npb24uIEZvciB0aGlzLCBwYXNzICJVU0VfWkxJQj0xIiBvbiB0aGUgIm1ha2UiIGNvbW1hbmQgbGluZSBhbmQgZW5zdXJlCnRoYXQgemxpYiBpcyBwcmVzZW50IG9uIHRoZSBzeXN0ZW0uIEFsdGVybmF0aXZlbHkgaXQgaXMgcG9zc2libGUgdG8gdXNlIGxpYnNsegpmb3IgYSBmYXN0ZXIsIG1lbW9yeSBsZXNzLCBidXQgc2xpZ2h0bHkgbGVzcyBlZmZpY2llbnQgY29tcHJlc3Npb24sIGJ5IHBhc3NpbmcKIlVTRV9TTFo9MSIuCgpabGliIGlzIGNvbW1vbmx5IGZvdW5kIG9uIG1vc3Qgc3lzdGVtcywgb3RoZXJ3aXNlIHVwZGF0ZXMgY2FuIGJlIHJldHJpZXZlZCBmcm9tCmh0dHA6Ly93d3cuemxpYi5uZXQvLiBJdCBpcyBlYXN5IGFuZCBmYXN0IHRvIGJ1aWxkLiBMaWJzbHogY2FuIGJlIGRvd25sb2FkZWQKZnJvbSBodHRwOi8vMXd0LmV1L3Byb2plY3RzL2xpYnNsei8gYW5kIGlzIGV2ZW4gZWFzaWVyIHRvIGJ1aWxkLgoKQnkgZGVmYXVsdCwgdGhlIERFQlVHIHZhcmlhYmxlIGlzIHNldCB0byAnLWcnIHRvIGVuYWJsZSBkZWJ1ZyBzeW1ib2xzLiBJdCBpcwpub3Qgd2lzZSB0byBkaXNhYmxlIGl0IG9uIHVuY29tbW9uIHN5c3RlbXMsIGJlY2F1c2UgaXQncyBvZnRlbiB0aGUgb25seSB3YXkgdG8KZ2V0IGEgY29tcGxldGUgY29yZSB3aGVuIHlvdSBuZWVkIG9uZS4gT3RoZXJ3aXNlLCB5b3UgY2FuIHNldCBERUJVRyB0byAnLXMnIHRvCnN0cmlwIHRoZSBiaW5hcnkuCgpGb3IgZXhhbXBsZSwgSSB1c2UgdGhpcyB0byBidWlsZCBmb3IgU29sYXJpcyA4IDoKCiAgICAkIG1ha2UgVEFSR0VUPXNvbGFyaXMgQ1BVPXVsdHJhc3BhcmMgVVNFX1NUQVRJQ19QQ1JFPTEKCkFuZCBJIGJ1aWxkIGl0IHRoaXMgd2F5IG9uIE9wZW5CU0Qgb3IgRnJlZUJTRCA6CgogICAgJCBnbWFrZSBUQVJHRVQ9ZnJlZWJzZCBVU0VfUENSRT0xIFVTRV9PUEVOU1NMPTEgVVNFX1pMSUI9MQoKQW5kIG9uIGEgY2xhc3NpYyBMaW51eCB3aXRoIFNTTCBhbmQgWkxJQiBzdXBwb3J0IChlZzogUmVkIEhhdCA1LngpIDoKCiAgICAkIG1ha2UgVEFSR0VUPWxpbnV4MjYgVVNFX1BDUkU9MSBVU0VfT1BFTlNTTD0xIFVTRV9aTElCPTEKCkFuZCBvbiBhIHJlY2VudCBMaW51eCA+PSAyLjYuMjggd2l0aCBTU0wgYW5kIFpMSUIgc3VwcG9ydCA6CgogICAgJCBtYWtlIFRBUkdFVD1saW51eDI2MjggVVNFX1BDUkU9MSBVU0VfT1BFTlNTTD0xIFVTRV9aTElCPTEKCkluIG9yZGVyIHRvIGJ1aWxkIGEgMzItYml0IGJpbmFyeSBvbiBhbiB4ODZfNjQgTGludXggc3lzdGVtIHdpdGggU1NMIHN1cHBvcnQKd2l0aG91dCBzdXBwb3J0IGZvciBjb21wcmVzc2lvbiBidXQgd2hlbiBPcGVuU1NMIHJlcXVpcmVzIFpMSUIgYW55d2F5IDoKCiAgICAkIG1ha2UgVEFSR0VUPWxpbnV4MjYgQVJDSD1pMzg2IFVTRV9PUEVOU1NMPTEgQURETElCPS1segoKVGhlIFNTTCBzdGFjayBzdXBwb3J0cyBzZXNzaW9uIGNhY2hlIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIGFsbCBydW5uaW5nCnByb2Nlc3Nlcy4gVGhpcyBpbnZvbHZlcyBzb21lIGF0b21pYyBvcGVyYXRpb25zIGFuZCBzeW5jaHJvbml6YXRpb24gb3BlcmF0aW9ucwp3aGljaCBjb21lIGluIG11bHRpcGxlIGZsYXZvcnMgZGVwZW5kaW5nIG9uIHRoZSBzeXN0ZW0gYW5kIGFyY2hpdGVjdHVyZSA6CgogIEF0b21pYyBvcGVyYXRpb25zIDoKICAgIC0gaW50ZXJuYWwgYXNzZW1ibGVyIHZlcnNpb25zIGZvciB4ODYveDg2XzY0IGFyY2hpdGVjdHVyZXMKCiAgICAtIGdjYyBidWlsdGlucyBmb3Igb3RoZXIgYXJjaGl0ZWN0dXJlcy4gU29tZSBhcmNoaXRlY3R1cmVzIG1pZ2h0IG5vdAogICAgICBiZSBmdWxseSBzdXBwb3J0ZWQgb3IgbWlnaHQgcmVxdWlyZSBhIG1vcmUgcmVjZW50IHZlcnNpb24gb2YgZ2NjLgogICAgICBJZiB5b3VyIGFyY2hpdGVjdHVyZSBpcyBub3Qgc3VwcG9ydGVkLCB5b3Ugd2lsbHkgaGF2ZSB0byBlaXRoZXIgdXNlCiAgICAgIHB0aHJlYWQgaWYgc3VwcG9ydGVkLCBvciB0byBkaXNhYmxlIHRoZSBzaGFyZWQgY2FjaGUuCgogICAgLSBwdGhyZWFkIChwb3NpeCB0aHJlYWRzKS4gUHRocmVhZHMgYXJlIHZlcnkgY29tbW9uIGJ1dCBpbnRlci1wcm9jZXNzCiAgICAgIHN1cHBvcnQgaXMgbm90IHRoYXQgY29tbW9uLCBhbmQgc29tZSBvbGRlciBvcGVyYXRpbmcgc3lzdGVtcyBkaWQgbm90CiAgICAgIHJlcG9ydCBhbiBlcnJvciB3aGVuIGVuYWJsaW5nIG11bHRpLXByb2Nlc3MgbW9kZSwgc28gdGhleSB1c2VkIHRvCiAgICAgIHNpbGVudGx5IGZhaWwsIHBvc3NpYmx5IGNhdXNpbmcgY3Jhc2hlcy4gTGludXgncyBpbXBsZW1lbnRhdGlvbiBpcwogICAgICBmaW5lLiBPcGVuQlNEIGRvZXNuJ3Qgc3VwcG9ydCB0aGVtIGFuZCBkb2Vzbid0IGJ1aWxkLiBGcmVlQlNEIDkgYnVpbGRzCiAgICAgIGFuZCByZXBvcnRzIGFuIGVycm9yIGF0IHJ1bnRpbWUsIHdoaWxlIGNlcnRhaW4gb2xkZXIgdmVyc2lvbnMgbWlnaHQKICAgICAgc2lsZW50bHkgZmFpbC4gUHRocmVhZHMgYXJlIGVuYWJsZWQgdXNpbmcgVVNFX1BUSFJFQURfUFNIQVJFRD0xLgoKICBTeW5jaHJvbml6YXRpb24gb3BlcmF0aW9ucyA6CiAgICAtIGludGVybmFsIHNwaW5sb2NrIDogdGhpcyBtb2RlIGlzIE9TLWluZGVwZW5kYW50LCBsaWdodCBidXQgd2lsbCBub3QKICAgICAgc2NhbGUgd2VsbCB0byBtYW55IHByb2Nlc3Nlcy4gSG93ZXZlciwgYWNjZXNzZXMgdG8gdGhlIHNlc3Npb24gY2FjaGUKICAgICAgYXJlIHJhcmUgZW5vdWdoIHRoYXQgdGhpcyBtb2RlIGNvdWxkIGNlcnRhaW5seSBhbHdheXMgYmUgdXNlZC4gVGhpcwogICAgICBpcyB0aGUgZGVmYXVsdCBtb2RlLgoKICAgIC0gRnV0ZXhlcywgd2hpY2ggYXJlIExpbnV4LXNwZWNpZmljIGhpZ2hseSBzY2FsYWJsZSBsaWdodCB3ZWlnaHQgbXV0ZXhlcwogICAgICBpbXBsZW1lbnRlZCBpbiB1c2VyLXNwYWNlIHdpdGggc29tZSBsaW1pdGVkIGFzc2lzdGFuY2UgZnJvbSB0aGUga2VybmVsLgogICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IG9uIExpbnV4IDIuNiBhbmQgYWJvdmUgYW5kIGlzIGVuYWJsZWQgYnkgcGFzc2luZwogICAgICBVU0VfRlVURVg9MQoKICAgIC0gcHRocmVhZCAocG9zaXggdGhyZWFkcykuIFNlZSBhYm92ZS4KCklmIG5vbmUgb2YgdGhlc2UgbWVjaGFuaXNtcyBpcyBzdXBwb3J0ZWQgYnkgeW91ciBwbGF0Zm9ybSwgeW91IG1heSBuZWVkIHRvCmJ1aWxkIHdpdGggVVNFX1BSSVZBVEVfQ0FDSEU9MSB0byB0b3RhbGx5IGRpc2FibGUgU1NMIGNhY2hlIHNoYXJpbmcuIFRoZW4KaXQgaXMgYmV0dGVyIG5vdCB0byBydW4gU1NMIG9uIG11bHRpcGxlIHByb2Nlc3Nlcy4KCklmIHlvdSBuZWVkIHRvIHBhc3Mgb3RoZXIgZGVmaW5lcywgaW5jbHVkZXMsIGxpYnJhcmllcywgZXRjLi4uIHRoZW4gcGxlYXNlCmNoZWNrIHRoZSBNYWtlZmlsZSB0byBzZWUgd2hpY2ggb25lcyB3aWxsIGJlIGF2YWlsYWJsZSBpbiB5b3VyIGNhc2UsIGFuZAp1c2UgdGhlIFVTRV8qIHZhcmlhYmxlcyBpbiB0aGUgTWFrZWZpbGUuCgpBSVggNS4zIGlzIGtub3duIHRvIHdvcmsgd2l0aCB0aGUgZ2VuZXJpYyB0YXJnZXQuIEhvd2V2ZXIsIGZvciB0aGUgYmluYXJ5IHRvCmFsc28gcnVuIG9uIDUuMiBvciBlYXJsaWVyLCB5b3UgbmVlZCB0byBidWlsZCB3aXRoIERFRklORT0iLURfTVNHUVNVUFBPUlQiLApvdGhlcndpc2UgX19mZF9zZWxlY3QoKSB3aWxsIGJlIHVzZWQgd2hpbGUgbm90IGJlaW5nIHByZXNlbnQgaW4gdGhlIGxpYmMsIGJ1dAp0aGlzIGlzIGVhc2lseSBhZGRyZXNzZWQgdXNpbmcgdGhlICJhaXg1MiIgdGFyZ2V0LiBJZiB5b3UgZ2V0IGJ1aWxkIGVycm9ycwpiZWNhdXNlIG9mIHN0cmFuZ2Ugc3ltYm9scyBvciBzZWN0aW9uIG1pc21hdGNoZXMsIHNpbXBseSByZW1vdmUgLWcgZnJvbQpERUJVR19DRkxBR1MuCgpZb3UgY2FuIGVhc2lseSBkZWZpbmUgeW91ciBvd24gdGFyZ2V0IHdpdGggdGhlIEdOVSBNYWtlZmlsZS4gVW5rbm93biB0YXJnZXRzCmFyZSBwcm9jZXNzZWQgd2l0aCBubyBkZWZhdWx0IG9wdGlvbiBleGNlcHQgVVNFX1BPTEw9ZGVmYXVsdC4gU28geW91IGNhbiB2ZXJ5CndlbGwgdXNlIHRoYXQgcHJvcGVydHkgdG8gZGVmaW5lIHlvdXIgb3duIHNldCBvZiBvcHRpb25zLiBVU0VfUE9MTCBjYW4gZXZlbiBiZQpkaXNhYmxlZCBieSBzZXR0aW5nIFVTRV9QT0xMPSIiLiBGb3IgZXhhbXBsZSA6CgogICAgJCBnbWFrZSBUQVJHRVQ9dGlueSBVU0VfUE9MTD0iIiBUQVJHRVRfQ0ZMQUdTPS1mb21pdC1mcmFtZS1wb2ludGVyCgoKMS4xKSBEZXZpY2UgRGV0ZWN0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKSEFQcm94eSBzdXBwb3J0cyBzZXZlcmFsIGRldmljZSBkZXRlY3Rpb24gbW9kdWxlcyByZWx5aW5nIG9uIHRoaXJkIHBhcnR5CnByb2R1Y3RzLiBTb21lIG9mIHRoZW0gbWF5IHByb3ZpZGUgZnJlZSBjb2RlLCBvdGhlcnMgZnJlZSBsaWJzLCBvdGhlcnMgZnJlZQpldmFsdWF0aW9uIGxpY2Vuc2VzLiBQbGVhc2UgcmVhZCBhYm91dCB0aGVpciByZXNwZWN0aXZlIGRldGFpbHMgaW4gdGhlCmZvbGxvd2luZyBmaWxlcyA6CgogICAgZG9jL0RldmljZUF0bGFzLWRldmljZS1kZXRlY3Rpb24udHh0ICAgZm9yIERldmljZUF0bGFzCiAgICBkb2MvNTFEZWdyZWVzLWRldmljZS1kZXRlY3Rpb24udHh0ICAgICBmb3IgNTFEZWdyZWVzCiAgICBkb2MvV1VSRkwtZGV2aWNlLWRldGVjdGlvbi50eHQgICAgICAgICBmb3IgU2NpZW50aWFtb2JpbGUgV1VSRkwKCgoyKSBIb3cgdG8gaW5zdGFsbCBpdAotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVG8gaW5zdGFsbCBoYXByb3h5LCB5b3UgY2FuIGVpdGhlciBjb3B5IHRoZSBzaW5nbGUgcmVzdWx0aW5nIGJpbmFyeSB0byB0aGUKcGxhY2UgeW91IHdhbnQsIG9yIHJ1biA6CgogICAgJCBzdWRvIG1ha2UgaW5zdGFsbAoKSWYgeW91J3JlIHBhY2thZ2luZyBpdCBmb3IgYW5vdGhlciBzeXN0ZW0sIHlvdSBjYW4gc3BlY2lmeSBpdHMgcm9vdCBkaXJlY3RvcnkKaW4gdGhlIHVzdWFsIERFU1RESVIgdmFyaWFibGUuCgoKMykgSG93IHRvIHNldCBpdCB1cAotLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGVyZSBpcyBzb21lIGRvY3VtZW50YXRpb24gaW4gdGhlIGRvYy8gZGlyZWN0b3J5IDoKCiAgICAtIGludHJvLnR4dCA6IHRoaXMgaXMgYW4gaW50cm9kdWN0aW9uIHRvIGhhcHJveHksIGl0IGV4cGxhaW5zIHdoYXQgaXQgaXMKICAgICAgd2hhdCBpdCBpcyBub3QuIFVzZWZ1bCBmb3IgYmVnaW5uZXJzIG9yIHRvIHJlLWRpc2NvdmVyIGl0IHdoZW4gcGxhbm5pbmcKICAgICAgZm9yIGFuIHVwZ3JhZGUuCgogICAgLSBhcmNoaXRlY3R1cmUudHh0IDogdGhpcyBpcyB0aGUgYXJjaGl0ZWN0dXJlIG1hbnVhbC4gSXQgaXMgcXVpdGUgb2xkIGFuZAogICAgICBkb2VzIG5vdCB0ZWxsIGFib3V0IHRoZSBuaWNlIG5ldyBmZWF0dXJlcywgYnV0IGl0J3Mgc3RpbGwgYSBnb29kIHN0YXJ0aW5nCiAgICAgIHBvaW50IHdoZW4geW91IGtub3cgd2hhdCB5b3Ugd2FudCBidXQgZG9uJ3Qga25vdyBob3cgdG8gZG8gaXQuCgogICAgLSBjb25maWd1cmF0aW9uLnR4dCA6IHRoaXMgaXMgdGhlIGNvbmZpZ3VyYXRpb24gbWFudWFsLiBJdCByZWNhbGxzIGEgZmV3CiAgICAgIGVzc2VudGlhbCBIVFRQIGJhc2ljIGNvbmNlcHRzLCBhbmQgZGV0YWlscyBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQogICAgICBzeW50YXggKGtleXdvcmRzLCB1bml0cykuIEl0IGFsc28gZGVzY3JpYmVzIHRoZSBsb2cgYW5kIHN0YXRzIGZvcm1hdC4gSXQKICAgICAgaXMgbm9ybWFsbHkgYWx3YXlzIHVwIHRvIGRhdGUuIElmIHlvdSBzZWUgdGhhdCBzb21ldGhpbmcgaXMgbWlzc2luZyBmcm9tCiAgICAgIGl0LCBwbGVhc2UgcmVwb3J0IGl0IGFzIHRoaXMgaXMgYSBidWcuIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmaWxlIGlzCiAgICAgIGh1Z2UgYW5kIHRoYXQgaXQncyBnZW5lcmFsbHkgbW9yZSBjb252ZW5pZW50IHRvIHJldmlldyBDeXJpbCBCb2506SdzCiAgICAgIEhUTUwgdHJhbnNsYXRpb24gb25saW5lIGhlcmUgOgoKICAgICAgICAgICBodHRwOi8vY2JvbnRlLmdpdGh1Yi5pby9oYXByb3h5LWRjb252L2NvbmZpZ3VyYXRpb24tMS42Lmh0bWwKCiAgICAtIG1hbmFnZW1lbnQudHh0IDogaXQgZXhwbGFpbnMgaG93IHRvIHN0YXJ0IGhhcHJveHksIGhvdyB0byBtYW5hZ2UgaXQgYXQKICAgICAgcnVudGltZSwgaG93IHRvIG1hbmFnZSBpdCBvbiBtdWx0aXBsZSBub2RlcywgaG93IHRvIHByb2NlZWQgd2l0aCBzZWFtbGVzcwogICAgICB1cGdyYWRlcy4KCiAgICAtIGdwbC50eHQgLyBsZ3BsLnR4dCA6IHRoZSBjb3B5IG9mIHRoZSBsaWNlbnNlcyBjb3ZlcmluZyB0aGUgc29mdHdhcmUuIFNlZQogICAgICB0aGUgJ0xJQ0VOU0UnIGZpbGUgYXQgdGhlIHRvcCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgICAtIHRoZSByZXN0IGlzIG1haW5seSBmb3IgZGV2ZWxvcGVycy4KClRoZXJlIGFyZSBhbHNvIGEgbnVtYmVyIG9mIG5pY2UgY29uZmlndXJhdGlvbiBleGFtcGxlcyBpbiB0aGUgImV4YW1wbGVzIgpkaXJlY3RvcnkgYXMgd2VsbCBhcyBvbiBzZXZlcmFsIHNpdGVzIGFuZCBhcnRpY2xlcyBvbiB0aGUgbmV0IHdoaWNoIGFyZSBsaW5rZWQKdG8gZnJvbSB0aGUgaGFwcm94eSB3ZWIgc2l0ZS4KCgo0KSBIb3cgdG8gcmVwb3J0IGEgYnVnCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkl0IGlzIHBvc3NpYmxlIHRoYXQgZnJvbSB0aW1lIHRvIHRpbWUgeW91J2xsIGZpbmQgYSBidWcuIEEgYnVnIGlzIGEgY2FzZSB3aGVyZQp3aGF0IHlvdSBzZWUgaXMgbm90IHdoYXQgaXMgZG9jdW1lbnRlZC4gT3RoZXJ3aXNlIGl0IGNhbiBiZSBhIG1pc2Rlc2lnbi4gSWYgeW91CmZpbmQgdGhhdCBzb21ldGhpbmcgaXMgc3R1cGlkbHkgZGVzaWduLCBwbGVhc2UgZGlzY3VzcyBpdCBvbiB0aGUgbGlzdCAoc2VlIHRoZQoiaG93IHRvIGNvbnRyaWJ1dGUiIHNlY3Rpb24gYmVsb3cpLiBJZiB5b3UgZmVlbCBsaWtlIHlvdSdyZSBwcm9jZWVkaW5nIHJpZ2h0CmFuZCBoYXByb3h5IGRvZXNuJ3Qgb2JleSwgdGhlbiBmaXJzdCBhc2sgeW91cnNlbGYgaWYgaXQgaXMgcG9zc2libGUgdGhhdCBub2JvZHkKYmVmb3JlIHlvdSBoYXMgZXZlbiBlbmNvdW50ZXJlZCB0aGlzIGlzc3VlLiBJZiBpdCdzIHVubGlrZWx5LCB0aGUgeW91IHByb2JhYmx5CmhhdmUgYW4gaXNzdWUgaW4geW91ciBzZXR1cC4gSnVzdCBpbiBjYXNlIG9mIGRvdWJ0LCBwbGVhc2UgY29uc3VsdCB0aGUgbWFpbGluZwpsaXN0IGFyY2hpdmVzIDoKCiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9tYXJjLmluZm8vP2w9aGFwcm94eQoKT3RoZXJ3aXNlLCBwbGVhc2UgdHJ5IHRvIGdhdGhlciB0aGUgbWF4aW11bSBhbW91bnQgb2YgaW5mb3JtYXRpb24gdG8gaGVscApyZXByb2R1Y2UgdGhlIGlzc3VlIGFuZCBzZW5kIHRoYXQgdG8gdGhlIG1haWxpbmcgbGlzdCA6CgogICAgICAgICAgICAgICAgICAgICAgICBoYXByb3h5QGZvcm1pbHV4Lm9yZwoKUGxlYXNlIGluY2x1ZGUgeW91ciBjb25maWd1cmF0aW9uIGFuZCBsb2dzLiBZb3UgY2FuIG1hc2sgeW91ciBJUCBhZGRyZXNzZXMgYW5kCnBhc3N3b3Jkcywgd2UgZG9uJ3QgbmVlZCB0aGVtLiBCdXQgaXQncyBlc3NlbnRpYWwgdGhhdCB5b3UgcG9zdCB5b3VyIGNvbmZpZyBpZgp5b3Ugd2FudCBwZW9wbGUgdG8gZ3Vlc3Mgd2hhdCBpcyBoYXBwZW5pbmcuCgpBbHNvLCBrZWVwIGluIG1pbmQgdGhhdCBoYXByb3h5IGlzIGRlc2lnbmVkIHRvIE5FVkVSIENSQVNILiBJZiB5b3Ugc2VlIGl0IGRpZQp3aXRob3V0IGFueSByZWFzb24sIHRoZW4gaXQgZGVmaW5pdGVseSBpcyBhIGNyaXRpY2FsIGJ1ZyB0aGF0IG11c3QgYmUgcmVwb3J0ZWQKYW5kIHVyZ2VudGx5IGZpeGVkLiBJdCBoYXMgaGFwcGVuZWQgYSBjb3VwbGUgb2YgdGltZXMgaW4gdGhlIHBhc3QsIGVzc2VudGlhbGx5Cm9uIGRldmVsb3BtZW50IHZlcnNpb25zIHJ1bm5pbmcgb24gbmV3IGFyY2hpdGVjdHVyZXMuIElmIHlvdSB0aGluayB5b3VyIHNldHVwCmlzIGZhaXJseSBjb21tb24sIHRoZW4gaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgaXNzdWUgaXMgdG90YWxseSB1bnJlbGF0ZWQuCkFueXdheSwgaWYgdGhhdCBoYXBwZW5zLCBmZWVsIGZyZWUgdG8gY29udGFjdCBtZSBkaXJlY3RseSwgYXMgSSB3aWxsIGdpdmUgeW91Cmluc3RydWN0aW9ucyBvbiBob3cgdG8gY29sbGVjdCBhIHVzYWJsZSBjb3JlIGZpbGUsIGFuZCB3aWxsIHByb2JhYmx5IGFzayBmb3IKb3RoZXIgY2FwdHVyZXMgdGhhdCB5b3UnbGwgbm90IHdhbnQgdG8gc2hhcmUgd2l0aCB0aGUgbGlzdC4KCgo1KSBIb3cgdG8gY29udHJpYnV0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUGxlYXNlIGNhcmVmdWxseSByZWFkIHRoZSBDT05UUklCVVRJTkcgZmlsZSB0aGF0IGNvbWVzIHdpdGggdGhlIHNvdXJjZXMuIEl0IGlzCm1hbmRhdG9yeS4KCi0tIGVuZAo=