From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: Re: [PATCH v2 5/5] drm/msm: subclass work object for vblank events Date: Tue, 20 Nov 2018 14:04:14 -0800 Message-ID: <86c75419b86da1a3f538638ef0004203@codeaurora.org> References: <1541543790-748-1-git-send-email-jsanka@codeaurora.org> <1541543790-748-5-git-send-email-jsanka@codeaurora.org> <20181107155551.GZ154160@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181107155551.GZ154160@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gMjAxOC0xMS0wNyAwNzo1NSwgU2VhbiBQYXVsIHdyb3RlOgo+IE9uIFR1ZSwgTm92IDA2LCAy MDE4IGF0IDAyOjM2OjMwUE0gLTA4MDAsIEpleWt1bWFyIFNhbmthcmFuIHdyb3RlOgo+PiBtc20g bWFpbnRhaW5zIGEgc2VwYXJhdGUgc3RydWN0dXJlIHRvIGRlZmluZSB2YmxhbmsKPj4gd29yayBk ZWZpbml0aW9ucyBhbmQgYSBsaXN0IHRvIHRyYWNrIGV2ZW50cyBzdWJtaXR0ZWQKPj4gdG8gdGhl IHdvcmtxdWV1ZS4gV2UgY2FuIGF2b2lkIHRoaXMgcmVkdW5kYW50IGxpc3QKPj4gYW5kIGl0cyBw cm90ZWN0aW9uIG1lY2hhbmlzbSwgaWYgd2Ugc3ViY2xhc3MgdGhlCj4+IHdvcmsgb2JqZWN0IHRv IGVuY2Fwc3VsYXRlIHZibGFuayBldmVudCBwYXJhbWV0ZXJzLgo+PiAKPj4gY2hhbmdlcyBpbiB2 MjoKPj4gCS0gc3ViY2xhc3Mgb3B0aW1pemF0aW9uIG9uIHN5c3RlbSB3cSAoU2VhbiBQYXVsKQo+ IAo+IEkgd291bGRuJ3QgZG8gaXQgbGlrZSB0aGlzLCB0YmguIE9uZSBwcm9ibGVtIGlzIHRoYXQg eW91J3ZlIGxvc3QgeW91cgo+IGZsdXNoKCkgb24KPiB1bmJpbmQsIHNvIHRoZXJlJ3Mgbm8gd2F5 IHRvIGtub3cgaWYgeW91IGhhdmUgd29ya2VycyBpbiB0aGUgd2lsZCAKPiB3YWl0aW5nCj4gdG8K PiBlbmFibGUvZGlzYWJsZSB2YmxhbmsuCj4gCj4gQW5vdGhlciBpc3N1ZXMgaXMgdGhhdCBBRkFJ Q1QsIHdlIGRvbid0IG5lZWQgYSBxdWV1ZSBvZiAKPiBlbmFibGVzL2Rpc2FibGVzLAo+IGJ1dAo+ IHJhdGhlciBqdXN0IHRoZSBsYXN0IHJlcXVlc3RlZCBzdGF0ZSAoaWU6IHNob3VsZCB3ZSBiZSBv biBvciBvZmYpLiBTbwo+IHRoaW5ncwo+IGRvbid0IG5lZWQgdG8gYmUgdGhpcyBjb21wbGljYXRl ZCAoYW5kIHdlJ3JlIHBvc3NpYmx5IHRocmFzaGluZyB2YmxhbmsKPiBvbi9vZmYKPiBmb3Igbm8g cmVhc29uKS4KPiAKPiBJJ20gc3RpbGwgb2YgdGhlIG1pbmQgdGhhdCB5b3Ugc2hvdWxkIGp1c3Qg bWFrZSB0aGlzIHN5bmNocm9ub3VzIGFuZCBiZQo+IGRvbmUKPiB3aXRoIHRoZSB0aHJlYWRzIChl c3BlY2lhbGx5IHNpbmNlIHdlJ3JlIHN0aWxsIHVuY292ZXJpbmcvaW50cm9kdWNpbmcKPiByYWNl cyEpLgo+IApXaGlsZSBzY29waW5nIG91dCB0aGUgZWZmb3J0IHRvIG1ha2UgdmJsYW5rIGV2ZW50 cyBzeW5jaHJvbm91cywgSSBmb3VuZAp0aGF0IHRoZSBzcGlubG9jayBsb2NraW5nIG9yZGVyIG9m IHZibGFuayByZXF1ZXN0IHNlcXVlbmNlIGFuZCB2YmxhbmsgCmNhbGxiYWNrCnNlcXVlbmNlcyBh cmUgdGhlIG9wcG9zaXRlLgoKSW4gRFBVLCBkcm1fdmJsYW5rX2VuYWJsZSBhY3F1aXJlcyB2Ymxh bmtfdGltZV9sb2NrIGJlZm9yZSByZWdpc3RlcmluZwp0aGUgY3J0YyB0byBlbmNvZGVyIHdoaWNo IGhhcHBlbnMgYWZ0ZXIgYWNxdWlyaW5nIGVuY29kZXJfc3BpbmxvY2suIEJ1dAp0aGUgdmJsYW5r X2NhbGxiYWNrIGFjcXVpcmVzIGVuY29kZXJfc3BpbmxvY2sgYmVmb3JlIGFjY2Vzc2luZyB0aGUg CnJlZ2lzdGVyZWQKY3J0YyBhbmQgY2FsbGluZyBpbnRvIGRybV92YmxhbmtfaGFuZGxlciB3aGlj aCB0cmllcyB0byBhY3F1aXJlIAp2YmxhbmtfdGltZV9sb2NrLgpBY3F1aXJpbmcgYm90aCB2Ymxh bmtfdGltZV9sb2NrIGFuZCBlbmNvZGVyX3NwaW5sb2NrIGluIHRoZSBzYW1lIHRocmVhZAppcyBs ZWFkaW5nIHRvIGRlYWRsb2NrLgoKSW4gTURQNSwgSSBzZWUgdGhlIHNhbWUgcGF0dGVybiBiZXR3 ZWVuIHZibGFua190aW1lX2xvY2sgYW5kIGxpc3RfbG9jayAKd2hpY2gKaXMgdXNlZCB0byB0cmFj ayB0aGUgaXJxIGhhbmRsZXJzLgoKSSBiZWxpZXZlIHRoYXQgZXhwbGFpbnMgd2h5IG1zbV9kcnYg aXMgcXVldWluZyB0aGUgdmJsYW5rIGVuYWJsZS9kaXNhYmxlCndvcmtzIHRvIFdRIGFmdGVyIGFj cXVpcmluZyB2YmxhbmtfdGltZV9sb2NrLgoKVGhhbmtzLApKZXlrdW1hciBTLgoKPiBTZWFuCj4g Cj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBKZXlrdW1hciBTYW5rYXJhbiA8anNhbmthQGNvZGVhdXJv cmEub3JnPgo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jIHwgNjcKPiAr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICBkcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9kcnYuaCB8ICA3IC0tLS0tCj4+ICAyIGZpbGVzIGNoYW5nZWQsIDIwIGlu c2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2Rydi5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+ PiBpbmRleCA2ZDZjNzNiLi44ZGE1YmUyIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9kcnYuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+PiBA QCAtMjAzLDYxICsyMDMsNDQgQEAgdTMyIG1zbV9yZWFkbChjb25zdCB2b2lkIF9faW9tZW0gKmFk ZHIpCj4+ICAJcmV0dXJuIHZhbDsKPj4gIH0KPj4gCj4+IC1zdHJ1Y3QgdmJsYW5rX2V2ZW50IHsK Pj4gLQlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7Cj4+ICtzdHJ1Y3QgbXNtX3ZibGFua193b3JrIHsK Pj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKPj4gIAlpbnQgY3J0Y19pZDsKPj4gIAlib29s IGVuYWJsZTsKPj4gKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2Owo+PiAgfTsKPj4gCj4+ ICBzdGF0aWMgdm9pZCB2YmxhbmtfY3RybF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQo+PiAgewo+PiAtCXN0cnVjdCBtc21fdmJsYW5rX2N0cmwgKnZibF9jdHJsID0gY29udGFpbmVy X29mKHdvcmssCj4+IC0JCQkJCQlzdHJ1Y3QgbXNtX3ZibGFua19jdHJsLAo+IHdvcmspOwo+PiAt CXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBjb250YWluZXJfb2YodmJsX2N0cmwsCj4+ IC0JCQkJCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUsCj4gdmJsYW5rX2N0cmwpOwo+PiArCXN0cnVj dCBtc21fdmJsYW5rX3dvcmsgKnZibF93b3JrID0gY29udGFpbmVyX29mKHdvcmssCj4+ICsJCQkJ CQlzdHJ1Y3QgbXNtX3ZibGFua193b3JrLAo+IHdvcmspOwo+PiArCXN0cnVjdCBtc21fZHJtX3By aXZhdGUgKnByaXYgPSB2Ymxfd29yay0+cHJpdjsKPj4gIAlzdHJ1Y3QgbXNtX2ttcyAqa21zID0g cHJpdi0+a21zOwo+PiAtCXN0cnVjdCB2YmxhbmtfZXZlbnQgKnZibF9ldiwgKnRtcDsKPj4gLQl1 bnNpZ25lZCBsb25nIGZsYWdzOwo+PiAtCj4+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJnZibF9jdHJs LT5sb2NrLCBmbGFncyk7Cj4+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZibF9ldiwgdG1w LCAmdmJsX2N0cmwtPmV2ZW50X2xpc3QsIG5vZGUpCj4gewo+PiAtCQlsaXN0X2RlbCgmdmJsX2V2 LT5ub2RlKTsKPj4gLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmJsX2N0cmwtPmxvY2ssIGZs YWdzKTsKPj4gLQo+PiAtCQlpZiAodmJsX2V2LT5lbmFibGUpCj4+IC0JCQlrbXMtPmZ1bmNzLT5l bmFibGVfdmJsYW5rKGttcywKPj4gLQo+IHByaXYtPmNydGNzW3ZibF9ldi0+Y3J0Y19pZF0pOwo+ PiAtCQllbHNlCj4+IC0JCQlrbXMtPmZ1bmNzLT5kaXNhYmxlX3ZibGFuayhrbXMsCj4+IC0KPiBw cml2LT5jcnRjc1t2YmxfZXYtPmNydGNfaWRdKTsKPj4gCj4+IC0JCWtmcmVlKHZibF9ldik7Cj4+ IC0KPj4gLQkJc3Bpbl9sb2NrX2lycXNhdmUoJnZibF9jdHJsLT5sb2NrLCBmbGFncyk7Cj4+IC0J fQo+PiArCWlmICh2Ymxfd29yay0+ZW5hYmxlKQo+PiArCQlrbXMtPmZ1bmNzLT5lbmFibGVfdmJs YW5rKGttcywKPiBwcml2LT5jcnRjc1t2Ymxfd29yay0+Y3J0Y19pZF0pOwo+PiArCWVsc2UKPj4g KwkJa21zLT5mdW5jcy0+ZGlzYWJsZV92Ymxhbmsoa21zLAo+IHByaXYtPmNydGNzW3ZibF93b3Jr LT5jcnRjX2lkXSk7Cj4+IAo+PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZibF9jdHJsLT5s b2NrLCBmbGFncyk7Cj4+ICsJa2ZyZWUodmJsX3dvcmspOwo+PiAgfQo+PiAKPj4gIHN0YXRpYyBp bnQgdmJsYW5rX2N0cmxfcXVldWVfd29yayhzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2LAo+ PiAgCQkJCQlpbnQgY3J0Y19pZCwgYm9vbCBlbmFibGUpCj4+ICB7Cj4+IC0Jc3RydWN0IG1zbV92 YmxhbmtfY3RybCAqdmJsX2N0cmwgPSAmcHJpdi0+dmJsYW5rX2N0cmw7Cj4+IC0Jc3RydWN0IHZi bGFua19ldmVudCAqdmJsX2V2Owo+PiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICsJc3RydWN0 IG1zbV92Ymxhbmtfd29yayAqdmJsX3dvcms7Cj4+IAo+PiAtCXZibF9ldiA9IGt6YWxsb2Moc2l6 ZW9mKCp2YmxfZXYpLCBHRlBfQVRPTUlDKTsKPj4gLQlpZiAoIXZibF9ldikKPj4gKwl2Ymxfd29y ayA9IGt6YWxsb2Moc2l6ZW9mKCp2Ymxfd29yayksIEdGUF9BVE9NSUMpOwo+PiArCWlmICghdmJs X3dvcmspCj4+ICAJCXJldHVybiAtRU5PTUVNOwo+PiAKPj4gLQl2YmxfZXYtPmNydGNfaWQgPSBj cnRjX2lkOwo+PiAtCXZibF9ldi0+ZW5hYmxlID0gZW5hYmxlOwo+PiArCUlOSVRfV09SSygmdmJs X3dvcmstPndvcmssIHZibGFua19jdHJsX3dvcmtlcik7Cj4+IAo+PiAtCXNwaW5fbG9ja19pcnFz YXZlKCZ2YmxfY3RybC0+bG9jaywgZmxhZ3MpOwo+PiAtCWxpc3RfYWRkX3RhaWwoJnZibF9ldi0+ bm9kZSwgJnZibF9jdHJsLT5ldmVudF9saXN0KTsKPj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZ2YmxfY3RybC0+bG9jaywgZmxhZ3MpOwo+PiArCXZibF93b3JrLT5jcnRjX2lkID0gY3J0Y19p ZDsKPj4gKwl2Ymxfd29yay0+ZW5hYmxlID0gZW5hYmxlOwo+PiArCXZibF93b3JrLT5wcml2ID0g cHJpdjsKPj4gCj4+IC0Jc2NoZWR1bGVfd29yaygmdmJsX2N0cmwtPndvcmspOwo+PiArCXNjaGVk dWxlX3dvcmsoJnZibF93b3JrLT53b3JrKTsKPj4gCj4+ICAJcmV0dXJuIDA7Cj4+ICB9Cj4+IEBA IC0yNjksMTQgKzI1MiwxMyBAQCBzdGF0aWMgaW50IG1zbV9kcm1fdW5pbml0KHN0cnVjdCBkZXZp Y2UgKmRldikKPj4gIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGRldi0+ZGV2X3By aXZhdGU7Cj4+ICAJc3RydWN0IG1zbV9rbXMgKmttcyA9IHByaXYtPmttczsKPj4gIAlzdHJ1Y3Qg bXNtX21kc3MgKm1kc3MgPSBwcml2LT5tZHNzOwo+PiAtCXN0cnVjdCBtc21fdmJsYW5rX2N0cmwg KnZibF9jdHJsID0gJnByaXYtPnZibGFua19jdHJsOwo+PiAtCXN0cnVjdCB2YmxhbmtfZXZlbnQg KnZibF9ldiwgKnRtcDsKPj4gIAlpbnQgaTsKPj4gCj4+ICAJLyogV2UgbXVzdCBjYW5jZWwgYW5k IGNsZWFudXAgYW55IHBlbmRpbmcgdmJsYW5rIGVuYWJsZS9kaXNhYmxlCj4+ICAJICogd29yayBi ZWZvcmUgZHJtX2lycV91bmluc3RhbGwoKSB0byBhdm9pZCB3b3JrIHJlLWVuYWJsaW5nIGFuCj4+ ICAJICogaXJxIGFmdGVyIHVuaW5zdGFsbCBoYXMgZGlzYWJsZWQgaXQuCj4+ICAJICovCj4+ICsK Pj4gIAltc21fZ2VtX3Nocmlua2VyX2NsZWFudXAoZGRldik7Cj4+IAo+PiAgCWRybV9rbXNfaGVs cGVyX3BvbGxfZmluaShkZGV2KTsKPj4gQEAgLTI5MiwxMiArMjc0LDYgQEAgc3RhdGljIGludCBt c21fZHJtX3VuaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICAjZW5kaWYKPj4gIAlkcm1fbW9k ZV9jb25maWdfY2xlYW51cChkZGV2KTsKPj4gCj4+IC0JZmx1c2hfd29yaygmdmJsX2N0cmwtPndv cmspOwo+PiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2YmxfZXYsIHRtcCwgJnZibF9jdHJs LT5ldmVudF9saXN0LCBub2RlKQo+IHsKPj4gLQkJbGlzdF9kZWwoJnZibF9ldi0+bm9kZSk7Cj4+ IC0JCWtmcmVlKHZibF9ldik7Cj4+IC0JfQo+PiAtCj4+ICAJLyogY2xlYW4gdXAgZXZlbnQgd29y a2VyIHRocmVhZHMgKi8KPj4gIAlmb3IgKGkgPSAwOyBpIDwgcHJpdi0+bnVtX2NydGNzOyBpKysp IHsKPj4gIAkJaWYgKHByaXYtPmV2ZW50X3RocmVhZFtpXS50aHJlYWQpIHsKPj4gQEAgLTQ2OSw5 ICs0NDUsNiBAQCBzdGF0aWMgaW50IG1zbV9kcm1faW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdAo+IGRybV9kcml2ZXIgKmRydikKPj4gIAlwcml2LT53cSA9IGFsbG9jX29yZGVyZWRfd29y a3F1ZXVlKCJtc20iLCAwKTsKPj4gCj4+ICAJSU5JVF9MSVNUX0hFQUQoJnByaXYtPmluYWN0aXZl X2xpc3QpOwo+PiAtCUlOSVRfTElTVF9IRUFEKCZwcml2LT52YmxhbmtfY3RybC5ldmVudF9saXN0 KTsKPj4gLQlJTklUX1dPUksoJnByaXYtPnZibGFua19jdHJsLndvcmssIHZibGFua19jdHJsX3dv cmtlcik7Cj4+IC0Jc3Bpbl9sb2NrX2luaXQoJnByaXYtPnZibGFua19jdHJsLmxvY2spOwo+PiAK Pj4gIAlkcm1fbW9kZV9jb25maWdfaW5pdChkZGV2KTsKPj4gCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaAo+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2 LmgKPj4gaW5kZXggMDVkMzNhNy4uZDRjYmRlMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgK Pj4gQEAgLTc3LDEyICs3Nyw2IEBAIGVudW0gbXNtX21kcF9wbGFuZV9wcm9wZXJ0eSB7Cj4+ICAJ UExBTkVfUFJPUF9NQVhfTlVNCj4+ICB9Owo+PiAKPj4gLXN0cnVjdCBtc21fdmJsYW5rX2N0cmwg ewo+PiAtCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwo+PiAtCXN0cnVjdCBsaXN0X2hlYWQgZXZl bnRfbGlzdDsKPj4gLQlzcGlubG9ja190IGxvY2s7Cj4+IC19Owo+PiAtCj4+ICAjZGVmaW5lIE1T TV9HUFVfTUFYX1JJTkdTIDQKPj4gICNkZWZpbmUgTUFYX0hfVElMRVNfUEVSX0RJU1BMQVkgMgo+ PiAKPj4gQEAgLTIyNSw3ICsyMTksNiBAQCBzdHJ1Y3QgbXNtX2RybV9wcml2YXRlIHsKPj4gIAlz dHJ1Y3Qgbm90aWZpZXJfYmxvY2sgdm1hcF9ub3RpZmllcjsKPj4gIAlzdHJ1Y3Qgc2hyaW5rZXIg c2hyaW5rZXI7Cj4+IAo+PiAtCXN0cnVjdCBtc21fdmJsYW5rX2N0cmwgdmJsYW5rX2N0cmw7Cj4+ ICAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnBtX3N0YXRlOwo+PiAgfTsKPj4gCj4+IC0tCj4+ IFRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUg Q29kZSBBdXJvcmEKPiBGb3J1bSwKPj4gYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUg UHJvamVjdAo+PiAKPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPj4gRnJlZWRyZW5vIG1haWxpbmcgbGlzdAo+PiBGcmVlZHJlbm9AbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZnJlZWRyZW5vCgotLSAKSmV5a3VtYXIgUwpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9mcmVlZHJlbm8K