<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>155256</bug_id>
          
          <creation_ts>2016-03-09 13:38:09 -0800</creation_ts>
          <short_desc>iOS-sim debug: WebCoreNSURLSessionTest.BasicOperation and WebCoreNSURLSessionTest.InvalidateEmpty asserting</short_desc>
          <delta_ts>2016-03-11 12:26:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>155035</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1172731</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-03-09 13:38:09 -0800</bug_when>
    <thetext>iOS-sim debug: WebCoreNSURLSessionTest.BasicOperation and WebCoreNSURLSessionTest.InvalidateEmpty asserting

Tests that failed:
  WebCoreNSURLSessionTest.BasicOperation
  WebCoreNSURLSessionTest.InvalidateEmpty

ASSERTION FAILED: s_mainRunLoop
/Volumes/Data/slave/ios-simulator-9-debug/build/Source/WTF/wtf/RunLoop.cpp(72) : static bool WTF::RunLoop::isMain()
1   0x10c6dee40 WTFCrash
2   0x10c72bd52 WTF::RunLoop::isMain()
3   0x1123f571d WebCore::applicationBundleIdentifier()
4   0x1123f5901 WebCore::applicationBundleIsEqualTo(WTF::String const&amp;)
5   0x1123f6355 WebCore::IOSApplication::isTheEconomistOnIphone()
6   0x11c8e8820 +[WebView(WebPrivate) enableWebThread]
7   0x11c8d91f6 WebKitInitialize
8   0x11b30cf61 ___UIApplicationLoadWebKit_block_invoke
9   0x119dcc4a7 _dispatch_client_callout
10  0x119db9c7b dispatch_once_f
11  0x118f54bff _class_initialize
12  0x118f5ad23 lookUpImpOrForward
13  0x118f698bb objc_msgSend
14  0x10b21b608 TestWebKitAPI::WebKit1_AudioSessionCategoryIOS_Test::TestBody()
15  0x10b441a8a testing::Test::Run()
16  0x10b44236d testing::internal::TestInfoImpl::Run()
17  0x10b442f0d testing::TestCase::Run()
18  0x10b448e92 testing::internal::UnitTestImpl::RunAllTests()
19  0x10b448b09 testing::UnitTest::Run()
20  0x10b35f6ee TestWebKitAPI::TestsController::run(int, char**)
21  0x10b3d6065 main
22  0x119dfb92d start

&lt;https://build.webkit.org/builders/Apple%20iOS%209%20Simulator%20Debug%20WK2%20(Tests)/builds/89/steps/run-api-tests/logs/stdio&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173504</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-03-10 17:59:57 -0800</bug_when>
    <thetext>static String&amp; applicationBundleIdentifier()
{
    ASSERT(RunLoop::isMain());

    static NeverDestroyed&lt;String&gt; identifier([[NSBundle mainBundle] bundleIdentifier]);

    return identifier;
}

Main run loop is never set up by iOS WebKit1, and it doesn&apos;t make a lot of sense there.

I think that it is a bug in application check code that it tries to use NSBundle from the web thread (the test crashes in main thread, but I think that this code would run the on web thread normally).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173510</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-10 18:36:30 -0800</bug_when>
    <thetext>Oh, I added this assertion recently and did not realize this would be an issue on WK1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173512</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-10 18:37:58 -0800</bug_when>
    <thetext>Very likely a regression from &lt;http://trac.webkit.org/changeset/197628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173522</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-10 18:59:04 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Very likely a regression from &lt;http://trac.webkit.org/changeset/197628&gt;

So before r197628, we were always using [[NSBundle mainBundle] bundleIdentifier] directly on iOS (no matter the thread). So I propose the restore this behavior as follows:
diff --git a/Source/WebCore/platform/RuntimeApplicationChecks.mm b/Source/WebCore/platform/RuntimeApplicationChecks.mm
index b76bb2e..b2583bd 100644
--- a/Source/WebCore/platform/RuntimeApplicationChecks.mm
+++ b/Source/WebCore/platform/RuntimeApplicationChecks.mm
@@ -28,7 +28,7 @@
 
 #import &lt;Foundation/NSBundle.h&gt;
 #import &lt;wtf/NeverDestroyed.h&gt;
-#import &lt;wtf/RunLoop.h&gt;
+#import &lt;wtf/MainThread.h&gt;
 #import &lt;wtf/text/WTFString.h&gt;
 
 namespace WebCore {
@@ -39,7 +39,7 @@ namespace WebCore {
 // the WK2 UIProcess.
 static String&amp; applicationBundleIdentifier()
 {
-    ASSERT(RunLoop::isMain());
+    ASSERT(isMainThread());
 
     static NeverDestroyed&lt;String&gt; identifier([[NSBundle mainBundle] bundleIdentifier]);
 
@@ -53,6 +53,10 @@ void setApplicationBundleIdentifier(const String&amp; bundleIdentifier)
 
 static bool applicationBundleIsEqualTo(const String&amp; bundleIdentifierString)
 {
+#if USE(WEB_THREAD)
+    if (isWebThread())
+        return [[NSBundle mainBundle] bundleIdentifier] == bundleIdentifierString;
+#endif
     return applicationBundleIdentifier() == bundleIdentifierString;
 }

I will test before uploading but let me know if you have any thoughts.

If we are in the WebThread, then we are using WK1 and therefore we don&apos;t care about the applicationBundleIdentifier(), main bundle identifier does the right thing.

For other cases (WK2 or WK1 main thread), we keep using the static applicationBundleIdentifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173538</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-03-10 19:44:57 -0800</bug_when>
    <thetext>*** Bug 155275 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173551</commentid>
    <comment_count>6</comment_count>
      <attachid>273674</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-10 20:05:01 -0800</bug_when>
    <thetext>Created attachment 273674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173607</commentid>
    <comment_count>7</comment_count>
      <attachid>273674</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-03-10 22:25:15 -0800</bug_when>
    <thetext>Comment on attachment 273674
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=273674&amp;action=review

&gt; Source/WebCore/platform/RuntimeApplicationChecks.mm:42
&gt; -    ASSERT(RunLoop::isMain());
&gt; +    ASSERT(isMainThread());

I&apos;m not sure if this change is right. This assertion use to say that we are only using NSBundle for the main thread, which is the right thing to require given that NSBundle is not thread safe.

isMainThread() is a lot more complicated beast, and I don&apos;t really see how it verifies anything useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173609</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-03-10 22:28:19 -0800</bug_when>
    <thetext>And if we are concerned about thread safety of WebCore code here (as opposed to NSBundle), then this function can use dispatch_once. I actually don&apos;t know if we enable thread-safe statics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173733</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-03-11 09:07:05 -0800</bug_when>
    <thetext>We compile with -fno-threadsafe-statics. Also, as Chris pointed out in person, String is not thread safe anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173739</commentid>
    <comment_count>10</comment_count>
      <attachid>273674</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-11 09:18:34 -0800</bug_when>
    <thetext>Comment on attachment 273674
Patch

After discussing this with Alexey, I have decided to take another stab at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173761</commentid>
    <comment_count>11</comment_count>
      <attachid>273741</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-11 09:55:31 -0800</bug_when>
    <thetext>Created attachment 273741
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173764</commentid>
    <comment_count>12</comment_count>
      <attachid>273742</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-11 09:57:44 -0800</bug_when>
    <thetext>Created attachment 273742
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173781</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-11 10:35:36 -0800</bug_when>
    <thetext>I have a better / simpler idea. I will upload another patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173796</commentid>
    <comment_count>14</comment_count>
      <attachid>273747</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-11 11:01:44 -0800</bug_when>
    <thetext>Created attachment 273747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173797</commentid>
    <comment_count>15</comment_count>
      <attachid>273747</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-03-11 11:10:24 -0800</bug_when>
    <thetext>Comment on attachment 273747
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=273747&amp;action=review

&gt; Source/WebCore/platform/RuntimeApplicationChecks.mm:37
&gt; +static bool wasApplicationBundleIdentifierOverrideQueried = false;

Nitpick: I&apos;d name this applicationBundleIdentifierOverrideWasQueried, so that &quot;if (applicationBundleIdentifierOverrideWasQueried)&quot; reads like a sentence.

&gt; Source/WebCore/platform/RuntimeApplicationChecks.mm:54
&gt; +    const auto&amp; identifier = applicationBundleIdentifierOverride();

Will this be true?

ASSERT(identifier.isNull() || RunLoop::isMain());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173807</commentid>
    <comment_count>16</comment_count>
      <attachid>273749</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-11 11:35:17 -0800</bug_when>
    <thetext>Created attachment 273749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173809</commentid>
    <comment_count>17</comment_count>
      <attachid>273747</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-11 11:37:56 -0800</bug_when>
    <thetext>Comment on attachment 273747
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=273747&amp;action=review

&gt;&gt; Source/WebCore/platform/RuntimeApplicationChecks.mm:37
&gt;&gt; +static bool wasApplicationBundleIdentifierOverrideQueried = false;
&gt; 
&gt; Nitpick: I&apos;d name this applicationBundleIdentifierOverrideWasQueried, so that &quot;if (applicationBundleIdentifierOverrideWasQueried)&quot; reads like a sentence.

Done.

&gt;&gt; Source/WebCore/platform/RuntimeApplicationChecks.mm:54
&gt;&gt; +    const auto&amp; identifier = applicationBundleIdentifierOverride();
&gt; 
&gt; Will this be true?
&gt; 
&gt; ASSERT(identifier.isNull() || RunLoop::isMain());

It should. I added it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173819</commentid>
    <comment_count>18</comment_count>
      <attachid>273749</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 12:25:57 -0800</bug_when>
    <thetext>Comment on attachment 273749
Patch

Clearing flags on attachment: 273749

Committed r198040: &lt;http://trac.webkit.org/changeset/198040&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173820</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 12:26:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273674</attachid>
            <date>2016-03-10 20:05:01 -0800</date>
            <delta_ts>2016-03-11 09:55:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155256-20160310200448.patch</filename>
            <type>text/plain</type>
            <size>2711</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTliNDNjYWQ5MmM2NGYy
MTQzYmRlOGM1OTBkMDUzZWVkOGU4N2U0NC4uNjhjZTI2ZGVjMGQ5ZWFmMGIyOGRlMzRjZjZmMjc0
Nzk5YTY1ZDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTAzLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaU9TLXNpbSBkZWJ1ZzogV2Vi
Q29yZU5TVVJMU2Vzc2lvblRlc3QuQmFzaWNPcGVyYXRpb24gYW5kIFdlYkNvcmVOU1VSTFNlc3Np
b25UZXN0LkludmFsaWRhdGVFbXB0eSBhc3NlcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIHIxOTc2MjggY29uc29saWRhdGVkIHRoZSBydW50aW1l
IGFwcGxpY2F0aW9uIGNoZWNraW5nIGNvZGUgZm9yIGlPUyBhbmQKKyAgICAgICAgTWFjLiBIb3dl
dmVyLCB3aGlsZSB0aGUgbmV3IGNvZGUgd29ya3MgZmluZSBmb3IgV2ViS2l0MiwgaXQgaXMgdW5z
YWZlCisgICAgICAgIG9uIFdlYktpdDEgLyBpT1MgYW5kIGhpdHMgYXNzZXJ0aW9uIGluIGRlYnVn
LiBUaGUgcmVhc29uIGlzIHRoYXQKKyAgICAgICAgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KCkgZm9yIGdldHRpbmcgY2FsbGVkIGZyb20gc2V2ZXJhbCB0aHJlYWRzCisgICAgICAgIChVSVRo
cmVhZCAvIFdlYlRocmVhZCkuIFRoaXMgcGF0Y2ggcmVzdG9yZXMgdGhlIHByZXZpb3VzIGJlaGF2
aW9yIGZvcgorICAgICAgICBXSzEvaU9TIGJ5IHVzaW5nIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
YnVuZGxlSWRlbnRpZmllcl0gaW5zdGVhZCBvZgorICAgICAgICBhcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoKSBpZiB3ZSBhcmUgaW4gdGhlIFdlYlRocmVhZCBvZiB0aGUKKyAgICAgICAgVUlU
aHJlYWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MubW06
CisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIpOgorICAgICAg
ICBVcGRhdGUgYXNzZXJ0aW9uIHRvIHVzZSBpc01haW5UaHJlYWQoKSBpbnN0ZWFkIG9mIFJ1bkxv
b3A6OmlzTWFpbigpCisgICAgICAgIHNvIHRoYXQgaXQgd29ya3Mgb24gaU9TIC8gV2ViS2l0MSBh
cyB3ZWxsLgorCisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbyk6
CisKIDIwMTYtMDMtMTAgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIENTUDogSW1wbGVtZW50IHN1cHBvcnQgZm9yIHNjcmlwdCBhbmQgc3R5bGUgbm9uY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
bW0KaW5kZXggYjc2YmIyZTRlMjQ5OGY4ZDFlZjAwNjY3MzRmOGI3NDk4OWQzODQ1ZC4uNjJlZmJi
MTEwMWE4YTkzOTAwOTA3ODI1NmVlMjIzMWI4ZGM2NTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5tbQpAQCAtMjcsOCArMjcs
OCBAQAogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAKICNpbXBvcnQgPEZv
dW5kYXRpb24vTlNCdW5kbGUuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB0aGUgV0syIFVJUHJvY2Vzcy4KIHN0YXRp
YyBTdHJpbmcmIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpCiB7Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaWRlbnRpZmllcihbW05TQnVuZGxlIG1haW5CdW5k
bGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKIApAQCAtNTMsNiArNTMsMTAgQEAgdm9pZCBzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKQog
CiBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbyhjb25zdCBTdHJpbmcmIGJ1
bmRsZUlkZW50aWZpZXJTdHJpbmcpCiB7CisjaWYgVVNFKFdFQl9USFJFQUQpCisgICAgaWYgKGlz
V2ViVGhyZWFkKCkgfHwgaXNVSVRocmVhZCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pID09IGJ1bmRsZUlkZW50aWZpZXJT
dHJpbmc7CisjZW5kaWYKICAgICByZXR1cm4gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkg
PT0gYnVuZGxlSWRlbnRpZmllclN0cmluZzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273741</attachid>
            <date>2016-03-11 09:55:31 -0800</date>
            <delta_ts>2016-03-11 09:57:44 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>155256_iOS_WK1_AppCheck_wip.patch</filename>
            <type>text/plain</type>
            <size>3206</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OWI0M2NhLi42OGNlMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTYtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBpT1Mtc2ltIGRlYnVnOiBXZWJDb3JlTlNVUkxTZXNzaW9uVGVzdC5CYXNpY09wZXJhdGlvbiBh
bmQgV2ViQ29yZU5TVVJMU2Vzc2lvblRlc3QuSW52YWxpZGF0ZUVtcHR5IGFzc2VydGluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjU2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcjE5NzYyOCBjb25z
b2xpZGF0ZWQgdGhlIHJ1bnRpbWUgYXBwbGljYXRpb24gY2hlY2tpbmcgY29kZSBmb3IgaU9TIGFu
ZAorICAgICAgICBNYWMuIEhvd2V2ZXIsIHdoaWxlIHRoZSBuZXcgY29kZSB3b3JrcyBmaW5lIGZv
ciBXZWJLaXQyLCBpdCBpcyB1bnNhZmUKKyAgICAgICAgb24gV2ViS2l0MSAvIGlPUyBhbmQgaGl0
cyBhc3NlcnRpb24gaW4gZGVidWcuIFRoZSByZWFzb24gaXMgdGhhdAorICAgICAgICBhcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKSBmb3IgZ2V0dGluZyBjYWxsZWQgZnJvbSBzZXZlcmFsIHRo
cmVhZHMKKyAgICAgICAgKFVJVGhyZWFkIC8gV2ViVGhyZWFkKS4gVGhpcyBwYXRjaCByZXN0b3Jl
cyB0aGUgcHJldmlvdXMgYmVoYXZpb3IgZm9yCisgICAgICAgIFdLMS9pT1MgYnkgdXNpbmcgW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpbnN0ZWFkIG9mCisgICAgICAg
IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIGlmIHdlIGFyZSBpbiB0aGUgV2ViVGhyZWFk
IG9mIHRoZQorICAgICAgICBVSVRocmVhZC4KKworICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcik6CisgICAgICAgIFVwZGF0ZSBhc3NlcnRpb24gdG8gdXNlIGlzTWFpblRocmVh
ZCgpIGluc3RlYWQgb2YgUnVuTG9vcDo6aXNNYWluKCkKKyAgICAgICAgc28gdGhhdCBpdCB3b3Jr
cyBvbiBpT1MgLyBXZWJLaXQxIGFzIHdlbGwuCisKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0
aW9uQnVuZGxlSXNFcXVhbFRvKToKKwogMjAxNi0wMy0xMCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NQOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3Igc2NyaXB0
IGFuZCBzdHlsZSBub25jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5tbQppbmRleCBiNzZiYjJlLi5hZWY3YTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tCkBA
IC0yNywyMSArMjcsMzUgQEAKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgog
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TQnVuZGxlLmg+CisjaW1wb3J0IDx0aHJlYWQ+CisjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0j
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIFN0cmluZyBtYWluQnVuZGxlSWRlbnRpZmll
cigpCit7CisgICAgcmV0dXJuIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmll
cl07Cit9CisKIC8vIFRoZSBhcHBsaWNhdGlvbiBidW5kbGUgaWRlbnRpZmllciBnZXRzIHNldCB0
byB0aGUgVUlQcm9jZXNzIGJ1bmRsZSBpZGVudGlmaWVyIGJ5IHRoZSBXZWJQcm9jZXNzIGFuZAog
Ly8gdGhlIG5ldHdvcmtpbmcgcHJvY2VzcyB1cG9uIGluaXRpYWxpemF0aW9uLgogLy8gSWYgbm90
IGV4cGxpY2l0bHkgc2V0LCB0aGlzIHdpbGwgcmV0dXJuIHRoZSBtYWluIGJ1bmRsZSBpZGVudGlm
aWVyIHdoaWNoIGlzIGFjY3VyYXRlIGZvciBXSzEgb3IKIC8vIHRoZSBXSzIgVUlQcm9jZXNzLgog
c3RhdGljIFN0cmluZyYgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkKIHsKLSAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKKyAgICBzdGF0
aWMgc3RkOjp0aHJlYWQ6OmlkIGluaXRpYWxpemF0aW9uVGhyZWFkOworICAgIHN0YXRpYyBkaXNw
YXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsK
KyAgICAgICAgaW5pdGlhbGl6YXRpb25UaHJlYWQgPSBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQo
KTsKKyAgICB9KTsKKworICAgIEFTU0VSVChpbml0aWFsaXphdGlvblRocmVhZCA9PSBzdGQ6OnRo
aXNfdGhyZWFkOjpnZXRfaWQoKSk7CisjZW5kaWYKIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGlkZW50aWZpZXIoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaWRlbnRpZmllcihtYWlu
QnVuZGxlSWRlbnRpZmllcigpKTsKIAogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQpAQCAtNTMs
NiArNjcsMTAgQEAgdm9pZCBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBidW5kbGVJZGVudGlmaWVyKQogCiBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbkJ1bmRsZUlz
RXF1YWxUbyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpCiB7CisjaWYgVVNF
KFdFQl9USFJFQUQpCisgICAgaWYgKGlzV2ViVGhyZWFkKCkpCisgICAgICAgIHJldHVybiBtYWlu
QnVuZGxlSWRlbnRpZmllcigpID09IGJ1bmRsZUlkZW50aWZpZXJTdHJpbmc7CisjZW5kaWYKICAg
ICByZXR1cm4gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkgPT0gYnVuZGxlSWRlbnRpZmll
clN0cmluZzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273742</attachid>
            <date>2016-03-11 09:57:44 -0800</date>
            <delta_ts>2016-03-11 10:29:36 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>155256_iOS_WK1_AppCheck_wip.patch</filename>
            <type>text/plain</type>
            <size>3181</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OWI0M2NhLi40YmY5ODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTYtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBpT1Mtc2ltIGRlYnVnOiBXZWJDb3JlTlNVUkxTZXNzaW9uVGVzdC5CYXNpY09wZXJhdGlvbiBh
bmQgV2ViQ29yZU5TVVJMU2Vzc2lvblRlc3QuSW52YWxpZGF0ZUVtcHR5IGFzc2VydGluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjU2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcjE5NzYyOCBjb25z
b2xpZGF0ZWQgdGhlIHJ1bnRpbWUgYXBwbGljYXRpb24gY2hlY2tpbmcgY29kZSBmb3IgaU9TIGFu
ZAorICAgICAgICBNYWMuIEhvd2V2ZXIsIHdoaWxlIHRoZSBuZXcgY29kZSB3b3JrcyBmaW5lIGZv
ciBXZWJLaXQyLCBpdCBpcyB1bnNhZmUKKyAgICAgICAgb24gV2ViS2l0MSAvIGlPUyBhbmQgaGl0
cyBhc3NlcnRpb24gaW4gZGVidWcuIFRoZSByZWFzb24gaXMgdGhhdAorICAgICAgICBhcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKSBmb3IgZ2V0dGluZyBjYWxsZWQgZnJvbSBzZXZlcmFsIHRo
cmVhZHMKKyAgICAgICAgKFVJVGhyZWFkIC8gV2ViVGhyZWFkKS4gVGhpcyBwYXRjaCByZXN0b3Jl
cyB0aGUgcHJldmlvdXMgYmVoYXZpb3IgZm9yCisgICAgICAgIFdLMS9pT1MgYnkgdXNpbmcgW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBpbnN0ZWFkIG9mCisgICAgICAg
IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIGlmIHdlIGFyZSBpbiB0aGUgV2ViVGhyZWFk
LgorCisgICAgICAgICogcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKToKKyAgICAgICAgVXBk
YXRlIGFzc2VydGlvbiB0byB1c2UgaXNNYWluVGhyZWFkKCkgaW5zdGVhZCBvZiBSdW5Mb29wOjpp
c01haW4oKQorICAgICAgICBzbyB0aGF0IGl0IHdvcmtzIG9uIGlPUyAvIFdlYktpdDEgYXMgd2Vs
bC4KKworICAgICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8pOgorCiAy
MDE2LTAzLTEwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBD
U1A6IEltcGxlbWVudCBzdXBwb3J0IGZvciBzY3JpcHQgYW5kIHN0eWxlIG5vbmNlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tCmlu
ZGV4IGI3NmJiMmUuLmFlZjdhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0KQEAgLTI3LDIxICsyNywzNSBAQAogI2ltcG9y
dCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNC
dW5kbGUuaD4KKyNpbXBvcnQgPHRocmVhZD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgU3RyaW5nIG1haW5CdW5kbGVJZGVudGlmaWVyKCkKK3sKKyAgICByZXR1cm4gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXTsKK30KKwogLy8gVGhlIGFwcGxpY2F0
aW9uIGJ1bmRsZSBpZGVudGlmaWVyIGdldHMgc2V0IHRvIHRoZSBVSVByb2Nlc3MgYnVuZGxlIGlk
ZW50aWZpZXIgYnkgdGhlIFdlYlByb2Nlc3MgYW5kCiAvLyB0aGUgbmV0d29ya2luZyBwcm9jZXNz
IHVwb24gaW5pdGlhbGl6YXRpb24uCiAvLyBJZiBub3QgZXhwbGljaXRseSBzZXQsIHRoaXMgd2ls
bCByZXR1cm4gdGhlIG1haW4gYnVuZGxlIGlkZW50aWZpZXIgd2hpY2ggaXMgYWNjdXJhdGUgZm9y
IFdLMSBvcgogLy8gdGhlIFdLMiBVSVByb2Nlc3MuCiBzdGF0aWMgU3RyaW5nJiBhcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cisj
aWZuZGVmIEFTU0VSVF9ESVNBQkxFRAorICAgIHN0YXRpYyBzdGQ6OnRocmVhZDo6aWQgaW5pdGlh
bGl6YXRpb25UaHJlYWQ7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Cisg
ICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBpbml0aWFsaXphdGlvblRo
cmVhZCA9IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpOworICAgIH0pOworCisgICAgQVNTRVJU
KGluaXRpYWxpemF0aW9uVGhyZWFkID09IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpKTsKKyNl
bmRpZgogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaWRlbnRpZmllcihbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBpZGVudGlmaWVyKG1haW5CdW5kbGVJZGVudGlmaWVyKCkpOwogCiAg
ICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CkBAIC01Myw2ICs2NywxMCBAQCB2b2lkIHNldEFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpCiAK
IHN0YXRpYyBib29sIGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKGNvbnN0IFN0cmluZyYgYnVu
ZGxlSWRlbnRpZmllclN0cmluZykKIHsKKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyAgICBpZiAoaXNX
ZWJUaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIG1haW5CdW5kbGVJZGVudGlmaWVyKCkgPT0gYnVu
ZGxlSWRlbnRpZmllclN0cmluZzsKKyNlbmRpZgogICAgIHJldHVybiBhcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoKSA9PSBidW5kbGVJZGVudGlmaWVyU3RyaW5nOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273747</attachid>
            <date>2016-03-11 11:01:44 -0800</date>
            <delta_ts>2016-03-11 11:35:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155256-20160311110133.patch</filename>
            <type>text/plain</type>
            <size>14600</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTliNDNjYWQ5MmM2NGYy
MTQzYmRlOGM1OTBkMDUzZWVkOGU4N2U0NC4uMTI2YmY4MDk4MzEzMTdiZTc5YThkZDc0MTY2NjZk
N2ZlZDQ4MmZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE2LTAzLTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaU9TLXNpbSBkZWJ1ZzogV2Vi
Q29yZU5TVVJMU2Vzc2lvblRlc3QuQmFzaWNPcGVyYXRpb24gYW5kIFdlYkNvcmVOU1VSTFNlc3Np
b25UZXN0LkludmFsaWRhdGVFbXB0eSBhc3NlcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIHIxOTc2MjggY29uc29saWRhdGVkIHRoZSBydW50aW1l
IGFwcGxpY2F0aW9uIGNoZWNraW5nIGNvZGUgZm9yIGlPUyBhbmQKKyAgICAgICAgTWFjLiBIb3dl
dmVyLCB3aGlsZSB0aGUgbmV3IGNvZGUgd29ya3MgZmluZSBmb3IgV2ViS2l0MiwgaXQgaXMgdW5z
YWZlCisgICAgICAgIG9uIFdlYktpdDEgLyBpT1MgYW5kIGhpdHMgYXNzZXJ0aW9uIGluIGRlYnVn
LiBUaGUgcmVhc29uIGlzIHRoYXQKKyAgICAgICAgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KCkgZm9yIGdldHRpbmcgY2FsbGVkIGZyb20gc2V2ZXJhbCB0aHJlYWRzCisgICAgICAgIChXZWJU
aHJlYWQsIFVJVGhyZWFkKS4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBwcm9ibGVtLCB0aGlz
IHBhdGNoIHJlbmFtZXMgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkKKyAgICAgICAgdG8g
YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyT3ZlcnJpZGUoKSBhbmQgb25seSBpbml0aWFsaXpl
cyB0aGUKKyAgICAgICAgb3ZlcnJpZGUgdXBvbiBXZWJQcm9jZXNzIGFuZCBOZXR3b3JrIHByb2Nl
c3MgaW5pdGlhbGl6YXRpb24uIFdlIHRoZXJlZm9yZQorICAgICAgICBkbyBub3QgaW5pdGlhbGl6
ZSB0aGUgb3ZlcnJpZGUgaW4gV2ViS2l0MSBvciBpbiB0aGUgV2ViS2l0MiBVSVByb2Nlc3MuCisg
ICAgICAgIFdoZW4gdGhlIG92ZXJyaWRlIGlzIG5vdCBzZXQsIHdlIGZhbGwgYmFjayB0byB1c2lu
ZyB0aGUgbWFpbiBidW5kbGUKKyAgICAgICAgaWRlbnRpZmllciAod2hpY2ggZG9lcyB0aGUgcmln
aHQgdGhpbmcgZm9yIFdlYktpdDEgLyBXZWJLaXQyIFVJUHJvY2VzcykKKyAgICAgICAgYnV0IHdp
dGhvdXQgY2FjaGluZyBpdCB0byBhdm9pZCB0aHJlYWQgc2FmZXR5IGlzc3Vlcy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIGFscmVhZHkgY292ZXJlZCBieSBBUEkgdGVzdHMgY3VycmVudGx5IGNy
YXNoaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyT3ZlcnJpZGUp
OgorICAgICAgICAtIFJlbmFtZWQgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkgdG8gYXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyT3ZlcnJpZGUoKQorICAgICAgICAgIGFuZCBvbmx5IGlu
aXRpYWxpemUgdXBvbiBpbml0aWFsaXphdGlvbiBvZiB0aGUgV2ViUHJvY2VzcyBvciB0aGUgTmV0
d29yaworICAgICAgICAgIHByb2Nlc3MuCisgICAgICAgIC0gSW4gZGVidWcsIHNldCBhIGZsYWcg
dG8gaW5kaWNhdGUgdGhhdCB0aGUgb3ZlcnJpZGUgd2FzIGFscmVhZHkgcXVlcmllZC4KKworICAg
ICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKToKKyAgICAgICAgTmV3
IHV0aWxpdHkgZnVuY3Rpb24gdGhhdCBpcyByZXR1cm5zIHRoZSBhcHBsaWNhdGlvbiBidW5kbGUg
b3ZlcnJpZGUgaWYgaXQgaXMKKyAgICAgICAgc2V0IGFuZCBmYWxsYmFjayB0byBjYWxsaW5nIFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gb3RoZXJ3aXNlLgorCisgICAg
ICAgIChXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIpOgorICAgICAgICBB
ZGQgYXNzZXJ0aW9ucyB0byBtYWtlIHN1cmUgdGhhdDoKKyAgICAgICAgMS4gVGhpcyBpcyBhbHdh
eXMgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAyLiBUaGUgYXBwbGljYXRp
b24gYnVuZGxlIGlkZW50aWZpZXIgaGFzIG5vdCBiZWVuIHF1ZXJpZWQgKmJlZm9yZSogZ2V0dGlu
ZworICAgICAgICAgICBvdmVycmlkZW4gYXMgdGhpcyB3b3VsZCBpbmRpY2F0ZSBhIGJ1ZyBpbiBv
dXIgY29kZSBhbmQgd2Ugd291bGQgaGF2ZSB3cm9uZ2x5CisgICAgICAgICAgIHJldHVybmVkIHRo
ZSBtYWluIGJ1bmRsZSBpZGVudGlmaWVyIGluIHN1Y2ggY2FzZS4KKworICAgICAgICAoV2ViQ29y
ZTo6TWFjQXBwbGljYXRpb246OmlzQXBwbGVNYWlsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0Fw
cGxpY2F0aW9uOjppc0lCb29rcyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6
aXNJVHVuZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzTWljcm9zb2Z0
TWVzc2VuZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc0Fkb2JlSW5z
dGFsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE91
dGxvb2spOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzUXVpY2tlbkVzc2Vu
dGlhbHMpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzQXBlcnR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzVmVyc2lvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzSFJCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpN
YWNBcHBsaWNhdGlvbjo6aXNIaXBDaGF0KToKKyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0
aW9uOjppc01vYmlsZVNhZmFyaSk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6
aXNEdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNN
b2JpbGVTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNGYWNlYm9v
ayk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNEYWlqaXNlbkRpY3Rpb25h
cnkpOgorICAgICAgICAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTkFTQUhEKToKKyAgICAg
ICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1RoZUVjb25vbWlzdE9uSXBob25lKToKKyAg
ICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYlByb2Nlc3MpOgorICAgICAgICAo
V2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzSUJvb2tzKToKKyAgICAgICAgRHJvcCBhc3NlcnRp
b25zIG1ha2luZyBzdXJlIHRoZSBjYWNoZWQgZmxhZyBpcyBjb3JyZWN0LiBXZSBub3cgaGF2ZQor
ICAgICAgICBhbiBhc3NlcnRpb24gdG8gZGV0ZWN0IHRoaXMgZWFybGllciBpbiBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKS4KKwogMjAxNi0wMy0xMCAgRGFuaWVsIEJhdGVzICA8ZGFi
YXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NQOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3Igc2Ny
aXB0IGFuZCBzdHlsZSBub25jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5tbQppbmRleCBiNzZiYjJlNGUyNDk4ZjhkMWVmMDA2Njcz
NGY4Yjc0OTg5ZDM4NDVkLi5iMzUwMDVmNjEwODA4YWJlMzM4NzMwMThmMjBhYTg4OWYzY2Y5MWZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLm1tCkBAIC0zMywyMiArMzMsMzMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisj
aWYgIUFTU0VSVF9NU0dfRElTQUJMRUQKK3N0YXRpYyBib29sIHdhc0FwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllck92ZXJyaWRlUXVlcmllZCA9IGZhbHNlOworI2VuZGlmCisKIC8vIFRoZSBhcHBs
aWNhdGlvbiBidW5kbGUgaWRlbnRpZmllciBnZXRzIHNldCB0byB0aGUgVUlQcm9jZXNzIGJ1bmRs
ZSBpZGVudGlmaWVyIGJ5IHRoZSBXZWJQcm9jZXNzIGFuZAotLy8gdGhlIG5ldHdvcmtpbmcgcHJv
Y2VzcyB1cG9uIGluaXRpYWxpemF0aW9uLgotLy8gSWYgbm90IGV4cGxpY2l0bHkgc2V0LCB0aGlz
IHdpbGwgcmV0dXJuIHRoZSBtYWluIGJ1bmRsZSBpZGVudGlmaWVyIHdoaWNoIGlzIGFjY3VyYXRl
IGZvciBXSzEgb3IKLS8vIHRoZSBXSzIgVUlQcm9jZXNzLgotc3RhdGljIFN0cmluZyYgYXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCkKKy8vIHRoZSBOZXR3b3JraW5nIHVwb24gaW5pdGlhbGl6
YXRpb24uIEl0IGlzIHVuc2V0IG90aGVyd2lzZS4KK3N0YXRpYyBTdHJpbmcmIGFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllck92ZXJyaWRlKCkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaWRlbnRpZmllcihbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKLQorICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGlkZW50aWZpZXI7CisjaWYgIUFTU0VSVF9NU0dfRElTQUJMRUQK
KyAgICB3YXNBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJPdmVycmlkZVF1ZXJpZWQgPSB0cnVl
OworI2VuZGlmCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKK3N0YXRpYyBTdHJpbmcgYXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkKK3sKKyAgICAvLyBUaGUgb3ZlcnJpZGUgb25seSBn
ZXRzIHNldCBpbiBXZWJLaXQyJ3MgV2ViUHJvY2VzcyBhbmQgTmV0d29ya1Byb2Nlc3MuIElmIHVu
c2V0LCB3ZSB1c2UgdGhlIG1haW4gYnVuZGxlIGlkZW50aWZpZXIuCisgICAgY29uc3QgYXV0byYg
aWRlbnRpZmllciA9IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllck92ZXJyaWRlKCk7CisgICAg
cmV0dXJuIGlkZW50aWZpZXIuaXNOdWxsKCkgPyBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBidW5kbGVJZGVudGlmaWVyXSkgOiBpZGVudGlmaWVyOworfQorCiB2b2lkIHNldEFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpCiB7Ci0g
ICAgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkgPSBidW5kbGVJZGVudGlmaWVyOworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghd2Fz
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyT3ZlcnJpZGVRdWVyaWVkLCAiYXBwbGljYXRpb25C
dW5kbGVJc0VxdWFsVG8oKSBzaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJP
dmVycmlkZSgpID0gYnVuZGxlSWRlbnRpZmllcjsKIH0KIAogc3RhdGljIGJvb2wgYXBwbGljYXRp
b25CdW5kbGVJc0VxdWFsVG8oY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5nKQpA
QCAtNjEsMTA2ICs3Miw5MCBAQCBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxU
byhjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpCiBib29sIE1hY0FwcGxpY2F0
aW9uOjppc1NhZmFyaSgpCiB7CiAgICAgc3RhdGljIGJvb2wgaXNTYWZhcmkgPSBhcHBsaWNhdGlv
bkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLlNhZmFyaSIpOwotICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoaXNTYWZhcmkgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5T
YWZhcmkiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc1NhZmFyaTsKIH0KIAogYm9vbCBNYWNBcHBs
aWNhdGlvbjo6aXNBcHBsZU1haWwoKQogewogICAgIHN0YXRpYyBib29sIGlzQXBwbGVNYWlsID0g
YXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5tYWlsIik7Ci0gICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShpc0FwcGxlTWFpbCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygi
Y29tLmFwcGxlLm1haWwiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc0FwcGxlTWFpbDsKIH0KIAog
Ym9vbCBNYWNBcHBsaWNhdGlvbjo6aXNJQm9va3MoKQogewogICAgIHN0YXRpYyBib29sIGlzSUJv
b2tzID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pQm9va3NYIik7Ci0g
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0lCb29rcyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1
YWxUbygiY29tLmFwcGxlLmlCb29rc1giKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBz
ZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc0lCb29rczsK
IH0KIAogYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNJVHVuZXMoKQogewogICAgIHN0YXRpYyBib29s
IGlzSVR1bmVzID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pVHVuZXMi
KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzSVR1bmVzID09IGFwcGxpY2F0aW9uQnVuZGxl
SXNFcXVhbFRvKCJjb20uYXBwbGUuaVR1bmVzIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZv
cmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNJVHVu
ZXM7CiB9CiAKIGJvb2wgTWFjQXBwbGljYXRpb246OmlzTWljcm9zb2Z0TWVzc2VuZ2VyKCkKIHsK
ICAgICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE1lc3NlbmdlciA9IGFwcGxpY2F0aW9uQnVuZGxl
SXNFcXVhbFRvKCJjb20ubWljcm9zb2Z0Lk1lc3NlbmdlciIpOwotICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoaXNNaWNyb3NvZnRNZXNzZW5nZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8o
ImNvbS5taWNyb3NvZnQuTWVzc2VuZ2VyIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUg
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNNaWNyb3Nv
ZnRNZXNzZW5nZXI7CiB9CiAKIGJvb2wgTWFjQXBwbGljYXRpb246OmlzQWRvYmVJbnN0YWxsZXIo
KQogewogICAgIHN0YXRpYyBib29sIGlzQWRvYmVJbnN0YWxsZXIgPSBhcHBsaWNhdGlvbkJ1bmRs
ZUlzRXF1YWxUbygiY29tLmFkb2JlLkluc3RhbGxlcnMuU2V0dXAiKTsKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGlzQWRvYmVJbnN0YWxsZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8o
ImNvbS5hZG9iZS5JbnN0YWxsZXJzLlNldHVwIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZv
cmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNBZG9i
ZUluc3RhbGxlcjsKIH0KIAogYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNBT0xJbnN0YW50TWVzc2Vu
Z2VyKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpc0FPTEluc3RhbnRNZXNzZW5nZXIgPSBhcHBsaWNh
dGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFvbC5haW0uZGVza3RvcCIpOwotICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoaXNBT0xJbnN0YW50TWVzc2VuZ2VyID09IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJjb20uYW9sLmFpbS5kZXNrdG9wIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZv
cmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNBT0xJ
bnN0YW50TWVzc2VuZ2VyOwogfQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE15
RGF5KCkKIHsKICAgICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE15RGF5ID0gYXBwbGljYXRpb25C
dW5kbGVJc0VxdWFsVG8oImNvbS5taWNyb3NvZnQubXlkYXkiKTsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGlzTWljcm9zb2Z0TXlEYXkgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNv
bS5taWNyb3NvZnQubXlkYXkiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc01pY3Jvc29mdE15RGF5
OwogfQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE91dGxvb2soKQogewogICAg
IHN0YXRpYyBib29sIGlzTWljcm9zb2Z0T3V0bG9vayA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJjb20ubWljcm9zb2Z0Lk91dGxvb2siKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlz
TWljcm9zb2Z0T3V0bG9vayA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jv
c29mdC5PdXRsb29rIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNNaWNyb3NvZnRPdXRsb29rOwog
fQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc1F1aWNrZW5Fc3NlbnRpYWxzKCkKIHsKICAgICBz
dGF0aWMgYm9vbCBpc1F1aWNrZW5Fc3NlbnRpYWxzID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFs
VG8oImNvbS5pbnR1aXQuUXVpY2tlbkVzc2VudGlhbHMiKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGlzUXVpY2tlbkVzc2VudGlhbHMgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNv
bS5pbnR1aXQuUXVpY2tlbkVzc2VudGlhbHMiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9y
ZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc1F1aWNr
ZW5Fc3NlbnRpYWxzOwogfQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc0FwZXJ0dXJlKCkKIHsK
ICAgICBzdGF0aWMgYm9vbCBpc0FwZXJ0dXJlID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8o
ImNvbS5hcHBsZS5BcGVydHVyZSIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNBcGVydHVy
ZSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLkFwZXJ0dXJlIiksICJT
aG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KCkiKTsKICAgICByZXR1cm4gaXNBcGVydHVyZTsKIH0KIAogYm9vbCBNYWNBcHBsaWNhdGlvbjo6
aXNWZXJzaW9ucygpCiB7CiAgICAgc3RhdGljIGJvb2wgaXNWZXJzaW9ucyA9IGFwcGxpY2F0aW9u
QnVuZGxlSXNFcXVhbFRvKCJjb20uYmxhY2twaXhlbC52ZXJzaW9ucyIpOwotICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoaXNWZXJzaW9ucyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29t
LmJsYWNrcGl4ZWwudmVyc2lvbnMiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc1ZlcnNpb25zOwog
fQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc0hSQmxvY2soKQogewogICAgIHN0YXRpYyBib29s
IGlzSFJCbG9jayA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uaHJibG9jay50YXgu
MjAxMCIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNIUkJsb2NrID09IGFwcGxpY2F0aW9u
QnVuZGxlSXNFcXVhbFRvKCJjb20uaHJibG9jay50YXguMjAxMCIpLCAiU2hvdWxkIG5vdCBiZSBj
YWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CiAgICAgcmV0
dXJuIGlzSFJCbG9jazsKIH0KIAogYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNTb2xpZFN0YXRlTmV0
d29ya3NEb3dubG9hZGVyKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpc1NvbGlkU3RhdGVOZXR3b3Jr
c0Rvd25sb2FkZXIgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLnNvbGlkc3RhdGVu
ZXR3b3Jrcy5hd2tob3N0Iik7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc1NvbGlkU3RhdGVO
ZXR3b3Jrc0Rvd25sb2FkZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5zb2xp
ZHN0YXRlbmV0d29ya3MuYXdraG9zdCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7Ci0KICAgICByZXR1cm4gaXNTb2xpZFN0
YXRlTmV0d29ya3NEb3dubG9hZGVyOwogfQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc0hpcENo
YXQoKQogewogICAgIHN0YXRpYyBib29sIGlzSGlwQ2hhdCA9IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJjb20uaGlwY2hhdC5IaXBDaGF0Iik7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShp
c0hpcENoYXQgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5oaXBjaGF0LkhpcENo
YXQiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc0hpcENoYXQ7CiB9CiAKQEAgLTE3MSwxNCArMTY2
LDEyIEBAIGJvb2wgTWFjQXBwbGljYXRpb246OmlzSGlwQ2hhdCgpCiBib29sIElPU0FwcGxpY2F0
aW9uOjppc01vYmlsZU1haWwoKQogewogICAgIHN0YXRpYyBib29sIGlzTW9iaWxlTWFpbCA9IGFw
cGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUubW9iaWxlbWFpbCIpOwotICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoaXNNb2JpbGVNYWlsID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJjb20uYXBwbGUubW9iaWxlbWFpbCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3Jl
IHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CiAgICAgcmV0dXJuIGlzTW9iaWxl
TWFpbDsKIH0KIAogYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKQogewogICAg
IHN0YXRpYyBib29sIGlzTW9iaWxlU2FmYXJpID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8o
ImNvbS5hcHBsZS5tb2JpbGVzYWZhcmkiKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzTW9i
aWxlU2FmYXJpID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUubW9iaWxl
c2FmYXJpIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNNb2JpbGVTYWZhcmk7CiB9CiAKQEAgLTE4
Nyw1NiArMTgwLDQ4IEBAIGJvb2wgSU9TQXBwbGljYXRpb246OmlzRHVtcFJlbmRlclRyZWUoKQog
ICAgIC8vIFdlIHVzZSBhIHByZWZpeCBtYXRjaCBpbnN0ZWFkIG9mIHN0cmljdCBlcXVhbGl0eSBz
aW5jZSBMYXlvdXRUZXN0UmVsYXkgbWF5IGxhdW5jaCBtdWx0aXBsZSBpbnN0YW5jZXMgb2YKICAg
ICAvLyBEdW1wUmVuZGVyVHJlZSB3aGVyZSB0aGUgYnVuZGxlIGlkZW50aWZpZXIgb2YgZWFjaCBp
bnN0YW5jZSBoYXMgYSB1bmlxdWUgc3VmZml4LgogICAgIHN0YXRpYyBib29sIGlzRHVtcFJlbmRl
clRyZWUgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygib3JnLndlYmtpdC5EdW1wUmVuZGVy
VHJlZSIpOyAvLyBlLmcuIG9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUwCi0gICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShpc0R1bXBSZW5kZXJUcmVlID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRv
KCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZv
cmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNEdW1w
UmVuZGVyVHJlZTsKIH0KIAogYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTdG9yZSgpCiB7
CiAgICAgc3RhdGljIGJvb2wgaXNNb2JpbGVTdG9yZSA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJjb20uYXBwbGUuTW9iaWxlU3RvcmUiKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlz
TW9iaWxlU3RvcmUgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5Nb2Jp
bGVTdG9yZSIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcigpIik7CiAgICAgcmV0dXJuIGlzTW9iaWxlU3RvcmU7CiB9CiAKIGJvb2wg
SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpc1dlYkFwcCA9
IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUud2ViYXBwIik7Ci0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShpc1dlYkFwcCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygi
Y29tLmFwcGxlLndlYmFwcCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CiAgICAgcmV0dXJuIGlzV2ViQXBwOwogfQogCiBi
b29sIElPU0FwcGxpY2F0aW9uOjppc09rQ3VwaWQoKQogewogICAgIHN0YXRpYyBib29sIGlzT2tD
dXBpZCA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20ub2tjdXBpZC5hcHAiKTsKLSAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzT2tDdXBpZCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1
YWxUbygiY29tLm9rY3VwaWQuYXBwIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNPa0N1cGlkOwog
fQogCiBib29sIElPU0FwcGxpY2F0aW9uOjppc0ZhY2Vib29rKCkKIHsKICAgICBzdGF0aWMgYm9v
bCBpc0ZhY2Vib29rID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5mYWNlYm9vay5G
YWNlYm9vayIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNGYWNlYm9vayA9PSBhcHBsaWNh
dGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmZhY2Vib29rLkZhY2Vib29rIiksICJTaG91bGQgbm90
IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAg
ICByZXR1cm4gaXNGYWNlYm9vazsKIH0KIAogYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNEYWlqaXNl
bkRpY3Rpb25hcnkoKQogewogICAgIHN0YXRpYyBib29sIGlzRGFpamlzZW5EaWN0aW9uYXJ5ID0g
YXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImpwLmNvLnNob2dha3VrYW4uZGFpamlzZW4yMDA5
aSIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNEYWlqaXNlbkRpY3Rpb25hcnkgPT0gYXBw
bGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImpwLmNvLnNob2dha3VrYW4uZGFpamlzZW4yMDA5aSIp
LCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigpIik7CiAgICAgcmV0dXJuIGlzRGFpamlzZW5EaWN0aW9uYXJ5OwogfQogCiBib29sIElP
U0FwcGxpY2F0aW9uOjppc05BU0FIRCgpCiB7CiAgICAgc3RhdGljIGJvb2wgaXNOQVNBSEQgPSBh
cHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiZ292Lm5hc2EuTkFTQUhEIik7Ci0gICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShpc05BU0FIRCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiZ292
Lm5hc2EuTkFTQUhEIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNOQVNBSEQ7CiB9CiAKIGJvb2wg
SU9TQXBwbGljYXRpb246OmlzVGhlRWNvbm9taXN0T25JcGhvbmUoKQogewogICAgIHN0YXRpYyBi
b29sIGlzVGhlRWNvbm9taXN0T25JcGhvbmUgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygi
Y29tLmVjb25vbWlzdC5pcGhvbmUiKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzVGhlRWNv
bm9taXN0T25JcGhvbmUgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5lY29ub21p
c3QuaXBob25lIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNUaGVFY29ub21pc3RPbklwaG9uZTsK
IH0KIApAQCAtMjUyLDcgKzIzNyw2IEBAIGJvb2wgSU9TQXBwbGljYXRpb246OmlzV2ViUHJvY2Vz
cygpCiBib29sIElPU0FwcGxpY2F0aW9uOjppc0lCb29rcygpCiB7CiAgICAgc3RhdGljIGJvb2wg
aXNJQm9va3MgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlCb29rcyIp
OwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNJQm9va3MgPT0gYXBwbGljYXRpb25CdW5kbGVJ
c0VxdWFsVG8oImNvbS5hcHBsZS5pQm9va3MiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9y
ZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc0lCb29r
czsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273749</attachid>
            <date>2016-03-11 11:35:17 -0800</date>
            <delta_ts>2016-03-11 12:25:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155256-20160311113506.patch</filename>
            <type>text/plain</type>
            <size>14660</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTliNDNjYWQ5MmM2NGYy
MTQzYmRlOGM1OTBkMDUzZWVkOGU4N2U0NC4uNzI2NWJhZjdmMmM0MTNkNmY4ZjU3YWQxNWNjNjBm
NTZjOTBmYzEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE2LTAzLTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaU9TLXNpbSBkZWJ1ZzogV2Vi
Q29yZU5TVVJMU2Vzc2lvblRlc3QuQmFzaWNPcGVyYXRpb24gYW5kIFdlYkNvcmVOU1VSTFNlc3Np
b25UZXN0LkludmFsaWRhdGVFbXB0eSBhc3NlcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgcjE5NzYyOCBjb25zb2xpZGF0ZWQgdGhlIHJ1
bnRpbWUgYXBwbGljYXRpb24gY2hlY2tpbmcgY29kZSBmb3IgaU9TIGFuZAorICAgICAgICBNYWMu
IEhvd2V2ZXIsIHdoaWxlIHRoZSBuZXcgY29kZSB3b3JrcyBmaW5lIGZvciBXZWJLaXQyLCBpdCBp
cyB1bnNhZmUKKyAgICAgICAgb24gV2ViS2l0MSAvIGlPUyBhbmQgaGl0cyBhc3NlcnRpb24gaW4g
ZGVidWcuIFRoZSByZWFzb24gaXMgdGhhdAorICAgICAgICBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoKSBmb3IgZ2V0dGluZyBjYWxsZWQgZnJvbSBzZXZlcmFsIHRocmVhZHMKKyAgICAgICAg
KFdlYlRocmVhZCwgVUlUaHJlYWQpLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIHByb2JsZW0s
IHRoaXMgcGF0Y2ggcmVuYW1lcyBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKQorICAgICAg
ICB0byBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJPdmVycmlkZSgpIGFuZCBvbmx5IGluaXRp
YWxpemVzIHRoZQorICAgICAgICBvdmVycmlkZSB1cG9uIFdlYlByb2Nlc3MgYW5kIE5ldHdvcmsg
cHJvY2VzcyBpbml0aWFsaXphdGlvbi4gV2UgdGhlcmVmb3JlCisgICAgICAgIGRvIG5vdCBpbml0
aWFsaXplIHRoZSBvdmVycmlkZSBpbiBXZWJLaXQxIG9yIGluIHRoZSBXZWJLaXQyIFVJUHJvY2Vz
cy4KKyAgICAgICAgV2hlbiB0aGUgb3ZlcnJpZGUgaXMgbm90IHNldCwgd2UgZmFsbCBiYWNrIHRv
IHVzaW5nIHRoZSBtYWluIGJ1bmRsZQorICAgICAgICBpZGVudGlmaWVyICh3aGljaCBkb2VzIHRo
ZSByaWdodCB0aGluZyBmb3IgV2ViS2l0MSAvIFdlYktpdDIgVUlQcm9jZXNzKQorICAgICAgICBi
dXQgd2l0aG91dCBjYWNoaW5nIGl0IHRvIGF2b2lkIHRocmVhZCBzYWZldHkgaXNzdWVzLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgYWxyZWFkeSBjb3ZlcmVkIGJ5IEFQSSB0ZXN0cyBjdXJyZW50
bHkgY3Jhc2hpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MubW06CisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJPdmVy
cmlkZSk6CisgICAgICAgIC0gUmVuYW1lZCBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSB0
byBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJPdmVycmlkZSgpCisgICAgICAgICAgYW5kIG9u
bHkgaW5pdGlhbGl6ZSB1cG9uIGluaXRpYWxpemF0aW9uIG9mIHRoZSBXZWJQcm9jZXNzIG9yIHRo
ZSBOZXR3b3JrCisgICAgICAgICAgcHJvY2Vzcy4KKyAgICAgICAgLSBJbiBkZWJ1Zywgc2V0IGEg
ZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBvdmVycmlkZSB3YXMgYWxyZWFkeSBxdWVyaWVkLgor
CisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIpOgorICAgICAg
ICBOZXcgdXRpbGl0eSBmdW5jdGlvbiB0aGF0IGlzIHJldHVybnMgdGhlIGFwcGxpY2F0aW9uIGJ1
bmRsZSBvdmVycmlkZSBpZiBpdCBpcworICAgICAgICBzZXQgYW5kIGZhbGxiYWNrIHRvIGNhbGxp
bmcgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSBvdGhlcndpc2UuCisK
KyAgICAgICAgKFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik6CisgICAg
ICAgIEFkZCBhc3NlcnRpb25zIHRvIG1ha2Ugc3VyZSB0aGF0OgorICAgICAgICAxLiBUaGlzIGlz
IGFsd2F5cyBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIDIuIFRoZSBhcHBs
aWNhdGlvbiBidW5kbGUgaWRlbnRpZmllciBoYXMgbm90IGJlZW4gcXVlcmllZCAqYmVmb3JlKiBn
ZXR0aW5nCisgICAgICAgICAgIG92ZXJyaWRlbiBhcyB0aGlzIHdvdWxkIGluZGljYXRlIGEgYnVn
IGluIG91ciBjb2RlIGFuZCB3ZSB3b3VsZCBoYXZlIHdyb25nbHkKKyAgICAgICAgICAgcmV0dXJu
ZWQgdGhlIG1haW4gYnVuZGxlIGlkZW50aWZpZXIgaW4gc3VjaCBjYXNlLgorCisgICAgICAgIChX
ZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNBcHBsZU1haWwpOgorICAgICAgICAoV2ViQ29yZTo6
TWFjQXBwbGljYXRpb246OmlzSUJvb2tzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0
aW9uOjppc0lUdW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNNaWNy
b3NvZnRNZXNzZW5nZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzQWRv
YmVJbnN0YWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzTWljcm9z
b2Z0T3V0bG9vayk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNRdWlja2Vu
RXNzZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNBcGVydHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNWZXJzaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNIUkJsb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1hY0FwcGxpY2F0aW9uOjppc0hpcENoYXQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TQXBw
bGljYXRpb246OmlzTW9iaWxlU2FmYXJpKToKKyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0
aW9uOjppc0R1bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9u
Ojppc01vYmlsZVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc0Zh
Y2Vib29rKToKKyAgICAgICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc0RhaWppc2VuRGlj
dGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNOQVNBSEQpOgor
ICAgICAgICAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzVGhlRWNvbm9taXN0T25JcGhvbmUp
OgorICAgICAgICAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNJQm9va3MpOgorICAgICAgICBEcm9wIGFz
c2VydGlvbnMgbWFraW5nIHN1cmUgdGhlIGNhY2hlZCBmbGFnIGlzIGNvcnJlY3QuIFdlIG5vdyBo
YXZlCisgICAgICAgIGFuIGFzc2VydGlvbiB0byBkZXRlY3QgdGhpcyBlYXJsaWVyIGluIHNldEFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpLgorCiAyMDE2LTAzLTEwICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1A6IEltcGxlbWVudCBzdXBwb3J0IGZv
ciBzY3JpcHQgYW5kIHN0eWxlIG5vbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tCmluZGV4IGI3NmJiMmU0ZTI0OThmOGQxZWYw
MDY2NzM0ZjhiNzQ5ODlkMzg0NWQuLjI4ZjJhNjAyYzc1MWM1MGE1YzBmMzJmMDZkNGI5YjA4NWUw
ZGQzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MubW0KQEAgLTMzLDIyICszMywzNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyNpZiAhQVNTRVJUX01TR19ESVNBQkxFRAorc3RhdGljIGJvb2wgYXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyT3ZlcnJpZGVXYXNRdWVyaWVkID0gZmFsc2U7CisjZW5kaWYKKwogLy8gVGhl
IGFwcGxpY2F0aW9uIGJ1bmRsZSBpZGVudGlmaWVyIGdldHMgc2V0IHRvIHRoZSBVSVByb2Nlc3Mg
YnVuZGxlIGlkZW50aWZpZXIgYnkgdGhlIFdlYlByb2Nlc3MgYW5kCi0vLyB0aGUgbmV0d29ya2lu
ZyBwcm9jZXNzIHVwb24gaW5pdGlhbGl6YXRpb24uCi0vLyBJZiBub3QgZXhwbGljaXRseSBzZXQs
IHRoaXMgd2lsbCByZXR1cm4gdGhlIG1haW4gYnVuZGxlIGlkZW50aWZpZXIgd2hpY2ggaXMgYWNj
dXJhdGUgZm9yIFdLMSBvcgotLy8gdGhlIFdLMiBVSVByb2Nlc3MuCi1zdGF0aWMgU3RyaW5nJiBh
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKQorLy8gdGhlIE5ldHdvcmtpbmcgdXBvbiBpbml0
aWFsaXphdGlvbi4gSXQgaXMgdW5zZXQgb3RoZXJ3aXNlLgorc3RhdGljIFN0cmluZyYgYXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyT3ZlcnJpZGUoKQogewotICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBpZGVudGlmaWVy
KFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOwotCisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaWRlbnRpZmllcjsKKyNpZiAhQVNTRVJUX01TR19ESVNB
QkxFRAorICAgIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllck92ZXJyaWRlV2FzUXVlcmllZCA9
IHRydWU7CisjZW5kaWYKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIAorc3RhdGljIFN0cmlu
ZyBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKQoreworICAgIC8vIFRoZSBvdmVycmlkZSBv
bmx5IGdldHMgc2V0IGluIFdlYktpdDIncyBXZWJQcm9jZXNzIGFuZCBOZXR3b3JrUHJvY2Vzcy4g
SWYgdW5zZXQsIHdlIHVzZSB0aGUgbWFpbiBidW5kbGUgaWRlbnRpZmllci4KKyAgICBjb25zdCBh
dXRvJiBpZGVudGlmaWVyID0gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyT3ZlcnJpZGUoKTsK
KyAgICBBU1NFUlQoaWRlbnRpZmllci5pc051bGwoKSB8fCBSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgcmV0dXJuIGlkZW50aWZpZXIuaXNOdWxsKCkgPyBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBidW5kbGVJZGVudGlmaWVyXSkgOiBpZGVudGlmaWVyOworfQorCiB2b2lkIHNldEFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpCiB7
Ci0gICAgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkgPSBidW5kbGVJZGVudGlmaWVyOwor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyT3ZlcnJpZGVXYXNRdWVyaWVkLCAiYXBwbGljYXRp
b25CdW5kbGVJc0VxdWFsVG8oKSBzaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKKyAgICBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXJPdmVycmlkZSgpID0gYnVuZGxlSWRlbnRpZmllcjsKIH0KIAogc3RhdGljIGJvb2wgYXBwbGlj
YXRpb25CdW5kbGVJc0VxdWFsVG8oY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5n
KQpAQCAtNjEsMTA2ICs3Myw5MCBAQCBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1
YWxUbyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpCiBib29sIE1hY0FwcGxp
Y2F0aW9uOjppc1NhZmFyaSgpCiB7CiAgICAgc3RhdGljIGJvb2wgaXNTYWZhcmkgPSBhcHBsaWNh
dGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLlNhZmFyaSIpOwotICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoaXNTYWZhcmkgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBs
ZS5TYWZhcmkiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc1NhZmFyaTsKIH0KIAogYm9vbCBNYWNB
cHBsaWNhdGlvbjo6aXNBcHBsZU1haWwoKQogewogICAgIHN0YXRpYyBib29sIGlzQXBwbGVNYWls
ID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5tYWlsIik7Ci0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShpc0FwcGxlTWFpbCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxU
bygiY29tLmFwcGxlLm1haWwiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc0FwcGxlTWFpbDsKIH0K
IAogYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNJQm9va3MoKQogewogICAgIHN0YXRpYyBib29sIGlz
SUJvb2tzID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pQm9va3NYIik7
Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0lCb29rcyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlz
RXF1YWxUbygiY29tLmFwcGxlLmlCb29rc1giKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9y
ZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc0lCb29r
czsKIH0KIAogYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNJVHVuZXMoKQogewogICAgIHN0YXRpYyBi
b29sIGlzSVR1bmVzID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pVHVu
ZXMiKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzSVR1bmVzID09IGFwcGxpY2F0aW9uQnVu
ZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuaVR1bmVzIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBi
ZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNJ
VHVuZXM7CiB9CiAKIGJvb2wgTWFjQXBwbGljYXRpb246OmlzTWljcm9zb2Z0TWVzc2VuZ2VyKCkK
IHsKICAgICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE1lc3NlbmdlciA9IGFwcGxpY2F0aW9uQnVu
ZGxlSXNFcXVhbFRvKCJjb20ubWljcm9zb2Z0Lk1lc3NlbmdlciIpOwotICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoaXNNaWNyb3NvZnRNZXNzZW5nZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFs
VG8oImNvbS5taWNyb3NvZnQuTWVzc2VuZ2VyIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZv
cmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNNaWNy
b3NvZnRNZXNzZW5nZXI7CiB9CiAKIGJvb2wgTWFjQXBwbGljYXRpb246OmlzQWRvYmVJbnN0YWxs
ZXIoKQogewogICAgIHN0YXRpYyBib29sIGlzQWRvYmVJbnN0YWxsZXIgPSBhcHBsaWNhdGlvbkJ1
bmRsZUlzRXF1YWxUbygiY29tLmFkb2JlLkluc3RhbGxlcnMuU2V0dXAiKTsKLSAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKGlzQWRvYmVJbnN0YWxsZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFs
VG8oImNvbS5hZG9iZS5JbnN0YWxsZXJzLlNldHVwIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBi
ZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNB
ZG9iZUluc3RhbGxlcjsKIH0KIAogYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNBT0xJbnN0YW50TWVz
c2VuZ2VyKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpc0FPTEluc3RhbnRNZXNzZW5nZXIgPSBhcHBs
aWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFvbC5haW0uZGVza3RvcCIpOwotICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoaXNBT0xJbnN0YW50TWVzc2VuZ2VyID09IGFwcGxpY2F0aW9uQnVuZGxl
SXNFcXVhbFRvKCJjb20uYW9sLmFpbS5kZXNrdG9wIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBi
ZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNB
T0xJbnN0YW50TWVzc2VuZ2VyOwogfQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29m
dE15RGF5KCkKIHsKICAgICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE15RGF5ID0gYXBwbGljYXRp
b25CdW5kbGVJc0VxdWFsVG8oImNvbS5taWNyb3NvZnQubXlkYXkiKTsKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGlzTWljcm9zb2Z0TXlEYXkgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8o
ImNvbS5taWNyb3NvZnQubXlkYXkiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc01pY3Jvc29mdE15
RGF5OwogfQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc01pY3Jvc29mdE91dGxvb2soKQogewog
ICAgIHN0YXRpYyBib29sIGlzTWljcm9zb2Z0T3V0bG9vayA9IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJjb20ubWljcm9zb2Z0Lk91dGxvb2siKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGlzTWljcm9zb2Z0T3V0bG9vayA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLm1p
Y3Jvc29mdC5PdXRsb29rIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNNaWNyb3NvZnRPdXRsb29r
OwogfQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc1F1aWNrZW5Fc3NlbnRpYWxzKCkKIHsKICAg
ICBzdGF0aWMgYm9vbCBpc1F1aWNrZW5Fc3NlbnRpYWxzID0gYXBwbGljYXRpb25CdW5kbGVJc0Vx
dWFsVG8oImNvbS5pbnR1aXQuUXVpY2tlbkVzc2VudGlhbHMiKTsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGlzUXVpY2tlbkVzc2VudGlhbHMgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8o
ImNvbS5pbnR1aXQuUXVpY2tlbkVzc2VudGlhbHMiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJl
Zm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc1F1
aWNrZW5Fc3NlbnRpYWxzOwogfQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc0FwZXJ0dXJlKCkK
IHsKICAgICBzdGF0aWMgYm9vbCBpc0FwZXJ0dXJlID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFs
VG8oImNvbS5hcHBsZS5BcGVydHVyZSIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNBcGVy
dHVyZSA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLkFwZXJ0dXJlIiks
ICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyKCkiKTsKICAgICByZXR1cm4gaXNBcGVydHVyZTsKIH0KIAogYm9vbCBNYWNBcHBsaWNhdGlv
bjo6aXNWZXJzaW9ucygpCiB7CiAgICAgc3RhdGljIGJvb2wgaXNWZXJzaW9ucyA9IGFwcGxpY2F0
aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYmxhY2twaXhlbC52ZXJzaW9ucyIpOwotICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoaXNWZXJzaW9ucyA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygi
Y29tLmJsYWNrcGl4ZWwudmVyc2lvbnMiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBz
ZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc1ZlcnNpb25z
OwogfQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc0hSQmxvY2soKQogewogICAgIHN0YXRpYyBi
b29sIGlzSFJCbG9jayA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uaHJibG9jay50
YXguMjAxMCIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNIUkJsb2NrID09IGFwcGxpY2F0
aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uaHJibG9jay50YXguMjAxMCIpLCAiU2hvdWxkIG5vdCBi
ZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CiAgICAg
cmV0dXJuIGlzSFJCbG9jazsKIH0KIAogYm9vbCBNYWNBcHBsaWNhdGlvbjo6aXNTb2xpZFN0YXRl
TmV0d29ya3NEb3dubG9hZGVyKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpc1NvbGlkU3RhdGVOZXR3
b3Jrc0Rvd25sb2FkZXIgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLnNvbGlkc3Rh
dGVuZXR3b3Jrcy5hd2tob3N0Iik7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc1NvbGlkU3Rh
dGVOZXR3b3Jrc0Rvd25sb2FkZXIgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5z
b2xpZHN0YXRlbmV0d29ya3MuYXdraG9zdCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3Jl
IHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7Ci0KICAgICByZXR1cm4gaXNTb2xp
ZFN0YXRlTmV0d29ya3NEb3dubG9hZGVyOwogfQogCiBib29sIE1hY0FwcGxpY2F0aW9uOjppc0hp
cENoYXQoKQogewogICAgIHN0YXRpYyBib29sIGlzSGlwQ2hhdCA9IGFwcGxpY2F0aW9uQnVuZGxl
SXNFcXVhbFRvKCJjb20uaGlwY2hhdC5IaXBDaGF0Iik7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShpc0hpcENoYXQgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5oaXBjaGF0Lkhp
cENoYXQiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJlZm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc0hpcENoYXQ7CiB9CiAKQEAgLTE3MSwxNCAr
MTY3LDEyIEBAIGJvb2wgTWFjQXBwbGljYXRpb246OmlzSGlwQ2hhdCgpCiBib29sIElPU0FwcGxp
Y2F0aW9uOjppc01vYmlsZU1haWwoKQogewogICAgIHN0YXRpYyBib29sIGlzTW9iaWxlTWFpbCA9
IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUubW9iaWxlbWFpbCIpOwotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoaXNNb2JpbGVNYWlsID09IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJjb20uYXBwbGUubW9iaWxlbWFpbCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVm
b3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CiAgICAgcmV0dXJuIGlzTW9i
aWxlTWFpbDsKIH0KIAogYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKQogewog
ICAgIHN0YXRpYyBib29sIGlzTW9iaWxlU2FmYXJpID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFs
VG8oImNvbS5hcHBsZS5tb2JpbGVzYWZhcmkiKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlz
TW9iaWxlU2FmYXJpID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUubW9i
aWxlc2FmYXJpIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNNb2JpbGVTYWZhcmk7CiB9CiAKQEAg
LTE4Nyw1NiArMTgxLDQ4IEBAIGJvb2wgSU9TQXBwbGljYXRpb246OmlzRHVtcFJlbmRlclRyZWUo
KQogICAgIC8vIFdlIHVzZSBhIHByZWZpeCBtYXRjaCBpbnN0ZWFkIG9mIHN0cmljdCBlcXVhbGl0
eSBzaW5jZSBMYXlvdXRUZXN0UmVsYXkgbWF5IGxhdW5jaCBtdWx0aXBsZSBpbnN0YW5jZXMgb2YK
ICAgICAvLyBEdW1wUmVuZGVyVHJlZSB3aGVyZSB0aGUgYnVuZGxlIGlkZW50aWZpZXIgb2YgZWFj
aCBpbnN0YW5jZSBoYXMgYSB1bmlxdWUgc3VmZml4LgogICAgIHN0YXRpYyBib29sIGlzRHVtcFJl
bmRlclRyZWUgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygib3JnLndlYmtpdC5EdW1wUmVu
ZGVyVHJlZSIpOyAvLyBlLmcuIG9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUwCi0gICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShpc0R1bXBSZW5kZXJUcmVlID09IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVh
bFRvKCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBi
ZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNE
dW1wUmVuZGVyVHJlZTsKIH0KIAogYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTdG9yZSgp
CiB7CiAgICAgc3RhdGljIGJvb2wgaXNNb2JpbGVTdG9yZSA9IGFwcGxpY2F0aW9uQnVuZGxlSXNF
cXVhbFRvKCJjb20uYXBwbGUuTW9iaWxlU3RvcmUiKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGlzTW9iaWxlU3RvcmUgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5N
b2JpbGVTdG9yZSIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcigpIik7CiAgICAgcmV0dXJuIGlzTW9iaWxlU3RvcmU7CiB9CiAKIGJv
b2wgSU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpc1dlYkFw
cCA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUud2ViYXBwIik7Ci0gICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShpc1dlYkFwcCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxU
bygiY29tLmFwcGxlLndlYmFwcCIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpIik7CiAgICAgcmV0dXJuIGlzV2ViQXBwOwogfQog
CiBib29sIElPU0FwcGxpY2F0aW9uOjppc09rQ3VwaWQoKQogewogICAgIHN0YXRpYyBib29sIGlz
T2tDdXBpZCA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRvKCJjb20ub2tjdXBpZC5hcHAiKTsK
LSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzT2tDdXBpZCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlz
RXF1YWxUbygiY29tLm9rY3VwaWQuYXBwIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUg
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNPa0N1cGlk
OwogfQogCiBib29sIElPU0FwcGxpY2F0aW9uOjppc0ZhY2Vib29rKCkKIHsKICAgICBzdGF0aWMg
Ym9vbCBpc0ZhY2Vib29rID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5mYWNlYm9v
ay5GYWNlYm9vayIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNGYWNlYm9vayA9PSBhcHBs
aWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmZhY2Vib29rLkZhY2Vib29rIiksICJTaG91bGQg
bm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsK
ICAgICByZXR1cm4gaXNGYWNlYm9vazsKIH0KIAogYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNEYWlq
aXNlbkRpY3Rpb25hcnkoKQogewogICAgIHN0YXRpYyBib29sIGlzRGFpamlzZW5EaWN0aW9uYXJ5
ID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImpwLmNvLnNob2dha3VrYW4uZGFpamlzZW4y
MDA5aSIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNEYWlqaXNlbkRpY3Rpb25hcnkgPT0g
YXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImpwLmNvLnNob2dha3VrYW4uZGFpamlzZW4yMDA5
aSIpLCAiU2hvdWxkIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldEFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcigpIik7CiAgICAgcmV0dXJuIGlzRGFpamlzZW5EaWN0aW9uYXJ5OwogfQogCiBib29s
IElPU0FwcGxpY2F0aW9uOjppc05BU0FIRCgpCiB7CiAgICAgc3RhdGljIGJvb2wgaXNOQVNBSEQg
PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiZ292Lm5hc2EuTkFTQUhEIik7Ci0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShpc05BU0FIRCA9PSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygi
Z292Lm5hc2EuTkFTQUhEIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNOQVNBSEQ7CiB9CiAKIGJv
b2wgSU9TQXBwbGljYXRpb246OmlzVGhlRWNvbm9taXN0T25JcGhvbmUoKQogewogICAgIHN0YXRp
YyBib29sIGlzVGhlRWNvbm9taXN0T25JcGhvbmUgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxU
bygiY29tLmVjb25vbWlzdC5pcGhvbmUiKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzVGhl
RWNvbm9taXN0T25JcGhvbmUgPT0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5lY29u
b21pc3QuaXBob25lIiksICJTaG91bGQgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCkiKTsKICAgICByZXR1cm4gaXNUaGVFY29ub21pc3RPbklwaG9u
ZTsKIH0KIApAQCAtMjUyLDcgKzIzOCw2IEBAIGJvb2wgSU9TQXBwbGljYXRpb246OmlzV2ViUHJv
Y2VzcygpCiBib29sIElPU0FwcGxpY2F0aW9uOjppc0lCb29rcygpCiB7CiAgICAgc3RhdGljIGJv
b2wgaXNJQm9va3MgPSBhcHBsaWNhdGlvbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLmlCb29r
cyIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNJQm9va3MgPT0gYXBwbGljYXRpb25CdW5k
bGVJc0VxdWFsVG8oImNvbS5hcHBsZS5pQm9va3MiKSwgIlNob3VsZCBub3QgYmUgY2FsbGVkIGJl
Zm9yZSBzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSIpOwogICAgIHJldHVybiBpc0lC
b29rczsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>