VGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGFyZSByZXNwb25zaWJsZSBmb3IgY2VydGFpbiBwYXJ0cyBvZgp0aGUgSEFQcm94eSBwcm9qZWN0IGFuZCB3aG8gaGF2ZSBhdXRob3JpdHkgb24gdGhlbS4gVGhpcyBtZWFucyB0aGF0IHRoZXNlCnBlb3BsZSBoYXZlIHRvIGJlIGNvbnN1bHRlZCBiZWZvcmUgZG9pbmcgYW55IGNoYW5nZSBpbiB0aGUgcGFydHMgdGhleSBtYWludGFpbiwKaW5jbHVkaW5nIHdoZW4gZml4aW5nIGJ1Z3MuIFRoZXNlIHBlcnNvbnMgYXJlIGFsbG93ZWQgdG8gcmVqZWN0IGFueSBjaGFuZ2Ugb24KdGhlIHBhcnRzIHRoZXkgbWFpbnRhaW4sIGFuZCBpbiBwYXJhbGxlbCB0aGV5IHRyeSB0aGVpciBiZXN0IHRvIGVuc3VyZSB0aGVzZQpwYXJ0cyB3b3JrIHdlbGwuIFNpbWlsYXJseSwgYW55IGNoYW5nZSB0byB0aGVzZSBwYXJ0cyBub3QgYmVpbmcgdmFsaWRhdGVkIGJ5CnRoZW0gd2lsbCBiZSByZWplY3RlZC4KClRoZSBiZXN0IHdheSB0byBkZWFsIHdpdGggc3VjaCBzdWJzeXN0ZW1zIHdoZW4gc2VuZGluZyBwYXRjaGVzIGlzIHRvIHNlbmQgdGhlCnBhdGNoZXMgdG8gdGhlIG1haWxpbmcgbGlzdCBhbmQgdG8gQ0MgdGhlc2UgcGVvcGxlLiBXaGVuIG5vIG1haW50YWluZXIgaXMKbGlzdGVkIGZvciBhIHN1YnN5c3RlbSwgeW91IGNhbiBzaW1wbHkgc2VuZCB5b3VyIGNoYW5nZXMgdGhlIHVzdWFsIHdheSwgYW5kIGl0CmlzIGFsc28gYSBzaWduIHRoYXQgaWYgeW91IHdhbnQgdG8gc3RyZW5ndGhlbiB5b3VyIHNraWxscyBvbiBjZXJ0YWluIHBhcnRzIHlvdQpjYW4gYmVjb21lIHlvdXJzZWxmIGEgbWFpbnRhaW5lciBvZiB0aGUgcGFydHMgeW91IGNhcmUgYSBsb3QgYWJvdXQuCgpQbGVhc2UgZG8gbm90IGFzayB0aGVtIHRvIHRyb3VibGVzaG9vdCB5b3VyIGJ1Z3MsIGl0J3Mgbm90IHRoZWlyIGpvYiBldmVudGhvdWdoCnRoZXkgbWF5IG9jY2FzaW9uYWxseSBoZWxwIGFzIHRpbWUgcGVybWl0cy4KCkxpc3Qgb2YgbWFpbnRhaW5lcnMKLS0tLS0tLS0tLS0tLS0tLS0tLQoKTHVhCk1haW50YWluZXI6IFRoaWVycnkgRm91cm5pZXIgPHRmb3VybmllckBhcnBhbGVydC5vcmc+CkZpbGVzOiBzcmMvaGx1YS5jLCBpbmNsdWRlLyovaGx1YS5oCgpNYXBzIGFuZCBwYXR0ZXJuIG1hdGNoaW5nCk1haW50YWluZXI6IFRoaWVycnkgRm91cm5pZXIgPHRmb3VybmllckBhcnBhbGVydC5vcmc+CkZpbGVzOiBzcmMvbWFwLmMsIHNyYy9wYXR0ZXJuLmMsIGluY2x1ZGUvKi9tYXAuaCwgaW5jbHVkZS8qL3BhdHRlcm4uaAoKRE5TCk1haW50YWluZXI6IEJhcHRpc3RlIEFzc21hbm4gPGJlZGlzOUBnbWFpbC5jb20+CkZpbGVzOiBzcmMvZG5zLmMsIGluY2x1ZGUvKi9kbnMuaAoKU1NMCk1haW50YWluZXI6IEVtZXJpYyBCcnVuIDxlYnJ1bkBoYXByb3h5LmNvbT4KRmlsZXM6IHNyYy9zc2xfc29jay5jLCBpbmNsdWRlLyovc3NsX3NvY2suaAoKUGVlcnMKTWFpbnRhaW5lcjogRW1lcmljIEJydW4gPGVicnVuQGhhcHJveHkuY29tPgpGaWxlczogc3JjL3BlZXJzLmMsIGluY2x1ZGUvKi9wZWVycy5oCgpEb2MgdG8gSFRNTCBjb252ZXJ0ZXIgKGRjb252KQpNYWludGFpbmVyOiBDeXJpbCBCb2506SA8Y3lyaWwuYm9udGVAZnJlZS5mcj4KRmlsZXM6IGRvYy8qLnR4dApOb3RlOiBhc2sgQ3lyaWwgYmVmb3JlIGNoYW5naW5nIGFueSBkb2MncyBmb3JtYXQgb3Igc3RydWN0dXJlLgoKSGVhbHRoIGNoZWNrcwpGaWxlczogc3JjL2NoZWNrcy5jLCBpbmNsdWRlLyovY2hlY2tzLmgKTWFpbnRhaW5lcnM6IFNpbW9uIEhvcm1hbiBmb3IgZXh0ZXJuYWwtY2hlY2ssIEJhcHRpc3RlIEFzc21hbm4gZm9yIHRjcC1jaGVjawpOb3RlOiBoZWFsdGggY2hlY2tzIGFyZSBmcmFnaWxlIGFuZCBoYXZlIGJlZW4gYnJva2VuIG1hbnkgdGltZXMsIHNvIHBsZWFzZQogICAgICBjb25zdWx0IHRoZSByZWxldmFudCBtYWludGFpbmVycyBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlc2Ugc3BlY2lmaWMKICAgICAgcGFydHMuCgpNYWlsZXJzCk1haW50YWluZXI6IFNpbW9uIEhvcm1hbiA8aG9ybXNAdmVyZ2UubmV0LmF1PgpGaWxlczogc3JjL21haWxlcnMuYywgaW5jbHVkZS8qL21haWxlcnMuaAoKRGV2aWNlQXRsYXMgZGV2aWNlIGlkZW50aWZpY2F0aW9uCk1haW50YWluZXI6IERhdmlkIENhcmxpZXIgPGRjYXJsaWVyQGRldmljZWF0bGFzLmNvbT4KRmlsZXM6IHNyYy9kYS5jLCBpbmNsdWRlLyovZGEuaAoKNTFEZWdyZWVzIGRldmljZSBpZGVudGlmaWNhdGlvbgpNYWludGFpbmVyOiBCZW4gU2hpbGxpdG8gPGJlbkA1MWRlZ3JlZXMuY29tPgpGaWxlczogc3JjLzUxZC5jCgpDYWNoZQpNYWludGFpbmVyOiBXaWxsaWFtIExhbGxlbWFuZCA8d2xhbGxlbWFuZEBoYXByb3h5LmNvbT4KRmlsZXM6IHNyYy9jYWNoZS5jLCBpbmNsdWRlLyovY2FjaGUuaAoKTWFzdGVyLXdvcmtlcgpNYWludGFpbmVyOiBXaWxsaWFtIExhbGxlbWFuZCA8d2xhbGxlbWFuZEBoYXByb3h5LmNvbT4KTm90ZTogUGxlYXNlIENDIFdpbGxpYW0gd2hlbiB0b3VjaGluZyBzcmMvaGFwcm94eS5jIGFuZCBjb250cmliL3N5c3RlbWQKClNQT0UKTWFpbnRhaW5lcjogQ2hyaXN0b3BoZXIgRmF1bGV0IDxjZmF1bGV0QGhhcHJveHkuY29tPgpGaWxlczogc3JjL2ZsdF9zcG9lLmMsIGluY2x1ZGUvKi9zcG9lLmgsIGNvbnRyaWIvc3BvYV9leGFtcGxlLCBkb2MvU1BPRS50eHQKCk11bHRpLXRocmVhZGluZwpNYWludGFpbmVyOiBDaHJpc3RvcGhlciBGYXVsZXQgPGNmYXVsZXRAaGFwcm94eS5jb20+Ck1haW50YWluZXI6IEVtZXJpYyBCcnVuIDxlYnJ1bkBoYXByb3h5LmNvbT4KRmlsZXM6IHNyYy9oYXRocmVhZHMuYywgaW5jbHVkZS8qL2hhdGhyZWFkcy5oCk5vdGU6IGV2ZXJ5IGNoYW5nZSBhcm91bmQgdGhlIGxvY2tpbmcgb3Igc3luY2hyb25pemF0aW9uIHBvaW50IHdpbGwgcmVxdWlyZQogICAgICBhcHByb3ZhbCBmcm9tIG9uZSBvZiB0aGVzZSBtYWludGFpbmVycy4gUHJvYmxlbXMgd2hpY2ggb25seSBhcHBlYXIgd2hlbgogICAgICBuYnRocmVhZCBpcyBncmVhdGVyIHRoYW4gMSBhbmQgd2hpY2ggZGlzYXBwZWFyIG90aGVyd2lzZSBhcmUgYWxzbwogICAgICByZWxldmFudC4KClNjaWVudGlhTW9iaWxlIFdVUkZMIERldmljZSBEZXRlY3Rpb24KTWFpbnRhaW5lcjogUGF1bCBCb3JpbGUsIE1hc3NpbWlsaWFubyBCZWxsb21pIDx3dXJmbC1oYXByb3h5LXN1cHBvcnRAc2NpZW50aWFtb2JpbGUuY29tPgpGaWxlczogc3JjL3d1cmZsLmMK