From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhigang Gong Subject: =?utf-8?q?=5BPATCH_1/3=5D_glamor=3A_Initial_commit_to?= =?utf-8?q?_introduce_glamor_acceleration=2E?= Date: Fri, 11 Nov 2011 16:31:19 +0800 Message-ID: <1321000281-5097-1-git-send-email-zhigang.gong@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 6CA6EA0D5D for ; Fri, 11 Nov 2011 00:42:53 -0800 (PST) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org QWRkZWQgb25lIGNvbmZpZ3VyYXRpb24gb3B0aW9uIC0tZW5hYmxlLWdsYW1vciB0byBjb250cm9s CndoZXRoZXIgdXNlIGdsYW1vci4gQWRkZWQgb25lIG5ldyBmaWxlIGludGVsX2dsYW1vci5jIHRv CndyYXAgZ2xhbW9yIGVnbCBBUEkgZm9yIGludGVsIGRyaXZlcidzIHVzYWdlLgpUaGlzIGNvbW1p dCBkb2Vzbid0IHJlYWxseSBjaGFuZ2UgdGhlIGRyaXZlcidzIGNvbnRyb2wgcGF0aC4KSXQganVz dCBhZGRzIG5lY2Vzc2FyeSBmaWxlcyBmb3IgZ2xhbW9yIGFuZCBjaGFuZ2Ugc29tZQpjb25maWd1 cmF0aW9uLgoKU2lnbmVkLW9mZi1ieTogWmhpZ2FuZyBHb25nIDx6aGlnYW5nLmdvbmdAbGludXgu aW50ZWwuY29tPgotLS0KIGNvbmZpZ3VyZS5hYyAgICAgICB8ICAgMTcgKysrKysrKwogc3JjL01h a2VmaWxlLmFtICAgIHwgICAgNSArKwogc3JjL2ludGVsX2dsYW1vci5jIHwgIDEzMCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW50ZWxf Z2xhbW9yLmggfCAgIDQ1ICsrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxOTcg aW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50 ZWxfZ2xhbW9yLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZWxfZ2xhbW9yLmgKCmRpZmYg LS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggZmNjYWI1Ni4uZGMwMWM0 NiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMTI2LDYg KzEyNiwxNSBAQCBBQ19BUkdfRU5BQkxFKHNuYSwKIAkgICAgICBbU05BPSIkZW5hYmxldmFsIl0s CiAJICAgICAgW1NOQT1ub10pCiBBTV9DT05ESVRJT05BTChTTkEsIHRlc3QgeCRTTkEgIT0geG5v KQorCitBQ19BUkdfRU5BQkxFKGdsYW1vciwKKwkgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFi bGUtZ2xhbW9yXSwKKwkJCSAgICAgW0VuYWJsZSBnbGFtb3IsIGEgbmV3IEdMLWJhc2VkIGFjY2Vs ZXJhdGlvbiBbZGVmYXVsdD1ub11dKSwKKwkgICAgICBbR0xBTU9SPSIkZW5hYmxldmFsIl0sCisJ ICAgICAgW0dMQU1PUj1ub10pCisKK0FNX0NPTkRJVElPTkFMKEdMQU1PUiwgdGVzdCB4JEdMQU1P UiAhPSB4bm8pCisKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBpbmNsdWRlIFNOQSBzdXBw b3J0XSkKIAogcmVxdWlyZWRfeG9yZ194c2VydmVyX3ZlcnNpb249MS42CkBAIC0xMzcsNiArMTQ2 LDE0IEBAIGlmIHRlc3QgIngkU05BIiAhPSAieG5vIjsgdGhlbgogZmkKIEFDX01TR19SRVNVTFQo WyRTTkFdKQogCitpZiB0ZXN0ICJ4JEdMQU1PUiIgIT0gInhubyI7IHRoZW4KKwlQS0dfQ0hFQ0tf TU9EVUxFUyhMSUJHTEFNT1IsIFtnbGFtb3JdKQorCVBLR19DSEVDS19NT0RVTEVTKExJQkdMQU1P Ul9FR0wsIFtnbGFtb3ItZWdsXSkKKwlBQ19ERUZJTkUoR0xBTU9SLCAxLCBbRW5hYmxlIGdsYW1v ciBhY2NlbGVyYXRpb25dKQorZmkKKworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGluY2x1 ZGUgR0xBTU9SIHN1cHBvcnRdKQorQUNfTVNHX1JFU1VMVChbJEdMQU1PUl0pCiAKIEFDX0FSR19F TkFCTEUodm1hcCwKIAkgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdm1hcF0sCmRpZmYg LS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KaW5kZXggY2QxYmIzNi4u MWEyOTM5MCAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKyBiL3NyYy9NYWtlZmlsZS5h bQpAQCAtNDAsNiArNDAsMTAgQEAgU1VCRElSUyArPSBzbmEKIGludGVsX2Rydl9sYV9MSUJBREQg Kz0gc25hL2xpYnNuYS5sYQogZW5kaWYKIAoraWYgR0xBTU9SCitHTEFNT1JfU09VUkNFID0gaW50 ZWxfZ2xhbW9yLmMKK2VuZGlmCisKIE5VTEw6PSMKIAogaW50ZWxfZHJ2X2xhX1NPVVJDRVMgPSBc CkBAIC03MCw2ICs3NCw3IEBAIGludGVsX2Rydl9sYV9TT1VSQ0VTID0gXAogCSBpOTY1XzNkLmMg XAogCSBpOTY1X3ZpZGVvLmMgXAogCSBpOTY1X3JlbmRlci5jIFwKKwkgJChHTEFNT1JfU09VUkNF KSBcCiAJICQoTlVMTCkKIAogaWYgRFJJCmRpZmYgLS1naXQgYS9zcmMvaW50ZWxfZ2xhbW9yLmMg Yi9zcmMvaW50ZWxfZ2xhbW9yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u Y2FkZmM3MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnRlbF9nbGFtb3IuYwpAQCAtMCwwICsx LDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDExIEludGVsIENvcnBvcmF0aW9uLgorICoK KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uCisgKiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbgorICogZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dAorICogcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksCisgKiBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMKKyAqIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz CisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIChpbmNsdWRpbmcKKyAqIHRoZSBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5j bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbAorICogcG9ydGlvbnMgb2YgdGhlIFNv ZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFks IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorICogTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCisgKiBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyAq IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAq IEF1dGhvcnM6CisgKiAgICBaaGlnYW5nIEdvbmcgPHpoaWdhbmcuZ29uZ0BsaW51eC5pbnRlbC5j b20+CisgKgorICovCisKKyNpZmRlZiBIQVZFX0RJWF9DT05GSUdfSAorI2luY2x1ZGUgPGRpeC1j b25maWcuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+ CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDx4 Zjg2ZHJtLmg+CisKKyNkZWZpbmUgR0xBTU9SX0ZPUl9YT1JHICAxCisKKyNpbmNsdWRlIDxnbGFt b3IuaD4KKyNpbmNsdWRlICJpbnRlbC5oIgorI2luY2x1ZGUgImludGVsX2dsYW1vci5oIgorCitC b29sCitpbnRlbF9nbGFtb3JfY3JlYXRlX3NjcmVlbl9yZXNvdXJjZXMoU2NyZWVuUHRyIHNjcmVl bikKK3sKKwlTY3JuSW5mb1B0ciBzY3JuID0geGY4NlNjcmVlbnNbc2NyZWVuLT5teU51bV07CisJ aW50ZWxfc2NyZWVuX3ByaXZhdGUgKmludGVsID0gaW50ZWxfZ2V0X3NjcmVlbl9wcml2YXRlKHNj cm4pOworCisJaWYgKCFnbGFtb3JfZ2x5cGhzX2luaXQoc2NyZWVuKSkKKwkJcmV0dXJuIEZBTFNF OworCWlmICghZ2xhbW9yX2VnbF9jcmVhdGVfdGV4dHVyZWRfc2NyZWVuKHNjcmVlbiwKKwkJCQkJ ICAgICAgIGludGVsLT5mcm9udF9idWZmZXItPmhhbmRsZSwKKwkJCQkJICAgICAgIGludGVsLT5m cm9udF9waXRjaCkpCisJCXJldHVybiBGQUxTRTsKKwlyZXR1cm4gVFJVRTsKK30KKworQm9vbAor aW50ZWxfZ2xhbW9yX3ByZV9pbml0KFNjcm5JbmZvUHRyIHNjcm4pCit7CisJaW50ZWxfc2NyZWVu X3ByaXZhdGUgKmludGVsOworCWludGVsID0gaW50ZWxfZ2V0X3NjcmVlbl9wcml2YXRlKHNjcm4p OworCXJldHVybiBnbGFtb3JfZWdsX2luaXQoc2NybiwgaW50ZWwtPmRybVN1YkZEKTsKK30KKwor Qm9vbAoraW50ZWxfZ2xhbW9yX2NyZWF0ZV90ZXh0dXJlZF9waXhtYXAoUGl4bWFwUHRyIHBpeG1h cCkKK3sKKwlzdHJ1Y3QgaW50ZWxfcGl4bWFwICpwcml2OworCXByaXYgPSBpbnRlbF9nZXRfcGl4 bWFwX3ByaXZhdGUocGl4bWFwKTsKKwlyZXR1cm4gZ2xhbW9yX2VnbF9jcmVhdGVfdGV4dHVyZWRf cGl4bWFwKHBpeG1hcCwgcHJpdi0+Ym8tPmhhbmRsZSwKKwkJCQkJCSBwcml2LT5zdHJpZGUpOwor fQorCit2b2lkCitpbnRlbF9nbGFtb3JfZGVzdHJveV9waXhtYXAoUGl4bWFwUHRyIHBpeG1hcCkK K3sKKwlnbGFtb3JfZWdsX2Rlc3Ryb3lfdGV4dHVyZWRfcGl4bWFwKHBpeG1hcCk7Cit9CisKK0Jv b2wKK2ludGVsX2dsYW1vcl9pbml0KFNjcmVlblB0ciBzY3JlZW4pCit7CisJU2NybkluZm9QdHIg c2NybiA9IHhmODZTY3JlZW5zW3NjcmVlbi0+bXlOdW1dOworCisJaWYgKCFnbGFtb3JfaW5pdChz Y3JlZW4sIEdMQU1PUl9JTlZFUlRFRF9ZX0FYSVMpKSB7CisJCXhmODZEcnZNc2coc2Nybi0+c2Ny bkluZGV4LCBYX0VSUk9SLAorCQkJICAgIkZhaWxlZCB0byBpbml0aWFsaXplIGdsYW1vclxuIik7 CisJCXJldHVybiBGQUxTRTsKKwl9CisKKwlpZiAoIWdsYW1vcl9lZ2xfaW5pdF90ZXh0dXJlZF9w aXhtYXAoc2NyZWVuKSkgeworCQl4Zjg2RHJ2TXNnKHNjcm4tPnNjcm5JbmRleCwgWF9FUlJPUiwK KwkJCSAgICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBnbGFtb3JcbiIpOworCQlyZXR1cm4gRkFMU0U7 CisJfQorCisJcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQKK2ludGVsX2dsYW1vcl9ibG9ja19oYW5k bGVyKGludGVsX3NjcmVlbl9wcml2YXRlICogaW50ZWwpCit7CisJU2NyZWVuUHRyIHNjcmVlbiA9 IHNjcmVlbkluZm8uc2NyZWVuc1tpbnRlbC0+c2Nybi0+c2NybkluZGV4XTsKKwlnbGFtb3JfYmxv Y2tfaGFuZGxlcihzY3JlZW4pOworfQorCitCb29sCitpbnRlbF9nbGFtb3JfY3JlYXRlX3NjcmVl bl9pbWFnZShTY3JlZW5QdHIgc2NyZWVuLCBpbnQgaGFuZGxlLCBpbnQgc3RyaWRlKQoreworCVBp eG1hcFB0ciBwaXhtYXA7CisJaWYgKCFnbGFtb3JfZWdsX2NyZWF0ZV90ZXh0dXJlZF9zY3JlZW4o c2NyZWVuLCBoYW5kbGUsIHN0cmlkZSkpCisJCXJldHVybiBGQUxTRTsKKwlwaXhtYXAgPSBzY3Jl ZW4tPkdldFNjcmVlblBpeG1hcChzY3JlZW4pOworCXJldHVybiBUUlVFOworfQorCitCb29sCitp bnRlbF9nbGFtb3JfY2xvc2Vfc2NyZWVuKFNjcmVlblB0ciBzY3JlZW4pCit7CisJcmV0dXJuIGds YW1vcl9lZ2xfY2xvc2Vfc2NyZWVuKHNjcmVlbik7Cit9CisKK3ZvaWQKK2ludGVsX2dsYW1vcl9m cmVlX3NjcmVlbihpbnQgc2NybkluZGV4LCBpbnQgZmxhZ3MpCit7CisJZ2xhbW9yX2VnbF9mcmVl X3NjcmVlbihzY3JuSW5kZXgsIEdMQU1PUl9FR0xfRVhURVJOQUxfQlVGRkVSKTsKK30KZGlmZiAt LWdpdCBhL3NyYy9pbnRlbF9nbGFtb3IuaCBiL3NyYy9pbnRlbF9nbGFtb3IuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2MyYzg2Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2ludGVsX2dsYW1vci5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAx MSBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgorICogb2J0YWluaW5nIGEgY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KKyAqIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKyAqIHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LAorICogbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5k L29yIHNlbGwgY29waWVzCisgKiBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCisgKiB0aGUgbmV4 dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwKKyAqIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyAqIEVYUFJF U1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQKKyAqIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVAorICogSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUiBMSUFCSUxJVFksCisgKiBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdT IElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogICAgWmhpZ2FuZyBHb25nIDx6 aGlnYW5nLmdvbmdAbGludXguaW50ZWwuY29tPgorICoKKyAqLworQm9vbCBpbnRlbF9nbGFtb3Jf cHJlX2luaXQoU2NybkluZm9QdHIgc2Nybik7CisKK0Jvb2wgaW50ZWxfZ2xhbW9yX2luaXQoU2Ny ZWVuUHRyIHNjcmVlbik7CisKK0Jvb2wgaW50ZWxfZ2xhbW9yX2NyZWF0ZV9zY3JlZW5fcmVzb3Vy Y2VzKFNjcmVlblB0ciBzY3JlZW4pOworCitCb29sIGludGVsX2dsYW1vcl9jcmVhdGVfc2NyZWVu X2ltYWdlKFNjcmVlblB0ciBzY3JlZW4sIGludCBoYW5kbGUsIGludCBzdHJpZGUpOworCitCb29s IGludGVsX2dsYW1vcl9jbG9zZV9zY3JlZW4oU2NyZWVuUHRyIHNjcmVlbik7CisKK3ZvaWQgaW50 ZWxfZ2xhbW9yX2ZyZWVfc2NyZWVuKGludCBzY3JuSW5kZXgsIGludCBmbGFncyk7CisKK3ZvaWQg aW50ZWxfZ2xhbW9yX2Jsb2NrX2hhbmRsZXIoaW50ZWxfc2NyZWVuX3ByaXZhdGUgKiBpbnRlbCk7 CisKK0Jvb2wgaW50ZWxfZ2xhbW9yX2NyZWF0ZV90ZXh0dXJlZF9waXhtYXAoUGl4bWFwUHRyIHBp eG1hcCk7CisKK3ZvaWQgaW50ZWxfZ2xhbW9yX2Rlc3Ryb3lfcGl4bWFwKFBpeG1hcFB0ciBwaXht YXApOwotLSAKMS43LjQuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK