Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1szozI-008CV6-CC for pgsql-bugs@arkaria.postgresql.org; Sun, 13 Oct 2024 03:09:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1szozG-00EXOb-98 for pgsql-bugs@arkaria.postgresql.org; Sun, 13 Oct 2024 03:09:42 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1szozF-00EXIq-Ng for pgsql-bugs@lists.postgresql.org; Sun, 13 Oct 2024 03:09:42 +0000 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1szoz9-000c2p-FB for pgsql-bugs@lists.postgresql.org; Sun, 13 Oct 2024 03:09:40 +0000 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-7e9e38dd5f1so2594502a12.0 for ; Sat, 12 Oct 2024 20:09:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728788974; x=1729393774; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=OXBZxr2D/7AOqVNELVLhn7xkC5D9ghXDddAmPt1g4XA=; b=XVfg9TBugxfK806gCmOKlhen6YGlDTmW8zDD/qH5WGne4BEmTfkQr4ML+yvkGyrXTR OQD4D9wnme3xGh00QLBNebx+zaM7TPSKpYbsIN4HSd25rIyNHxR6MkvFm5rfH/eSZs38 7GqkS8g1heDloCJQpfLQlfclFoGrc6BAyES5nkOJrYQokUq4huYfVGVTSFXFtf9QR6TM R5PV/WlIvSuKKuuKGQ0N5UY1tu1pQ/y+kLsyJFMvS/7x2iKfHgLla8Pir3PwmgM1bZ+F HdqE0/L2ZJDl3fv9B4bEiRpZYOPkmdkhOdRQJKV2j3zCq/zBt9fgX+XUEWxSd78JAA5u WUOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728788974; x=1729393774; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=OXBZxr2D/7AOqVNELVLhn7xkC5D9ghXDddAmPt1g4XA=; b=b/MFauctwMosvrVvzi1zWXCXNHO7qALsUxgVS4JWNyWd04LHVtUcbBkU+Wx0VtL8Ve 6Ot4KEuvL891YqSPIOz0gQe8/+VZm/Wzqte9XNnOO0al9n+Iw/VZlres6rOqZheQzJdi 8ZeQIG85BCOXSQhAhHLsx7wa1W0nqlhTFLPDUdNB0svJrELZ8x5YJfDPSvIqDe5/ycAp JF/Vbk6TlTnYM8N7gP7fNdkICDul581aSWCkIVkvBhuZn3Av3r2ibDWFyQjbSEf87DyS /G5oisqYTsmvov3sIhuiltb5oZ4PTrwplZefBDd6YtTdqlh/BZdFfrQuAT1DV+592gKr MDJA== X-Forwarded-Encrypted: i=1; AJvYcCUJQUCG3spIhJWrtWRJYnotEXRDmxfjlVfQ8DFNwP2zo9ELPVw8qo/8nOEOsBnx+wE/7uQ9GuHxfwqw@lists.postgresql.org X-Gm-Message-State: AOJu0YxFMk4YDMHoWBPj0F3bhHk7q4K2TSUFupBcX7Be/OZh53PoTBoN 13A8Q3B8+GGE0SwXKqTO/WFZQxoIhx9837cRDdrBgWcjJa0bTdEF X-Google-Smtp-Source: AGHT+IEMBkeex+bRK6nM55as4mATtyaY4IXJhEEnhdTqbfwNYcPeS4mLlWBGmLEvsw0iyD54EvHsuw== X-Received: by 2002:a05:6a21:2d89:b0:1cf:2a35:6d21 with SMTP id adf61e73a8af0-1d8bcfb3cf1mr12685424637.45.1728788974067; Sat, 12 Oct 2024 20:09:34 -0700 (PDT) Received: from [192.168.1.119] ([103.206.205.199]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e474889a8sm2797517b3a.29.2024.10.12.20.09.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 12 Oct 2024 20:09:33 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------rJJH9SU8KO3voIE8Ybe1iE4a" Message-ID: <59f605ce-00f2-401b-be1e-5b684326ab6e@gmail.com> Date: Sun, 13 Oct 2024 10:09:29 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Question of Parallel Hash Join on TPC-H Benchmark To: Ba Jinsheng Cc: Tomas Vondra , Zhang Mingli , "pgsql-bugs@lists.postgresql.org" References: <20f9671d-6f40-429b-a749-a2f53086e0dd@vondra.me> <3c7df680-97e6-4f20-ab27-65fb8282f95e@Spark> <978176f8-14a5-4f4d-8925-07d2e7dec4ce@gmail.com> Content-Language: en-US From: Andrei Lepikhov In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------rJJH9SU8KO3voIE8Ybe1iE4a Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 13/10/2024 01:11, Ba Jinsheng wrote: > I changed the code to generate an efficient query plan (only the > HashJoin in fifth line is in parallel), so I am wondering whether it is > possible to optimize the code to enable this efficient query plan in > default? I believe at least, it would improve the performance of > PostgreSQL on the standard benchmark TPC-H. > If you need, I can provide my environment in docker for your analysis. Thanks for the case! It was a pretty exciting case. The answer to your question is simple: we have a correlated subquery here with the clause: 'p_partkey = ps_partkey'. Because of that, the top JOIN operator has parameterised inner, and parallel workers can't be used according to the current state of the code. See comments in the code: /* * If the inner path is parameterised, we can't use a partial hashjoin. * Parameterised partial paths are not supported. The caller should * already have verified that no lateral rels are required here. */ Even if you transform the subquery to SEMI JOIN, you will have a parameterised join, and the parallel plan will be declined. So, the best you can do here is replace clause 'ps_supplycost = (SELECT ...)' with 'ps_supplycost IN (SELECT ...)' I got quite a beneficial speedup there (see attached). So, what can we improve here? - I am suspicious about the parallel plans for parameterised paths, at least soon. - Improve pull-ups for subqueries. Especially if we can prove that the subquery has a single aggregate returning only one tuple. It looks doable. -- regards, Andrei Lepikhov --------------rJJH9SU8KO3voIE8Ybe1iE4a Content-Type: text/plain; charset=UTF-8; name="final_explain.txt" Content-Disposition: attachment; filename="final_explain.txt" Content-Transfer-Encoding: base64 IExpbWl0ICAoY29zdD02MTIuMTcuLjEwODg5LjQ3IHJvd3M9MTAwIHdpZHRoPTE5MikgKGFj dHVhbCB0aW1lPTEwOC44MDcuLjE0MS44NzYgcm93cz0xMDAgbG9vcHM9MSkKICAgLT4gIElu Y3JlbWVudGFsIFNvcnQgIChjb3N0PTYxMi4xNy4uMjA4NTguNDYgcm93cz0xOTcgd2lkdGg9 MTkyKSAoYWN0dWFsIHRpbWU9MTA4LjgwNC4uMTQxLjg2MyByb3dzPTEwMCBsb29wcz0xKQog ICAgICAgICBTb3J0IEtleTogc3VwcGxpZXIuc19hY2N0YmFsIERFU0MsIG5hdGlvbi5uX25h bWUsIHN1cHBsaWVyLnNfbmFtZSwgcGFydC5wX3BhcnRrZXkKICAgICAgICAgUHJlc29ydGVk IEtleTogc3VwcGxpZXIuc19hY2N0YmFsLCBuYXRpb24ubl9uYW1lLCBzdXBwbGllci5zX25h bWUKICAgICAgICAgRnVsbC1zb3J0IEdyb3VwczogNCAgU29ydCBNZXRob2Q6IHF1aWNrc29y dCAgQXZlcmFnZSBNZW1vcnk6IDMza0IgIFBlYWsgTWVtb3J5OiAzM2tCCiAgICAgICAgIC0+ ICBOZXN0ZWQgTG9vcCAgKGNvc3Q9NTA4LjkxLi4yMDg0OS41OSByb3dzPTE5NyB3aWR0aD0x OTIpIChhY3R1YWwgdGltZT05Ni41MDQuLjE0MS43Mzcgcm93cz0xMDEgbG9vcHM9MSkKICAg ICAgICAgICAgICAgSm9pbiBGaWx0ZXI6IChzdXBwbGllci5zX3N1cHBrZXkgPSBwYXJ0c3Vw cC5wc19zdXBwa2V5KQogICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgSm9pbiBGaWx0 ZXI6IDIwOTYwNgogICAgICAgICAgICAgICAtPiAgR2F0aGVyIE1lcmdlICAoY29zdD0zNTku NzYuLjEwMDUuNzEgcm93cz02MDYgd2lkdGg9MTY2KSAoYWN0dWFsIHRpbWU9MTAuMDk5Li4x MC4zMTIgcm93cz00MzMgbG9vcHM9MSkKICAgICAgICAgICAgICAgICAgICAgV29ya2VycyBQ bGFubmVkOiA1CiAgICAgICAgICAgICAgICAgICAgIFdvcmtlcnMgTGF1bmNoZWQ6IDUKICAg ICAgICAgICAgICAgICAgICAgLT4gIFNvcnQgIChjb3N0PTI1OS42OC4uMjU5Ljk5IHJvd3M9 MTIxIHdpZHRoPTE2NikgKGFjdHVhbCB0aW1lPTEuNTY4Li4xLjU4MyByb3dzPTcyIGxvb3Bz PTYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBzdXBwbGllci5zX2Fj Y3RiYWwgREVTQywgbmF0aW9uLm5fbmFtZSwgc3VwcGxpZXIuc19uYW1lCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNvcnQgTWV0aG9kOiBxdWlja3NvcnQgIE1lbW9yeTogNDIya0IK ICAgICAgICAgICAgICAgICAgICAgICAgICAgV29ya2VyIDA6ICBTb3J0IE1ldGhvZDogcXVp Y2tzb3J0ICBNZW1vcnk6IDI1a0IKICAgICAgICAgICAgICAgICAgICAgICAgICAgV29ya2Vy IDE6ICBTb3J0IE1ldGhvZDogcXVpY2tzb3J0ICBNZW1vcnk6IDI1a0IKICAgICAgICAgICAg ICAgICAgICAgICAgICAgV29ya2VyIDI6ICBTb3J0IE1ldGhvZDogcXVpY2tzb3J0ICBNZW1v cnk6IDI1a0IKICAgICAgICAgICAgICAgICAgICAgICAgICAgV29ya2VyIDM6ICBTb3J0IE1l dGhvZDogcXVpY2tzb3J0ICBNZW1vcnk6IDI1a0IKICAgICAgICAgICAgICAgICAgICAgICAg ICAgV29ya2VyIDQ6ICBTb3J0IE1ldGhvZDogcXVpY2tzb3J0ICBNZW1vcnk6IDI1a0IKICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbiAgKGNvc3Q9 Mi4zMC4uMjU1LjUwIHJvd3M9MTIxIHdpZHRoPTE2NikgKGFjdHVhbCB0aW1lPTAuMDY2Li4x LjA4NSByb3dzPTMzNCBsb29wcz02KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6IChzdXBwbGllci5zX25hdGlvbmtleSA9IG5hdGlvbi5uX25hdGlvbmtl eSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHN1cHBsaWVyICAoY29zdD0wLjAwLi4yNDMuMDAgcm93cz0yMDYwIHdpZHRoPTE0 NCkgKGFjdHVhbCB0aW1lPTAuMDA1Li4yLjA3NCByb3dzPTEwMDAwIGxvb3BzPTEpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoICAoY29zdD0y LjI3Li4yLjI3IHJvd3M9MyB3aWR0aD0zMCkgKGFjdHVhbCB0aW1lPTAuMDQyLi4wLjA0MyBy b3dzPTEgbG9vcHM9NikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QnVja2V0czogMTAyNCAgQmF0Y2hlczogMSAgTWVtb3J5IFVzYWdlOiA0MGtCCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4g IChjb3N0PTEuMDUuLjIuMjcgcm93cz0zIHdpZHRoPTMwKSAoYWN0dWFsIHRpbWU9MC4wODku LjAuMTI0IHJvd3M9NSBsb29wcz0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBIYXNoIENvbmQ6IChuYXRpb24ubl9yZWdpb25rZXkgPSByZWdpb24u cl9yZWdpb25rZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBuYXRpb24gIChjb3N0PTAuMDAuLjEuMTUg cm93cz0xNCB3aWR0aD0zNCkgKGFjdHVhbCB0aW1lPTAuMDA0Li4wLjAwOCByb3dzPTI1IGxv b3BzPTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBQYXJhbGxlbCBIYXNoICAoY29zdD0xLjA0Li4xLjA0IHJvd3M9MSB3aWR0aD00KSAoYWN0 dWFsIHRpbWU9MC4wMjUuLjAuMDI2IHJvd3M9MSBsb29wcz0xKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWNrZXRzOiAxMDI0ICBCYXRj aGVzOiAxICBNZW1vcnkgVXNhZ2U6IDQwa0IKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHJlZ2lv biAgKGNvc3Q9MC4wMC4uMS4wNCByb3dzPTEgd2lkdGg9NCkgKGFjdHVhbCB0aW1lPTAuMDE0 Li4wLjAxNiByb3dzPTEgbG9vcHM9MSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAocl9uYW1lID0gJ0FTSUEnOjpi cGNoYXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJvd3MgUmVtb3ZlZCBieSBGaWx0ZXI6IDQKICAgICAgICAgICAgICAgLT4g IE1hdGVyaWFsaXplICAoY29zdD0xNDkuMTUuLjE1NDM2LjQ0IHJvd3M9NDg1IHdpZHRoPTM0 KSAoYWN0dWFsIHRpbWU9MC4wMDIuLjAuMjM0IHJvd3M9NDg0IGxvb3BzPTQzMykKICAgICAg ICAgICAgICAgICAgICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IDUxa0IK ICAgICAgICAgICAgICAgICAgICAgLT4gIE5lc3RlZCBMb29wICAoY29zdD0xNDkuMTUuLjE1 NDM0LjAyIHJvd3M9NDg1IHdpZHRoPTM0KSAoYWN0dWFsIHRpbWU9MC44NDYuLjg0LjgzMSBy b3dzPTQ4NSBsb29wcz0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgR2F0aGVy ICAoY29zdD0xMDAuMDAuLjU0MjEuMDAgcm93cz04MjYgd2lkdGg9MzApIChhY3R1YWwgdGlt ZT0wLjQxMi4uMjAuNTY3IHJvd3M9ODI2IGxvb3BzPTEpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogOAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBXb3JrZXJzIExhdW5jaGVkOiAzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBwYXJ0ICAoY29zdD0wLjAwLi40 NDk1LjAwIHJvd3M9MTAzIHdpZHRoPTMwKSAoYWN0dWFsIHRpbWU9MC4xMzkuLjI1LjE1MCBy b3dzPTIwNiBsb29wcz00KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGaWx0ZXI6ICgoKHBfdHlwZSk6OnRleHQgfn4gJyVTVEVFTCc6OnRleHQpIEFORCAocF9z aXplID0gMzApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3dz IFJlbW92ZWQgYnkgRmlsdGVyOiA0OTc5NAogICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luICAoY29zdD00OS4xNS4uNjEuMjAgcm93cz0xIHdpZHRoPTgpIChhY3R1 YWwgdGltZT0wLjA3My4uMC4wNzQgcm93cz0xIGxvb3BzPTgyNikKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAocGFydHN1cHAucHNfc3VwcGx5Y29zdCA9 IChtaW4ocGFydHN1cHBfMS5wc19zdXBwbHljb3N0KSkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHBhcnRzdXBwX3BrZXkgb24gcGFy dHN1cHAgIChjb3N0PTAuNDIuLjEyLjQ3IHJvd3M9NCB3aWR0aD0xNCkgKGFjdHVhbCB0aW1l PTAuMDA4Li4wLjAxMCByb3dzPTQgbG9vcHM9NDg1KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAocHNfcGFydGtleSA9IHBhcnQucF9wYXJ0 a2V5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCAgKGNvc3Q9 NDguNzEuLjQ4LjcxIHJvd3M9MSB3aWR0aD0zMikgKGFjdHVhbCB0aW1lPTAuMDY0Li4wLjA2 NCByb3dzPTEgbG9vcHM9ODI2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCdWNrZXRzOiAxMDI0ICBCYXRjaGVzOiAxICBNZW1vcnkgVXNhZ2U6IDlrQgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQWdncmVnYXRlICAoY29z dD00OC43MC4uNDguNzEgcm93cz0xIHdpZHRoPTMyKSAoYWN0dWFsIHRpbWU9MC4wNjMuLjAu MDYzIHJvd3M9MSBsb29wcz04MjYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcCAgKGNvc3Q9MC44NS4uNDguNzAgcm93cz0x IHdpZHRoPTYpIChhY3R1YWwgdGltZT0wLjA0Ni4uMC4wNTkgcm93cz0xIGxvb3BzPTgyNikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSm9p biBGaWx0ZXI6IChyZWdpb25fMS5yX3JlZ2lvbmtleSA9IG5hdGlvbl8xLm5fcmVnaW9ua2V5 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS b3dzIFJlbW92ZWQgYnkgSm9pbiBGaWx0ZXI6IDMKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJlZ2lvbiByZWdp b25fMSAgKGNvc3Q9MC4wMC4uMS4wNiByb3dzPTEgd2lkdGg9NCkgKGFjdHVhbCB0aW1lPTAu MDAzLi4wLjAwNCByb3dzPTEgbG9vcHM9ODI2KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChyX25hbWUgPSAnQVNJ QSc6OmJwY2hhcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEZpbHRlcjogNAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgTmVzdGVkIExvb3Ag IChjb3N0PTAuODUuLjQ3LjU5IHJvd3M9NCB3aWR0aD0xMCkgKGFjdHVhbCB0aW1lPTAuMDIx Li4wLjA1NCByb3dzPTQgbG9vcHM9ODI2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgTmVzdGVkIExvb3AgIChjb3N0PTAu NzEuLjQ2Ljk2IHJvd3M9NCB3aWR0aD0xMCkgKGFjdHVhbCB0aW1lPTAuMDE3Li4wLjAzOCBy b3dzPTQgbG9vcHM9ODI2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBwYXJ0c3Vw cF9wa2V5IG9uIHBhcnRzdXBwIHBhcnRzdXBwXzEgIChjb3N0PTAuNDIuLjEzLjc1IHJvd3M9 NCB3aWR0aD0xMCkgKGFjdHVhbCB0aW1lPTAuMDEwLi4wLjAxMiByb3dzPTQgbG9vcHM9ODI2 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAocHNfcGFydGtleSA9IHBhcnQucF9wYXJ0 a2V5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBzdXBwbGllcl9wa2V5IG9uIHN1 cHBsaWVyIHN1cHBsaWVyXzEgIChjb3N0PTAuMjkuLjguMzAgcm93cz0xIHdpZHRoPTgpIChh Y3R1YWwgdGltZT0wLjAwNS4uMC4wMDUgcm93cz0xIGxvb3BzPTMzMDQpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6IChzX3N1cHBrZXkgPSBwYXJ0c3VwcF8xLnBzX3N1cHBrZXkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBJbmRleCBTY2FuIHVzaW5nIG5hdGlvbl9wa2V5IG9uIG5hdGlvbiBuYXRpb25fMSAg KGNvc3Q9MC4xNC4uMC4xNiByb3dzPTEgd2lkdGg9OCkgKGFjdHVhbCB0aW1lPTAuMDAzLi4w LjAwMyByb3dzPTEgbG9vcHM9MzMwNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKG5fbmF0aW9u a2V5ID0gc3VwcGxpZXJfMS5zX25hdGlvbmtleSkKIFBsYW5uaW5nIFRpbWU6IDE0Ljk3NSBt cwogRXhlY3V0aW9uIFRpbWU6IDE0NC4xNjEgbXMKKDY0IHJvd3MpCg== --------------rJJH9SU8KO3voIE8Ybe1iE4a--