From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 03/28] drm: Expose a method for creating anonymous struct file around drm_minor Date: Thu, 7 Nov 2019 08:12:27 +0000 Message-ID: <20191107081252.10542-3-chris@chris-wilson.co.uk> References: <20191107081252.10542-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id B66B26EEBE for ; Thu, 7 Nov 2019 08:13:02 +0000 (UTC) In-Reply-To: <20191107081252.10542-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org U29tZXRpbWVzIHdlIG5lZWQgdG8gY3JlYXRlIGEgc3RydWN0IGZpbGUgdG8gd3JhcCBhIGRybV9k ZXZpY2UsIGFzIGl0CnRoZSB1c2VyIHdlcmUgdG8gaGF2ZSBvcGVuZWQgL2Rldi9kcmkvY2FyZDAg YnV0IHRvIGRvIHNvIGFub255bW91c2x5CihpLmUuIGZvciBpbnRlcm5hbCB1c2UpLiBQcm92aWRl IGEgdXRpbGl0eSBtZXRob2QgdG8gY3JlYXRlIGEgc3RydWN0CmZpbGUgd2l0aCB0aGUgZHJtX2Rl dmljZS0+ZHJpdmVyLmZvcHMsIHRoYXQgd3JhcCB0aGUgZHJtX2RldmljZS4KCnYyOiBSZXN0cmlj dCB1c2FnZSB0byBzZWxmdGVzdHMKClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZnds bC5jaD4KUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMgfCA0MiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtX2ZpbGUuaCAgICAgfCAgMyArKysK IDIgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZmlsZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMKaW5kZXggZWEz NGJjOTkxODU4Li40ZDkzODVkMWJmMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZmlsZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jCkBAIC0zMSw3ICszMSw5IEBA CiAgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAgKi8KIAorI2luY2x1ZGUgPGxp bnV4L2Fub25faW5vZGVzLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWZlbmNlLmg+CisjaW5jbHVk ZSA8bGludXgvZmlsZS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxp bnV4L3BjaS5oPgogI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KQEAgLTc1NCwzICs3NTYsNDMgQEAg dm9pZCBkcm1fc2VuZF9ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3Bl bmRpbmdfZXZlbnQgKmUpCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2Nr LCBpcnFmbGFncyk7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9zZW5kX2V2ZW50KTsKKworLyoqCisg KiBtb2NrX2RybV9nZXRmaWxlIC0gQ3JlYXRlIGEgbmV3IHN0cnVjdCBmaWxlIGZvciB0aGUgZHJt IGRldmljZQorICogQG1pbm9yOiBkcm0gbWlub3IgdG8gd3JhcCAoZS5nLiAjZHJtX2RldmljZS5w cmltYXJ5KQorICogQGZsYWdzOiBmaWxlIGNyZWF0aW9uIG1vZGUgKE9fUkRXUiBldGMpCisgKgor ICogVGhpcyBjcmVhdGUgYSBuZXcgc3RydWN0IGZpbGUgdGhhdCB3cmFwcyBhIERSTSBmaWxlIGNv bnRleHQgYXJvdW5kIGEKKyAqIERSTSBtaW5vci4gVGhpcyBtaW1pY2tzIHVzZXJzcGFjZSBvcGVu aW5nIGUuZy4gL2Rldi9kcmkvY2FyZDAsIGJ1dCB3aXRob3V0CisgKiBpbnZva2luZyB1c2Vyc3Bh Y2UuIFRoZSBzdHJ1Y3QgZmlsZSBtYXkgYmUgb3BlcmF0ZWQgb24gdXNpbmcgaXRzIGZfb3AKKyAq ICh0aGUgZHJtX2RldmljZS5kcml2ZXIuZm9wcykgdG8gbWltaWNrIHVzZXJzcGFjZSBvcGVyYXRp b25zLCBvciBiZSBzdXBwbGllZAorICogdG8gdXNlcnNwYWNlIGZhY2luZyBmdW5jdGlvbnMgYXMg YW4gaW50ZXJuYWwvYW5vbnltb3VzIGNsaWVudC4KKyAqCisgKiBSRVRVUk5TOgorICogUG9pbnRl ciB0byBuZXdseSBjcmVhdGVkIHN0cnVjdCBmaWxlLCBFUlJfUFRSIG9uIGZhaWx1cmUuCisgKi8K K3N0cnVjdCBmaWxlICptb2NrX2RybV9nZXRmaWxlKHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yLCB1 bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG1pbm9yLT5k ZXY7CisJc3RydWN0IGRybV9maWxlICpwcml2OworCXN0cnVjdCBmaWxlICpmaWxlOworCisJcHJp diA9IGRybV9maWxlX2FsbG9jKG1pbm9yKTsKKwlpZiAoSVNfRVJSKHByaXYpKQorCQlyZXR1cm4g RVJSX0NBU1QocHJpdik7CisKKwlmaWxlID0gYW5vbl9pbm9kZV9nZXRmaWxlKCJkcm0iLCBkZXYt PmRyaXZlci0+Zm9wcywgcHJpdiwgZmxhZ3MpOworCWlmIChJU19FUlIoZmlsZSkpIHsKKwkJZHJt X2ZpbGVfZnJlZShwcml2KTsKKwkJcmV0dXJuIGZpbGU7CisJfQorCisJLyogRXZlcnlvbmUgc2hh cmVzIGEgc2luZ2xlIGdsb2JhbCBhZGRyZXNzIHNwYWNlICovCisJZmlsZS0+Zl9tYXBwaW5nID0g ZGV2LT5hbm9uX2lub2RlLT5pX21hcHBpbmc7CisKKwlkcm1fZGV2X2dldChkZXYpOworCXByaXYt PmZpbHAgPSBmaWxlOworCisJcmV0dXJuIGZpbGU7Cit9CitFWFBPUlRfU1lNQk9MX0ZPUl9URVNU U19PTkxZKG1vY2tfZHJtX2dldGZpbGUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Zp bGUuaCBiL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKaW5kZXggNjdhZjYwYmI1MjdhLi44YjA5OWIz NDc4MTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKKysrIGIvaW5jbHVkZS9k cm0vZHJtX2ZpbGUuaApAQCAtNDIsNiArNDIsNyBAQCBzdHJ1Y3QgZG1hX2ZlbmNlOwogc3RydWN0 IGRybV9maWxlOwogc3RydWN0IGRybV9kZXZpY2U7CiBzdHJ1Y3QgZGV2aWNlOworc3RydWN0IGZp bGU7CiAKIC8qCiAgKiBGSVhNRTogTm90IHN1cmUgd2Ugd2FudCB0byBoYXZlIGRybV9taW5vciBo ZXJlIGluIHRoZSBlbmQsIGJ1dCB0byBhdm9pZApAQCAtMzg3LDQgKzM4OCw2IEBAIHZvaWQgZHJt X2V2ZW50X2NhbmNlbF9mcmVlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiB2b2lkIGRybV9zZW5k X2V2ZW50X2xvY2tlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3BlbmRpbmdf ZXZlbnQgKmUpOwogdm9pZCBkcm1fc2VuZF9ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgZHJtX3BlbmRpbmdfZXZlbnQgKmUpOwogCitzdHJ1Y3QgZmlsZSAqbW9ja19kcm1fZ2V0 ZmlsZShzdHJ1Y3QgZHJtX21pbm9yICptaW5vciwgdW5zaWduZWQgaW50IGZsYWdzKTsKKwogI2Vu ZGlmIC8qIF9EUk1fRklMRV9IXyAqLwotLSAKMi4yNC4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9B1C4C5DF60 for ; Thu, 7 Nov 2019 08:13:08 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7AF852077C for ; Thu, 7 Nov 2019 08:13:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7AF852077C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=chris-wilson.co.uk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DFF4D6EEC3; Thu, 7 Nov 2019 08:13:05 +0000 (UTC) Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id B66B26EEBE for ; Thu, 7 Nov 2019 08:13:02 +0000 (UTC) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 19110659-1500050 for multiple; Thu, 07 Nov 2019 08:12:54 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Thu, 7 Nov 2019 08:12:27 +0000 Message-Id: <20191107081252.10542-3-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191107081252.10542-1-chris@chris-wilson.co.uk> References: <20191107081252.10542-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 03/28] drm: Expose a method for creating anonymous struct file around drm_minor X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Daniel Vetter Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191107081227.pkOtA5vd5ROkQHnOvtvByJ2HpL_NneDD2lNyonjjGEU@z> U29tZXRpbWVzIHdlIG5lZWQgdG8gY3JlYXRlIGEgc3RydWN0IGZpbGUgdG8gd3JhcCBhIGRybV9k ZXZpY2UsIGFzIGl0CnRoZSB1c2VyIHdlcmUgdG8gaGF2ZSBvcGVuZWQgL2Rldi9kcmkvY2FyZDAg YnV0IHRvIGRvIHNvIGFub255bW91c2x5CihpLmUuIGZvciBpbnRlcm5hbCB1c2UpLiBQcm92aWRl IGEgdXRpbGl0eSBtZXRob2QgdG8gY3JlYXRlIGEgc3RydWN0CmZpbGUgd2l0aCB0aGUgZHJtX2Rl dmljZS0+ZHJpdmVyLmZvcHMsIHRoYXQgd3JhcCB0aGUgZHJtX2RldmljZS4KCnYyOiBSZXN0cmlj dCB1c2FnZSB0byBzZWxmdGVzdHMKClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZnds bC5jaD4KUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMgfCA0MiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtX2ZpbGUuaCAgICAgfCAgMyArKysK IDIgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZmlsZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMKaW5kZXggZWEz NGJjOTkxODU4Li40ZDkzODVkMWJmMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZmlsZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jCkBAIC0zMSw3ICszMSw5IEBA CiAgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAgKi8KIAorI2luY2x1ZGUgPGxp bnV4L2Fub25faW5vZGVzLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWZlbmNlLmg+CisjaW5jbHVk ZSA8bGludXgvZmlsZS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxp bnV4L3BjaS5oPgogI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KQEAgLTc1NCwzICs3NTYsNDMgQEAg dm9pZCBkcm1fc2VuZF9ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3Bl bmRpbmdfZXZlbnQgKmUpCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2Nr LCBpcnFmbGFncyk7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9zZW5kX2V2ZW50KTsKKworLyoqCisg KiBtb2NrX2RybV9nZXRmaWxlIC0gQ3JlYXRlIGEgbmV3IHN0cnVjdCBmaWxlIGZvciB0aGUgZHJt IGRldmljZQorICogQG1pbm9yOiBkcm0gbWlub3IgdG8gd3JhcCAoZS5nLiAjZHJtX2RldmljZS5w cmltYXJ5KQorICogQGZsYWdzOiBmaWxlIGNyZWF0aW9uIG1vZGUgKE9fUkRXUiBldGMpCisgKgor ICogVGhpcyBjcmVhdGUgYSBuZXcgc3RydWN0IGZpbGUgdGhhdCB3cmFwcyBhIERSTSBmaWxlIGNv bnRleHQgYXJvdW5kIGEKKyAqIERSTSBtaW5vci4gVGhpcyBtaW1pY2tzIHVzZXJzcGFjZSBvcGVu aW5nIGUuZy4gL2Rldi9kcmkvY2FyZDAsIGJ1dCB3aXRob3V0CisgKiBpbnZva2luZyB1c2Vyc3Bh Y2UuIFRoZSBzdHJ1Y3QgZmlsZSBtYXkgYmUgb3BlcmF0ZWQgb24gdXNpbmcgaXRzIGZfb3AKKyAq ICh0aGUgZHJtX2RldmljZS5kcml2ZXIuZm9wcykgdG8gbWltaWNrIHVzZXJzcGFjZSBvcGVyYXRp b25zLCBvciBiZSBzdXBwbGllZAorICogdG8gdXNlcnNwYWNlIGZhY2luZyBmdW5jdGlvbnMgYXMg YW4gaW50ZXJuYWwvYW5vbnltb3VzIGNsaWVudC4KKyAqCisgKiBSRVRVUk5TOgorICogUG9pbnRl ciB0byBuZXdseSBjcmVhdGVkIHN0cnVjdCBmaWxlLCBFUlJfUFRSIG9uIGZhaWx1cmUuCisgKi8K K3N0cnVjdCBmaWxlICptb2NrX2RybV9nZXRmaWxlKHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yLCB1 bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG1pbm9yLT5k ZXY7CisJc3RydWN0IGRybV9maWxlICpwcml2OworCXN0cnVjdCBmaWxlICpmaWxlOworCisJcHJp diA9IGRybV9maWxlX2FsbG9jKG1pbm9yKTsKKwlpZiAoSVNfRVJSKHByaXYpKQorCQlyZXR1cm4g RVJSX0NBU1QocHJpdik7CisKKwlmaWxlID0gYW5vbl9pbm9kZV9nZXRmaWxlKCJkcm0iLCBkZXYt PmRyaXZlci0+Zm9wcywgcHJpdiwgZmxhZ3MpOworCWlmIChJU19FUlIoZmlsZSkpIHsKKwkJZHJt X2ZpbGVfZnJlZShwcml2KTsKKwkJcmV0dXJuIGZpbGU7CisJfQorCisJLyogRXZlcnlvbmUgc2hh cmVzIGEgc2luZ2xlIGdsb2JhbCBhZGRyZXNzIHNwYWNlICovCisJZmlsZS0+Zl9tYXBwaW5nID0g ZGV2LT5hbm9uX2lub2RlLT5pX21hcHBpbmc7CisKKwlkcm1fZGV2X2dldChkZXYpOworCXByaXYt PmZpbHAgPSBmaWxlOworCisJcmV0dXJuIGZpbGU7Cit9CitFWFBPUlRfU1lNQk9MX0ZPUl9URVNU U19PTkxZKG1vY2tfZHJtX2dldGZpbGUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Zp bGUuaCBiL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKaW5kZXggNjdhZjYwYmI1MjdhLi44YjA5OWIz NDc4MTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKKysrIGIvaW5jbHVkZS9k cm0vZHJtX2ZpbGUuaApAQCAtNDIsNiArNDIsNyBAQCBzdHJ1Y3QgZG1hX2ZlbmNlOwogc3RydWN0 IGRybV9maWxlOwogc3RydWN0IGRybV9kZXZpY2U7CiBzdHJ1Y3QgZGV2aWNlOworc3RydWN0IGZp bGU7CiAKIC8qCiAgKiBGSVhNRTogTm90IHN1cmUgd2Ugd2FudCB0byBoYXZlIGRybV9taW5vciBo ZXJlIGluIHRoZSBlbmQsIGJ1dCB0byBhdm9pZApAQCAtMzg3LDQgKzM4OCw2IEBAIHZvaWQgZHJt X2V2ZW50X2NhbmNlbF9mcmVlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiB2b2lkIGRybV9zZW5k X2V2ZW50X2xvY2tlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3BlbmRpbmdf ZXZlbnQgKmUpOwogdm9pZCBkcm1fc2VuZF9ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgZHJtX3BlbmRpbmdfZXZlbnQgKmUpOwogCitzdHJ1Y3QgZmlsZSAqbW9ja19kcm1fZ2V0 ZmlsZShzdHJ1Y3QgZHJtX21pbm9yICptaW5vciwgdW5zaWduZWQgaW50IGZsYWdzKTsKKwogI2Vu ZGlmIC8qIF9EUk1fRklMRV9IXyAqLwotLSAKMi4yNC4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZng=