<?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>158285</bug_id>
          
          <creation_ts>2016-06-01 17:01:18 -0700</creation_ts>
          <short_desc>Get rid of StringCapture</short_desc>
          <delta_ts>2016-06-01 22:46:13 -0700</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>cdumez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198341</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 17:01:18 -0700</bug_when>
    <thetext>Get rid of StringCapture

With all of the C++14 lambda work lately, it&apos;s already almost gone.

We don&apos;t need it anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198342</commentid>
    <comment_count>1</comment_count>
      <attachid>280280</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 17:04:30 -0700</bug_when>
    <thetext>Created attachment 280280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198345</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 17:18:12 -0700</bug_when>
    <thetext>This may rely on https://bugs.webkit.org/show_bug.cgi?id=158277 landing first, which I had in my tree.

It will probably fail EWS, but feel free to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198382</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 19:04:18 -0700</bug_when>
    <thetext>Will resubmit for EWS once 158277 is resolved and landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198421</commentid>
    <comment_count>4</comment_count>
      <attachid>280303</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 20:39:32 -0700</bug_when>
    <thetext>Created attachment 280303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198422</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 20:50:04 -0700</bug_when>
    <thetext>Does not build on GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198429</commentid>
    <comment_count>6</comment_count>
      <attachid>280304</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 21:11:45 -0700</bug_when>
    <thetext>Created attachment 280304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198430</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 21:12:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Does not build on GTK.

Or anywhere.

Due to the wonders of git (and my inability to navigate its mysteries) I lost a line. *sigh*

New one churning through EWS...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198434</commentid>
    <comment_count>8</comment_count>
      <attachid>280304</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 21:22:49 -0700</bug_when>
    <thetext>Comment on attachment 280304
Patch

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

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:434
&gt; +    dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {

Hmm, this is a block, not a NoncopyableFunction. I don&apos;t understand how having a Ref&lt;&gt; in there works. I thought constructing a block from a lambda always copied the lambda.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198436</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 21:24:26 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 280304 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280304&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:434
&gt; &gt; +    dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt; 
&gt; Hmm, this is a block, not a NoncopyableFunction. I don&apos;t understand how
&gt; having a Ref&lt;&gt; in there works. I thought constructing a block from a lambda
&gt; always copied the lambda.

We&apos;ll see if the iOS EWS is happy with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198440</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 21:29:28 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 280304 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=280304&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:434
&gt; &gt; &gt; +    dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt; &gt; 
&gt; &gt; Hmm, this is a block, not a NoncopyableFunction. I don&apos;t understand how
&gt; &gt; having a Ref&lt;&gt; in there works. I thought constructing a block from a lambda
&gt; &gt; always copied the lambda.
&gt; 
&gt; We&apos;ll see if the iOS EWS is happy with it.

Ahah! I knew it was too good to be true:
/Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47: error: call to implicitly-deleted copy constructor of &apos;const (lambda at /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47)&apos;
    dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:48: note: copy constructor of &apos;&apos; is implicitly deleted because field &apos;&apos; has a deleted copy constructor
    dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
                                               ^
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:35:
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/TimeRanges.h:29:
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/PlatformTimeRanges.h:31:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/include/wtf/PassRefPtr.h:25:
/Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/include/wtf/Ref.h:69:5: note: &apos;Ref&apos; has been explicitly marked deleted here
    Ref(const Ref&amp; other) = delete;
    ^
/Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47: note: implicit capture of lambda object due to conversion to block pointer here
    dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
                                              ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198441</commentid>
    <comment_count>11</comment_count>
      <attachid>280304</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 21:33:32 -0700</bug_when>
    <thetext>Comment on attachment 280304
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:434
&gt;&gt;&gt;&gt; +    dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt;&gt;&gt; 
&gt;&gt;&gt; Hmm, this is a block, not a NoncopyableFunction. I don&apos;t understand how having a Ref&lt;&gt; in there works. I thought constructing a block from a lambda always copied the lambda.
&gt;&gt; 
&gt;&gt; We&apos;ll see if the iOS EWS is happy with it.
&gt; 
&gt; Ahah! I knew it was too good to be true:
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47: error: call to implicitly-deleted copy constructor of &apos;const (lambda at /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47)&apos;
&gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt;                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:48: note: copy constructor of &apos;&apos; is implicitly deleted because field &apos;&apos; has a deleted copy constructor
&gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt;                                                ^
&gt; In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:35:
&gt; In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/TimeRanges.h:29:
&gt; In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/PlatformTimeRanges.h:31:
&gt; In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/include/wtf/PassRefPtr.h:25:
&gt; /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/include/wtf/Ref.h:69:5: note: &apos;Ref&apos; has been explicitly marked deleted here
&gt;     Ref(const Ref&amp; other) = delete;
&gt;     ^
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47: note: implicit capture of lambda object due to conversion to block pointer here
&gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt;                                               ^
&gt; 1 error generated.

I am not 100% sure but would using callOnMainThread() be OK in this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198442</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 21:33:59 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Comment on attachment 280304 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=280304&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:434
&gt; &gt; &gt; &gt; +    dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt; &gt; &gt; 
&gt; &gt; &gt; Hmm, this is a block, not a NoncopyableFunction. I don&apos;t understand how
&gt; &gt; &gt; having a Ref&lt;&gt; in there works. I thought constructing a block from a lambda
&gt; &gt; &gt; always copied the lambda.
&gt; &gt; 
&gt; &gt; We&apos;ll see if the iOS EWS is happy with it.
&gt; 
&gt; Ahah! I knew it was too good to be true:
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/
&gt; WebVideoFullscreenControllerAVKit.mm:437:47: error: call to
&gt; implicitly-deleted copy constructor of &apos;const (lambda at
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/
&gt; WebVideoFullscreenControllerAVKit.mm:437:47)&apos;
&gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis =
&gt; Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type,
&gt; localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt;                                              
&gt; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/
&gt; WebVideoFullscreenControllerAVKit.mm:437:48: note: copy constructor of &apos;&apos; is
&gt; implicitly deleted because field &apos;&apos; has a deleted copy constructor
&gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis =
&gt; Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type,
&gt; localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt;                                                ^
&gt; In file included from
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/
&gt; WebVideoFullscreenControllerAVKit.mm:35:
&gt; In file included from
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/html/TimeRanges.h:29:
&gt; In file included from
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/PlatformTimeRanges.
&gt; h:31:
&gt; In file included from
&gt; /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/
&gt; include/wtf/PassRefPtr.h:25:
&gt; /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/
&gt; include/wtf/Ref.h:69:5: note: &apos;Ref&apos; has been explicitly marked deleted here
&gt;     Ref(const Ref&amp; other) = delete;
&gt;     ^
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/
&gt; WebVideoFullscreenControllerAVKit.mm:437:47: note: implicit capture of
&gt; lambda object due to conversion to block pointer here
&gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis =
&gt; Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type,
&gt; localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt;                                               ^
&gt; 1 error generated.

I *thought* I&apos;d mangled the compiler guards locally to actually see it build on my Mac, but I guess I failed!

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198443</commentid>
    <comment_count>13</comment_count>
      <attachid>280304</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 21:35:59 -0700</bug_when>
    <thetext>Comment on attachment 280304
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:434
&gt;&gt;&gt;&gt;&gt;&gt; +    dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Hmm, this is a block, not a NoncopyableFunction. I don&apos;t understand how having a Ref&lt;&gt; in there works. I thought constructing a block from a lambda always copied the lambda.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; We&apos;ll see if the iOS EWS is happy with it.
&gt;&gt;&gt; 
&gt;&gt;&gt; Ahah! I knew it was too good to be true:
&gt;&gt;&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47: error: call to implicitly-deleted copy constructor of &apos;const (lambda at /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47)&apos;
&gt;&gt;&gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt;&gt;&gt;                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt;&gt;&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:48: note: copy constructor of &apos;&apos; is implicitly deleted because field &apos;&apos; has a deleted copy constructor
&gt;&gt;&gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt;&gt;&gt;                                                ^
&gt;&gt;&gt; In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:35:
&gt;&gt;&gt; In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/TimeRanges.h:29:
&gt;&gt;&gt; In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/PlatformTimeRanges.h:31:
&gt;&gt;&gt; In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/include/wtf/PassRefPtr.h:25:
&gt;&gt;&gt; /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/include/wtf/Ref.h:69:5: note: &apos;Ref&apos; has been explicitly marked deleted here
&gt;&gt;&gt;     Ref(const Ref&amp; other) = delete;
&gt;&gt;&gt;     ^
&gt;&gt;&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47: note: implicit capture of lambda object due to conversion to block pointer here
&gt;&gt;&gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt;&gt;&gt;                                               ^
&gt;&gt;&gt; 1 error generated.
&gt;&gt; 
&gt;&gt; I am not 100% sure but would using callOnMainThread() be OK in this case?
&gt; 
&gt; I *thought* I&apos;d mangled the compiler guards locally to actually see it build on my Mac, but I guess I failed!
&gt; 
&gt; Will fix.

Otherwise, we can keep using the same API (which is safer) and allocated a NonCopyableFunction on the heap and capture that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198444</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 21:36:39 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 280304 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280304&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:434
&gt; &gt;&gt;&gt;&gt; +    dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Hmm, this is a block, not a NoncopyableFunction. I don&apos;t understand how having a Ref&lt;&gt; in there works. I thought constructing a block from a lambda always copied the lambda.
&gt; &gt;&gt; 
&gt; &gt;&gt; We&apos;ll see if the iOS EWS is happy with it.
&gt; &gt; 
&gt; &gt; Ahah! I knew it was too good to be true:
&gt; &gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47: error: call to implicitly-deleted copy constructor of &apos;const (lambda at /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47)&apos;
&gt; &gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt; &gt;                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt; &gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:48: note: copy constructor of &apos;&apos; is implicitly deleted because field &apos;&apos; has a deleted copy constructor
&gt; &gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt; &gt;                                                ^
&gt; &gt; In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:35:
&gt; &gt; In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/TimeRanges.h:29:
&gt; &gt; In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/PlatformTimeRanges.h:31:
&gt; &gt; In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/include/wtf/PassRefPtr.h:25:
&gt; &gt; /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/include/wtf/Ref.h:69:5: note: &apos;Ref&apos; has been explicitly marked deleted here
&gt; &gt;     Ref(const Ref&amp; other) = delete;
&gt; &gt;     ^
&gt; &gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47: note: implicit capture of lambda object due to conversion to block pointer here
&gt; &gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt; &gt;                                               ^
&gt; &gt; 1 error generated.
&gt; 
&gt; I am not 100% sure but would using callOnMainThread() be OK in this case?

Seeing as this is iOS and I&apos;m trying to make this be a 100% mechanical task, I&apos;m not willing to try that change.

I think we *really* need to sort out the whole RunLoop::main vs callOnMainThread issue. It would simply be better for the project if callOnMainThread could be ripped out and we only relied on RunLoop dispatch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198445</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 21:53:05 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt;&gt;&gt; /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/include/wtf/Ref.h:69:5: note: &apos;Ref&apos; has been explicitly marked deleted here
&gt; &gt;&gt;&gt;     Ref(const Ref&amp; other) = delete;
&gt; &gt;&gt;&gt;     ^
&gt; &gt;&gt;&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47: note: implicit capture of lambda object due to conversion to block pointer here
&gt; &gt;&gt;&gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt; &gt;&gt;&gt;                                               ^
&gt; &gt;&gt;&gt; 1 error generated.
&gt; &gt;&gt; 
&gt; &gt;&gt; I am not 100% sure but would using callOnMainThread() be OK in this case?
&gt; &gt; 
&gt; &gt; I *thought* I&apos;d mangled the compiler guards locally to actually see it build on my Mac, but I guess I failed!
&gt; &gt; 
&gt; &gt; Will fix.
&gt; 
&gt; Otherwise, we can keep using the same API (which is safer) and allocated a
&gt; NonCopyableFunction on the heap and capture that.

Yah... kinda ugly, but I&apos;m doing that. Stay tuned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198448</commentid>
    <comment_count>16</comment_count>
      <attachid>280305</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 21:57:37 -0700</bug_when>
    <thetext>Created attachment 280305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198449</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 21:57:47 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; &gt;&gt;&gt; /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphonesimulator/usr/local/include/wtf/Ref.h:69:5: note: &apos;Ref&apos; has been explicitly marked deleted here
&gt; &gt; &gt;&gt;&gt;     Ref(const Ref&amp; other) = delete;
&gt; &gt; &gt;&gt;&gt;     ^
&gt; &gt; &gt;&gt;&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:437:47: note: implicit capture of lambda object due to conversion to block pointer here
&gt; &gt; &gt;&gt;&gt;     dispatch_async(dispatch_get_main_queue(), [protectedThis = Ref&lt;WebVideoFullscreenControllerContext&gt;(*this), this, enabled, type, localizedDeviceName = localizedDeviceName.isolatedCopy()] {
&gt; &gt; &gt;&gt;&gt;                                               ^
&gt; &gt; &gt;&gt;&gt; 1 error generated.
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; I am not 100% sure but would using callOnMainThread() be OK in this case?
&gt; &gt; &gt; 
&gt; &gt; &gt; I *thought* I&apos;d mangled the compiler guards locally to actually see it build on my Mac, but I guess I failed!
&gt; &gt; &gt; 
&gt; &gt; &gt; Will fix.
&gt; &gt; 
&gt; &gt; Otherwise, we can keep using the same API (which is safer) and allocated a
&gt; &gt; NonCopyableFunction on the heap and capture that.
&gt; 
&gt; Yah... kinda ugly, but I&apos;m doing that. Stay tuned.

Actually, screw that.

callOnMainThread() should be fine.

From the Concurrency Programming guide (https://developer.apple.com/library/mac/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html#//apple_ref/doc/uid/TP40008091-CH102-SW2):

&quot;The main dispatch queue is a globally available serial queue that executes tasks on the application’s main thread.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198454</commentid>
    <comment_count>18</comment_count>
      <attachid>280305</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 22:12:54 -0700</bug_when>
    <thetext>Comment on attachment 280305
Patch

r=me as long as the bots are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198458</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 22:43:38 -0700</bug_when>
    <thetext>Current test failures on EWS appear to be the typical media controls failures that have been plaguing us lately.

On retries they&apos;re clearing up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198459</commentid>
    <comment_count>20</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 22:46:13 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/201594</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280280</attachid>
            <date>2016-06-01 17:04:30 -0700</date>
            <delta_ts>2016-06-01 20:39:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15382</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzVhYTUwNS4uNzk1Mjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wNi0wMSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBT
dHJpbmdDYXB0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4Mjg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nQ2FwdHVy
ZTo6U3RyaW5nQ2FwdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0NhcHR1cmU6
OnN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0NhcHR1cmU6OnJlbGVhc2VT
dHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdDYXB0dXJlOjpvcGVyYXRvcj0p
OiBEZWxldGVkLgorCiAyMDE2LTA1LTMxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjAxMzYzIGFuZCBy
MjAxNDU2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggZWY2MjFmYy4uZjcxZjJjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC02OTAsMjUgKzY5MCw2IEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgY2hhciogbV9jaGFyYWN0ZXJzOwogfTsKIAotLy8gRm9yIHRocmVhZC1zYWZlIGxhbWJk
YSBjYXB0dXJlOgotLy8gU3RyaW5nQ2FwdHVyZSBzdHJpbmdDYXB0dXJlKHN0cmluZyk7Ci0vLyBh
dXRvIGxhbWJkYVRoYXRSdW5zSW5PdGhlclRocmVhZCA9IFtzdHJpbmdDYXB0dXJlXSB7IFN0cmlu
ZyBzdHJpbmcgPSBzdHJpbmdDYXB0dXJlLnN0cmluZygpOyAuLi4gfQotLy8gRklYTUU6IFJlbW92
ZSB3aGVuIHdlIGNhbiB1c2UgQysrMTQgaW5pdGlhbGl6ZWQgbGFtYmRhIGNhcHR1cmU6IFtzdHJp
bmcgPSBzdHJpbmcuaXNvbGF0ZWRDb3B5KCldLgotY2xhc3MgU3RyaW5nQ2FwdHVyZSB7Ci1wdWJs
aWM6Ci0gICAgU3RyaW5nQ2FwdHVyZSgpIHsgfQotICAgIFN0cmluZ0NhcHR1cmUoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIDogbV9zdHJpbmcoc3RyaW5nKSB7IH0KLSAgICBleHBsaWNpdCBTdHJpbmdD
YXB0dXJlKFN0cmluZyYmIHN0cmluZykgOiBtX3N0cmluZyhzdHJpbmcpIHsgfQotICAgIFN0cmlu
Z0NhcHR1cmUoY29uc3QgU3RyaW5nQ2FwdHVyZSYgb3RoZXIpIDogbV9zdHJpbmcob3RoZXIubV9z
dHJpbmcuaXNvbGF0ZWRDb3B5KCkpIHsgfQotICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSAgICBTdHJpbmcgcmVsZWFzZVN0cmluZygpIHsgcmV0
dXJuIFdURk1vdmUobV9zdHJpbmcpOyB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBTdHJp
bmdDYXB0dXJlJiBvdGhlcikgeyBtX3N0cmluZyA9IG90aGVyLm1fc3RyaW5nLmlzb2xhdGVkQ29w
eSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fc3RyaW5nOwotfTsKLQogLy8gU2hhcmVk
IGdsb2JhbCBlbXB0eSBzdHJpbmcuCiBXVEZfRVhQT1JUX1NUUklOR19BUEkgY29uc3QgU3RyaW5n
JiBlbXB0eVN0cmluZygpOwogCkBAIC03NTgsNyArNzM5LDYgQEAgdXNpbmcgV1RGOjppc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzOwogdXNpbmcgV1RGOjppc1NwYWNlT3JOZXdsaW5lOwogdXNpbmcgV1RG
OjpyZXZlcnNlRmluZDsKIHVzaW5nIFdURjo6QVNDSUlMaXRlcmFsOwotdXNpbmcgV1RGOjpTdHJp
bmdDYXB0dXJlOwogCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA4YzIzZjBkLi43ZTc3YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzggQEAKIDIw
MTYtMDYtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIEdl
dCByaWQgb2YgU3RyaW5nQ2FwdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1ODI4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVmYWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5n
ZSkuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojph
ZGRNZXNzYWdlKToKKyAgICAgICAgCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFkZENvbnNv
bGVNZXNzYWdlVGFzazo6QWRkQ29uc29sZU1lc3NhZ2VUYXNrKToKKyAgICAgICAgCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjppbnN0YWxsQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKToKKyAgICAgICAgCisg
ICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVh
ZEJyaWRnZSk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayk6CisgICAgICAgIAorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdp
bmdQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6
CisKKzIwMTYtMDYtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAg
ICAgIE1vZGVybml6ZSBsYW1iZGEgdXNhZ2UgZm9yIGFsbCBjYWxsZXJzIG9mIFJ1bkxvb3A6OmRp
c3BhdGNoKCkuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTgyNjUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNzUxYzE3My4uMWU0M2U3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MzMzLDcgKzUzMzMsNyBAQCB2b2lkIERvY3Vt
ZW50OjpwYXJzZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihjb25zdCBTdHJpbmcmIGRuc1ByZWZl
dGNoQ29udHJvbCkKIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVh
ZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxl
dmVsLCBTdHJpbmdDYXB0dXJlKG1lc3NhZ2UpKSk7CisgICAgICAgIHBvc3RUYXNrKEFkZENvbnNv
bGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTUzNDQsNyArNTM0NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0CiB2
b2lkIERvY3VtZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAgIGlmICghaXNDb250ZXh0
VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrKHNvdXJj
ZSwgbGV2ZWwsIFN0cmluZ0NhcHR1cmUobWVzc2FnZSkpKTsKKyAgICAgICAgcG9zdFRhc2soQWRk
Q29uc29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgKaW5kZXggMDY1YTI4OC4uZDdjMjAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yMTAsOSArMjEwLDkgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEFkZENvbnNvbGVNZXNzYWdlVGFzayhNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmdDYXB0dXJlJiBtZXNzYWdlKQotICAg
ICAgICAgICAgOiBUYXNrKFtzb3VyY2UsIGxldmVsLCBtZXNzYWdlXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5hZGRDb25zb2xlTWVz
c2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLnN0cmluZygpKTsKKyAgICAgICAgQWRkQ29uc29s
ZU1lc3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKKyAgICAgICAgICAgIDogVGFzayhbc291cmNlLCBsZXZlbCwg
bWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKHNv
dXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOwogICAgICAgICAgICAgfSkKICAgICAgICAgewogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA5N2NiZjYz
Li4zNWEzODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAg
LTE3MDMsMTAgKzE3MDMsOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjppbnN0YWxsQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyKENvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaQogICAgIFN0cmluZyB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCB7IGNvbnRlbnRGaWx0ZXIudW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQoKSB9OwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNF
bXB0eSgpICYmIGZyYW1lKSB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
PFRocmVhZFNhZmVSZWZDb3VudGVkPEZyYW1lPiwgRnJhbWU+Ojp2YWx1ZSwgIkZyYW1lIG11c3Qg
YmUgVGhyZWFkU2FmZVJlZkNvdW50ZWQuIik7Ci0gICAgICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVy
ZWRTY3JpcHQgeyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCB9OwotICAgICAgICB1bmJsb2Nr
SGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbZnJhbWUsIGNhcHR1cmVkU2NyaXB0XShi
b29sIHVuYmxvY2tlZCkgeworICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9u
SGFuZGxlcihbZnJhbWUsIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xh
dGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQp
Ci0gICAgICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoY2FwdHVyZWRT
Y3JpcHQuc3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0KHNjcmlwdCk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICBmcmFtZUxvYWRlcigpLT5j
bGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCBlYmQ2MGZmLi40MTAxMThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC05MCwyOCArOTAsMjMgQEAgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRh
YmxlTG9hZGVyQ2xpZW4KICAgICAsIG1fbG9hZGVyUHJveHkobG9hZGVyUHJveHkpCiAgICAgLCBt
X3Rhc2tNb2RlKHRhc2tNb2RlLmlzb2xhdGVkQ29weSgpKQogewotICAgIGF1dG8qIHJlcXVlc3RE
YXRhID0gcmVxdWVzdC5jb3B5RGF0YSgpLnJlbGVhc2UoKTsKLSAgICBhdXRvKiBvcHRpb25zQ29w
eSA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5KCkucmVsZWFzZSgpOwotCiAgICAgQVNTRVJUKHNlY3Vy
aXR5T3JpZ2luKTsKICAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KTsKLSAgICBhdXRv
KiBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+KCpzZWN1cml0eU9yaWdpbikucmVsZWFzZSgpOworCisgICAgYXV0byBjb250
ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQ
b2xpY3k+KCpzZWN1cml0eU9yaWdpbik7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+
Y29weVN0YXRlRnJvbShjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCi0gICAgU3RyaW5nQ2FwdHVy
ZSBjYXB0dXJlZE91dGdvaW5nUmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlcik7Ci0gICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0RGF0YSwgb3B0aW9uc0NvcHks
IGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHksIGNhcHR1cmVkT3V0Z29pbmdSZWZlcnJlcl0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdERhdGEgPSByZXF1ZXN0LmNvcHlEYXRhKCksIG9wdGlv
bnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0g
V1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KSwgb3V0Z29pbmdSZWZlcnJlciA9IG91
dGdvaW5nUmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAg
ICBEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAKLSAg
ICAgICAgYXV0byByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChzdGQ6OnVuaXF1ZV9w
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPihyZXF1ZXN0RGF0YSkpOwotICAgICAg
ICByZXF1ZXN0LT5zZXRIVFRQUmVmZXJyZXIoY2FwdHVyZWRPdXRnb2luZ1JlZmVycmVyLnN0cmlu
ZygpKTsKLQotICAgICAgICBhdXRvIG9wdGlvbnMgPSBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnM+KG9wdGlvbnNDb3B5KTsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gUmVz
b3VyY2VSZXF1ZXN0OjphZG9wdChXVEZNb3ZlKHJlcXVlc3REYXRhKSk7CisgICAgICAgIHJlcXVl
c3QtPnNldEhUVFBSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVyKTsKIAogICAgICAgICAvLyBGSVhN
RTogSWYgdGhlIGEgc2l0ZSByZXF1ZXN0cyBhIGxvY2FsIHJlc291cmNlLCB0aGVuIHRoaXMgd2ls
bCByZXR1cm4gYSBub24temVybyB2YWx1ZSBidXQgdGhlIHN5bmMgcGF0aAogICAgICAgICAvLyB3
aWxsIHJldHVybiBhIDAgdmFsdWUuIEVpdGhlciB0aGlzIHNob3VsZCByZXR1cm4gMCBvciB0aGUg
b3RoZXIgY29kZSBwYXRoIHNob3VsZCBkbyBhIGNhbGxiYWNrIHdpdGgKICAgICAgICAgLy8gYSBm
YWlsdXJlLgotICAgICAgICBtX21haW5UaHJlYWRMb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMsICpyZXF1ZXN0LCAqb3B0aW9ucywgc3RkOjp1
bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4oY29udGVudFNlY3VyaXR5UG9saWN5Q29w
eSkpOworICAgICAgICBtX21haW5UaHJlYWRMb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMsICpyZXF1ZXN0LCAqb3B0aW9ucywgV1RGTW92ZShj
b250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KSk7CiAgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRM
b2FkZXIgfHwgbV9sb2FkaW5nRmluaXNoZWQpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktp
dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0KaW5kZXggNmIwZGJjZi4uMTgxNDc5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0Lm1tCkBAIC00MzEsMTEgKzQzMSw5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEV4dGVybmFs
UGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlLCBT
dHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJy
ZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkTG9jYWxpemVk
RGV2aWNlTmFtZShsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgZW5hYmxlZCwgdHlw
ZSwgY2FwdHVyZWRMb2NhbGl6ZWREZXZpY2VOYW1lXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWY8V2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ+KCp0aGlzKSwgdGhpcywgZW5hYmxlZCwgdHlwZSwgbG9j
YWxpemVkRGV2aWNlTmFtZSA9IGxvY2FsaXplZERldmljZU5hbWUuaXNvbGF0ZWRDb3B5KCldIHsK
ICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldEV4
dGVybmFsUGxheWJhY2soZW5hYmxlZCwgdHlwZSwgY2FwdHVyZWRMb2NhbGl6ZWREZXZpY2VOYW1l
LnN0cmluZygpKTsKKyAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNr
KGVuYWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDE1NDU2ZTQu
LjZhZTk2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6bG9nRXhjZXB0
aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdAogdm9pZCBXb3Jr
ZXJHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQo
KSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2sobWVzc2FnZS0+c291
cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIFN0cmluZ0NhcHR1cmUobWVzc2FnZS0+bWVzc2FnZSgp
KSkpOworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2sobWVzc2FnZS0+c291
cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29w
ZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3MKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVh
ZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxl
dmVsLCBTdHJpbmdDYXB0dXJlKG1lc3NhZ2UpKSk7CisgICAgICAgIHBvc3RUYXNrKEFkZENvbnNv
bGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldgogdm9p
ZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVu
c2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJl
YWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBs
ZXZlbCwgU3RyaW5nQ2FwdHVyZShtZXNzYWdlKSkpOworICAgICAgICBwb3N0VGFzayhBZGRDb25z
b2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCmluZGV4IGU5YTkwOTEuLjBiZDJkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0xNDEsOSArMTQxLDcgQEAgYm9vbCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShT
Y3JpcHRFeGVjdXRpb25Db24KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAg
U3RyaW5nQ2FwdHVyZSBjYXB0dXJlZEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgIFN0
cmluZ0NhcHR1cmUgY2FwdHVyZWRTb3VyY2VVUkwoc291cmNlVVJMKTsKLSAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBjYXB0dXJlZEVycm9yTWVzc2FnZSwgY2Fw
dHVyZWRTb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RU
YXNrKFt0aGlzLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIHNv
dXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBXb3JrZXIq
IHdvcmtlck9iamVjdCA9IHRoaXMtPndvcmtlck9iamVjdCgpOwogICAgICAgICBpZiAoIXdvcmtl
ck9iamVjdCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1MSw3ICsxNDksNyBAQCB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZwogICAgICAgICAvLyBXZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgdGhl
IGFza2VkVG9UZXJtaW5hdGUoKSBmbGFnIGhlcmUsIGJlY2F1c2UgZXhjZXB0aW9ucyBzaG91bGQg
KmFsd2F5cyogYmUgcmVwb3J0ZWQgZXZlbiBpZiB0aGUgdGhyZWFkIGlzIHRlcm1pbmF0ZWQuCiAg
ICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBkaWZmZXJlbnQgdGhhbiB0aGUgYmVoYXZp
b3IgaW4gTWVzc2FnZVdvcmtlclRhc2ssIGJlY2F1c2UgdGVybWluYXRlZCB3b3JrZXJzIG5vIGxv
bmdlciBkZWxpdmVyIG1lc3NhZ2VzIChzZWN0aW9uIDQuNiBvZiB0aGUgV2ViV29ya2VyIHNwZWMp
LCBidXQgdGhleSBkbyByZXBvcnQgZXhjZXB0aW9ucy4KIAotICAgICAgICBib29sIGVycm9ySGFu
ZGxlZCA9ICF3b3JrZXJPYmplY3QtPmRpc3BhdGNoRXZlbnQoRXJyb3JFdmVudDo6Y3JlYXRlKGNh
cHR1cmVkRXJyb3JNZXNzYWdlLnN0cmluZygpLCBjYXB0dXJlZFNvdXJjZVVSTC5zdHJpbmcoKSwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKSk7CisgICAgICAgIGJvb2wgZXJyb3JIYW5kbGVkID0g
IXdvcmtlck9iamVjdC0+ZGlzcGF0Y2hFdmVudChFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNz
YWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpOwogICAgICAgICBpZiAo
IWVycm9ySGFuZGxlZCkKICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXhjZXB0aW9uKGNhcHR1
cmVkRXJyb3JNZXNzYWdlLnN0cmluZygpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNhcHR1
cmVkU291cmNlVVJMLnN0cmluZygpLCAwKTsKICAgICB9KTsKQEAgLTE1OSwxMiArMTU3LDEwIEBA
IHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnCiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBv
c3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIFN0cmluZ0Nh
cHR1cmUgY2FwdHVyZWRNZXNzYWdlKG1lc3NhZ2UpOwotICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVy
ZWRTb3VyY2VVUkwoc291cmNlVVJMKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKFt0aGlzLCBzb3VyY2UsIGxldmVsLCBjYXB0dXJlZE1lc3NhZ2UsIGNhcHR1cmVkU291
cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhp
cywgc291cmNlLCBsZXZlbCwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIHNvdXJj
ZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBpZiAoYXNrZWRU
b1Rlcm1pbmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb250ZXh0LmFkZENv
bnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIGNhcHR1cmVkTWVzc2FnZS5zdHJpbmcoKSwgY2Fw
dHVyZWRTb3VyY2VVUkwuc3RyaW5nKCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAg
ICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgc291
cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgIH0pOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280303</attachid>
            <date>2016-06-01 20:39:32 -0700</date>
            <delta_ts>2016-06-01 21:11:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>sc.txt</filename>
            <type>text/plain</type>
            <size>15382</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzVhYTUwNS4uNzk1Mjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wNi0wMSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBT
dHJpbmdDYXB0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4Mjg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nQ2FwdHVy
ZTo6U3RyaW5nQ2FwdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0NhcHR1cmU6
OnN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0cmluZ0NhcHR1cmU6OnJlbGVhc2VT
dHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdDYXB0dXJlOjpvcGVyYXRvcj0p
OiBEZWxldGVkLgorCiAyMDE2LTA1LTMxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjAxMzYzIGFuZCBy
MjAxNDU2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggZWY2MjFmYy4uZjcxZjJjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC02OTAsMjUgKzY5MCw2IEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgY2hhciogbV9jaGFyYWN0ZXJzOwogfTsKIAotLy8gRm9yIHRocmVhZC1zYWZlIGxhbWJk
YSBjYXB0dXJlOgotLy8gU3RyaW5nQ2FwdHVyZSBzdHJpbmdDYXB0dXJlKHN0cmluZyk7Ci0vLyBh
dXRvIGxhbWJkYVRoYXRSdW5zSW5PdGhlclRocmVhZCA9IFtzdHJpbmdDYXB0dXJlXSB7IFN0cmlu
ZyBzdHJpbmcgPSBzdHJpbmdDYXB0dXJlLnN0cmluZygpOyAuLi4gfQotLy8gRklYTUU6IFJlbW92
ZSB3aGVuIHdlIGNhbiB1c2UgQysrMTQgaW5pdGlhbGl6ZWQgbGFtYmRhIGNhcHR1cmU6IFtzdHJp
bmcgPSBzdHJpbmcuaXNvbGF0ZWRDb3B5KCldLgotY2xhc3MgU3RyaW5nQ2FwdHVyZSB7Ci1wdWJs
aWM6Ci0gICAgU3RyaW5nQ2FwdHVyZSgpIHsgfQotICAgIFN0cmluZ0NhcHR1cmUoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIDogbV9zdHJpbmcoc3RyaW5nKSB7IH0KLSAgICBleHBsaWNpdCBTdHJpbmdD
YXB0dXJlKFN0cmluZyYmIHN0cmluZykgOiBtX3N0cmluZyhzdHJpbmcpIHsgfQotICAgIFN0cmlu
Z0NhcHR1cmUoY29uc3QgU3RyaW5nQ2FwdHVyZSYgb3RoZXIpIDogbV9zdHJpbmcob3RoZXIubV9z
dHJpbmcuaXNvbGF0ZWRDb3B5KCkpIHsgfQotICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSAgICBTdHJpbmcgcmVsZWFzZVN0cmluZygpIHsgcmV0
dXJuIFdURk1vdmUobV9zdHJpbmcpOyB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBTdHJp
bmdDYXB0dXJlJiBvdGhlcikgeyBtX3N0cmluZyA9IG90aGVyLm1fc3RyaW5nLmlzb2xhdGVkQ29w
eSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fc3RyaW5nOwotfTsKLQogLy8gU2hhcmVk
IGdsb2JhbCBlbXB0eSBzdHJpbmcuCiBXVEZfRVhQT1JUX1NUUklOR19BUEkgY29uc3QgU3RyaW5n
JiBlbXB0eVN0cmluZygpOwogCkBAIC03NTgsNyArNzM5LDYgQEAgdXNpbmcgV1RGOjppc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzOwogdXNpbmcgV1RGOjppc1NwYWNlT3JOZXdsaW5lOwogdXNpbmcgV1RG
OjpyZXZlcnNlRmluZDsKIHVzaW5nIFdURjo6QVNDSUlMaXRlcmFsOwotdXNpbmcgV1RGOjpTdHJp
bmdDYXB0dXJlOwogCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA4YzIzZjBkLi43ZTc3YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzggQEAKIDIw
MTYtMDYtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIEdl
dCByaWQgb2YgU3RyaW5nQ2FwdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1ODI4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVmYWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5n
ZSkuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojph
ZGRNZXNzYWdlKToKKyAgICAgICAgCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFkZENvbnNv
bGVNZXNzYWdlVGFzazo6QWRkQ29uc29sZU1lc3NhZ2VUYXNrKToKKyAgICAgICAgCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjppbnN0YWxsQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKToKKyAgICAgICAgCisg
ICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVh
ZEJyaWRnZSk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayk6CisgICAgICAgIAorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdp
bmdQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6
CisKKzIwMTYtMDYtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAg
ICAgIE1vZGVybml6ZSBsYW1iZGEgdXNhZ2UgZm9yIGFsbCBjYWxsZXJzIG9mIFJ1bkxvb3A6OmRp
c3BhdGNoKCkuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTgyNjUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNzUxYzE3My4uMWU0M2U3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MzMzLDcgKzUzMzMsNyBAQCB2b2lkIERvY3Vt
ZW50OjpwYXJzZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihjb25zdCBTdHJpbmcmIGRuc1ByZWZl
dGNoQ29udHJvbCkKIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVh
ZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxl
dmVsLCBTdHJpbmdDYXB0dXJlKG1lc3NhZ2UpKSk7CisgICAgICAgIHBvc3RUYXNrKEFkZENvbnNv
bGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTUzNDQsNyArNTM0NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0CiB2
b2lkIERvY3VtZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAgIGlmICghaXNDb250ZXh0
VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrKHNvdXJj
ZSwgbGV2ZWwsIFN0cmluZ0NhcHR1cmUobWVzc2FnZSkpKTsKKyAgICAgICAgcG9zdFRhc2soQWRk
Q29uc29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgKaW5kZXggMDY1YTI4OC4uZDdjMjAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yMTAsOSArMjEwLDkgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEFkZENvbnNvbGVNZXNzYWdlVGFzayhNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmdDYXB0dXJlJiBtZXNzYWdlKQotICAg
ICAgICAgICAgOiBUYXNrKFtzb3VyY2UsIGxldmVsLCBtZXNzYWdlXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5hZGRDb25zb2xlTWVz
c2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLnN0cmluZygpKTsKKyAgICAgICAgQWRkQ29uc29s
ZU1lc3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKKyAgICAgICAgICAgIDogVGFzayhbc291cmNlLCBsZXZlbCwg
bWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKHNv
dXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOwogICAgICAgICAgICAgfSkKICAgICAgICAgewogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA5N2NiZjYz
Li4zNWEzODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAg
LTE3MDMsMTAgKzE3MDMsOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjppbnN0YWxsQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyKENvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaQogICAgIFN0cmluZyB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCB7IGNvbnRlbnRGaWx0ZXIudW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQoKSB9OwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNF
bXB0eSgpICYmIGZyYW1lKSB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
PFRocmVhZFNhZmVSZWZDb3VudGVkPEZyYW1lPiwgRnJhbWU+Ojp2YWx1ZSwgIkZyYW1lIG11c3Qg
YmUgVGhyZWFkU2FmZVJlZkNvdW50ZWQuIik7Ci0gICAgICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVy
ZWRTY3JpcHQgeyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCB9OwotICAgICAgICB1bmJsb2Nr
SGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbZnJhbWUsIGNhcHR1cmVkU2NyaXB0XShi
b29sIHVuYmxvY2tlZCkgeworICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9u
SGFuZGxlcihbZnJhbWUsIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xh
dGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQp
Ci0gICAgICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoY2FwdHVyZWRT
Y3JpcHQuc3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0KHNjcmlwdCk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICBmcmFtZUxvYWRlcigpLT5j
bGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCBlYmQ2MGZmLi40MTAxMThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC05MCwyOCArOTAsMjMgQEAgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRh
YmxlTG9hZGVyQ2xpZW4KICAgICAsIG1fbG9hZGVyUHJveHkobG9hZGVyUHJveHkpCiAgICAgLCBt
X3Rhc2tNb2RlKHRhc2tNb2RlLmlzb2xhdGVkQ29weSgpKQogewotICAgIGF1dG8qIHJlcXVlc3RE
YXRhID0gcmVxdWVzdC5jb3B5RGF0YSgpLnJlbGVhc2UoKTsKLSAgICBhdXRvKiBvcHRpb25zQ29w
eSA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5KCkucmVsZWFzZSgpOwotCiAgICAgQVNTRVJUKHNlY3Vy
aXR5T3JpZ2luKTsKICAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KTsKLSAgICBhdXRv
KiBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+KCpzZWN1cml0eU9yaWdpbikucmVsZWFzZSgpOworCisgICAgYXV0byBjb250
ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQ
b2xpY3k+KCpzZWN1cml0eU9yaWdpbik7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+
Y29weVN0YXRlRnJvbShjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCi0gICAgU3RyaW5nQ2FwdHVy
ZSBjYXB0dXJlZE91dGdvaW5nUmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlcik7Ci0gICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0RGF0YSwgb3B0aW9uc0NvcHks
IGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHksIGNhcHR1cmVkT3V0Z29pbmdSZWZlcnJlcl0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdERhdGEgPSByZXF1ZXN0LmNvcHlEYXRhKCksIG9wdGlv
bnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0g
V1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KSwgb3V0Z29pbmdSZWZlcnJlciA9IG91
dGdvaW5nUmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAg
ICBEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAKLSAg
ICAgICAgYXV0byByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChzdGQ6OnVuaXF1ZV9w
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPihyZXF1ZXN0RGF0YSkpOwotICAgICAg
ICByZXF1ZXN0LT5zZXRIVFRQUmVmZXJyZXIoY2FwdHVyZWRPdXRnb2luZ1JlZmVycmVyLnN0cmlu
ZygpKTsKLQotICAgICAgICBhdXRvIG9wdGlvbnMgPSBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnM+KG9wdGlvbnNDb3B5KTsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gUmVz
b3VyY2VSZXF1ZXN0OjphZG9wdChXVEZNb3ZlKHJlcXVlc3REYXRhKSk7CisgICAgICAgIHJlcXVl
c3QtPnNldEhUVFBSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVyKTsKIAogICAgICAgICAvLyBGSVhN
RTogSWYgdGhlIGEgc2l0ZSByZXF1ZXN0cyBhIGxvY2FsIHJlc291cmNlLCB0aGVuIHRoaXMgd2ls
bCByZXR1cm4gYSBub24temVybyB2YWx1ZSBidXQgdGhlIHN5bmMgcGF0aAogICAgICAgICAvLyB3
aWxsIHJldHVybiBhIDAgdmFsdWUuIEVpdGhlciB0aGlzIHNob3VsZCByZXR1cm4gMCBvciB0aGUg
b3RoZXIgY29kZSBwYXRoIHNob3VsZCBkbyBhIGNhbGxiYWNrIHdpdGgKICAgICAgICAgLy8gYSBm
YWlsdXJlLgotICAgICAgICBtX21haW5UaHJlYWRMb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMsICpyZXF1ZXN0LCAqb3B0aW9ucywgc3RkOjp1
bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4oY29udGVudFNlY3VyaXR5UG9saWN5Q29w
eSkpOworICAgICAgICBtX21haW5UaHJlYWRMb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMsICpyZXF1ZXN0LCAqb3B0aW9ucywgV1RGTW92ZShj
b250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KSk7CiAgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRM
b2FkZXIgfHwgbV9sb2FkaW5nRmluaXNoZWQpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktp
dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0KaW5kZXggNmIwZGJjZi4uMTgxNDc5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0Lm1tCkBAIC00MzEsMTEgKzQzMSw5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEV4dGVybmFs
UGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlLCBT
dHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJy
ZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkTG9jYWxpemVk
RGV2aWNlTmFtZShsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgZW5hYmxlZCwgdHlw
ZSwgY2FwdHVyZWRMb2NhbGl6ZWREZXZpY2VOYW1lXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWY8V2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ+KCp0aGlzKSwgdGhpcywgZW5hYmxlZCwgdHlwZSwgbG9j
YWxpemVkRGV2aWNlTmFtZSA9IGxvY2FsaXplZERldmljZU5hbWUuaXNvbGF0ZWRDb3B5KCldIHsK
ICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldEV4
dGVybmFsUGxheWJhY2soZW5hYmxlZCwgdHlwZSwgY2FwdHVyZWRMb2NhbGl6ZWREZXZpY2VOYW1l
LnN0cmluZygpKTsKKyAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNr
KGVuYWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDE1NDU2ZTQu
LjZhZTk2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6bG9nRXhjZXB0
aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdAogdm9pZCBXb3Jr
ZXJHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQo
KSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2sobWVzc2FnZS0+c291
cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIFN0cmluZ0NhcHR1cmUobWVzc2FnZS0+bWVzc2FnZSgp
KSkpOworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2sobWVzc2FnZS0+c291
cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29w
ZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3MKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVh
ZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxl
dmVsLCBTdHJpbmdDYXB0dXJlKG1lc3NhZ2UpKSk7CisgICAgICAgIHBvc3RUYXNrKEFkZENvbnNv
bGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldgogdm9p
ZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVu
c2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJl
YWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBs
ZXZlbCwgU3RyaW5nQ2FwdHVyZShtZXNzYWdlKSkpOworICAgICAgICBwb3N0VGFzayhBZGRDb25z
b2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCmluZGV4IGU5YTkwOTEuLjBiZDJkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0xNDEsOSArMTQxLDcgQEAgYm9vbCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShT
Y3JpcHRFeGVjdXRpb25Db24KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAg
U3RyaW5nQ2FwdHVyZSBjYXB0dXJlZEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgIFN0
cmluZ0NhcHR1cmUgY2FwdHVyZWRTb3VyY2VVUkwoc291cmNlVVJMKTsKLSAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBjYXB0dXJlZEVycm9yTWVzc2FnZSwgY2Fw
dHVyZWRTb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RU
YXNrKFt0aGlzLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIHNv
dXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBXb3JrZXIq
IHdvcmtlck9iamVjdCA9IHRoaXMtPndvcmtlck9iamVjdCgpOwogICAgICAgICBpZiAoIXdvcmtl
ck9iamVjdCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1MSw3ICsxNDksNyBAQCB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZwogICAgICAgICAvLyBXZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgdGhl
IGFza2VkVG9UZXJtaW5hdGUoKSBmbGFnIGhlcmUsIGJlY2F1c2UgZXhjZXB0aW9ucyBzaG91bGQg
KmFsd2F5cyogYmUgcmVwb3J0ZWQgZXZlbiBpZiB0aGUgdGhyZWFkIGlzIHRlcm1pbmF0ZWQuCiAg
ICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBkaWZmZXJlbnQgdGhhbiB0aGUgYmVoYXZp
b3IgaW4gTWVzc2FnZVdvcmtlclRhc2ssIGJlY2F1c2UgdGVybWluYXRlZCB3b3JrZXJzIG5vIGxv
bmdlciBkZWxpdmVyIG1lc3NhZ2VzIChzZWN0aW9uIDQuNiBvZiB0aGUgV2ViV29ya2VyIHNwZWMp
LCBidXQgdGhleSBkbyByZXBvcnQgZXhjZXB0aW9ucy4KIAotICAgICAgICBib29sIGVycm9ySGFu
ZGxlZCA9ICF3b3JrZXJPYmplY3QtPmRpc3BhdGNoRXZlbnQoRXJyb3JFdmVudDo6Y3JlYXRlKGNh
cHR1cmVkRXJyb3JNZXNzYWdlLnN0cmluZygpLCBjYXB0dXJlZFNvdXJjZVVSTC5zdHJpbmcoKSwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKSk7CisgICAgICAgIGJvb2wgZXJyb3JIYW5kbGVkID0g
IXdvcmtlck9iamVjdC0+ZGlzcGF0Y2hFdmVudChFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNz
YWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpOwogICAgICAgICBpZiAo
IWVycm9ySGFuZGxlZCkKICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXhjZXB0aW9uKGNhcHR1
cmVkRXJyb3JNZXNzYWdlLnN0cmluZygpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNhcHR1
cmVkU291cmNlVVJMLnN0cmluZygpLCAwKTsKICAgICB9KTsKQEAgLTE1OSwxMiArMTU3LDEwIEBA
IHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnCiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBv
c3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIFN0cmluZ0Nh
cHR1cmUgY2FwdHVyZWRNZXNzYWdlKG1lc3NhZ2UpOwotICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVy
ZWRTb3VyY2VVUkwoc291cmNlVVJMKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKFt0aGlzLCBzb3VyY2UsIGxldmVsLCBjYXB0dXJlZE1lc3NhZ2UsIGNhcHR1cmVkU291
cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhp
cywgc291cmNlLCBsZXZlbCwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIHNvdXJj
ZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBpZiAoYXNrZWRU
b1Rlcm1pbmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb250ZXh0LmFkZENv
bnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIGNhcHR1cmVkTWVzc2FnZS5zdHJpbmcoKSwgY2Fw
dHVyZWRTb3VyY2VVUkwuc3RyaW5nKCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAg
ICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgc291
cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgIH0pOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280304</attachid>
            <date>2016-06-01 21:11:45 -0700</date>
            <delta_ts>2016-06-01 21:57:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158285-20160601211303.patch</filename>
            <type>text/plain</type>
            <size>16094</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ2NmNjZmM5MTljZjFlOTkyYzVkYzFi
YWY3ZjZmMzYxZjNlYTkwYjUuLmM5NjU5YTVkYTkwYWRhMWY3NDFkNTNlZjk5ODQxNDhmOTI5Njhm
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDYtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2YgU3RyaW5nQ2FwdHVyZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI4NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvV1RG
U3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0NhcHR1cmU6OlN0cmluZ0NhcHR1cmUpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdDYXB0dXJlOjpzdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpTdHJpbmdDYXB0dXJlOjpyZWxlYXNlU3RyaW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6U3RyaW5nQ2FwdHVyZTo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKwogMjAxNi0w
Ni0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBTb21lIHNldHRlcnMgZm9yIGNvbXBvbmVudHMgb2YgRGF0ZSBkbyBub3QgdGltZUNsaXAo
KSB0aGVpciByZXN1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NThhNGQ4ZmYwYzMzODk1OWZmMTQzYmJlMDNj
Y2Y1N2MwZWQwZDlhLi5jOTQ5ZmM5NTFkZmU0ZmNiOWM0OGQwZmJlZTRlNjAxZDkxMmJhNzdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTYtMDYtMDEgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2YgU3RyaW5nQ2FwdHVyZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI4NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoUmVmYWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgCisgICAg
ICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFkZENvbnNvbGVNZXNzYWdlVGFzazo6QWRkQ29uc29sZU1l
c3NhZ2VUYXNrKToKKyAgICAgICAgCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppbnN0YWxsQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyKToKKyAgICAgICAgCisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RXh0ZXJuYWxQ
bGF5YmFjayk6CisgICAgICAgIAorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToK
KyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0
Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisKIDIwMTYtMDYtMDEgIENocmlzIEZsZWl6
YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXRUZXN0IGFjY2Vzc2li
aWxpdHkvaW9zLXNpbXVsYXRvci9hdHRyaWJ1dGVkLXN0cmluZy1mb3ItcmFuZ2UuaHRtbCBmYWls
aW5nIG9uIGlvcy1zaW11bGF0b3IgZGVidWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGVm
NjIxZmM0MTMzNDllNjk2ZDc1YWZmYTczOThiYjAxMzU2MDliOWUuLmY3MWYyYzA0N2M4YmUwN2Mz
MDk2YmU0OGRhNjA0MzRhMTkyZjYxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNjkw
LDI1ICs2OTAsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIG1fY2hhcmFjdGVyczsKIH07
CiAKLS8vIEZvciB0aHJlYWQtc2FmZSBsYW1iZGEgY2FwdHVyZToKLS8vIFN0cmluZ0NhcHR1cmUg
c3RyaW5nQ2FwdHVyZShzdHJpbmcpOwotLy8gYXV0byBsYW1iZGFUaGF0UnVuc0luT3RoZXJUaHJl
YWQgPSBbc3RyaW5nQ2FwdHVyZV0geyBTdHJpbmcgc3RyaW5nID0gc3RyaW5nQ2FwdHVyZS5zdHJp
bmcoKTsgLi4uIH0KLS8vIEZJWE1FOiBSZW1vdmUgd2hlbiB3ZSBjYW4gdXNlIEMrKzE0IGluaXRp
YWxpemVkIGxhbWJkYSBjYXB0dXJlOiBbc3RyaW5nID0gc3RyaW5nLmlzb2xhdGVkQ29weSgpXS4K
LWNsYXNzIFN0cmluZ0NhcHR1cmUgewotcHVibGljOgotICAgIFN0cmluZ0NhcHR1cmUoKSB7IH0K
LSAgICBTdHJpbmdDYXB0dXJlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSA6IG1fc3RyaW5nKHN0cmlu
ZykgeyB9Ci0gICAgZXhwbGljaXQgU3RyaW5nQ2FwdHVyZShTdHJpbmcmJiBzdHJpbmcpIDogbV9z
dHJpbmcoc3RyaW5nKSB7IH0KLSAgICBTdHJpbmdDYXB0dXJlKGNvbnN0IFN0cmluZ0NhcHR1cmUm
IG90aGVyKSA6IG1fc3RyaW5nKG90aGVyLm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpKSB7IH0KLSAg
ICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0gICAg
U3RyaW5nIHJlbGVhc2VTdHJpbmcoKSB7IHJldHVybiBXVEZNb3ZlKG1fc3RyaW5nKTsgfQotCi0g
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgU3RyaW5nQ2FwdHVyZSYgb3RoZXIpIHsgbV9zdHJpbmcg
PSBvdGhlci5tX3N0cmluZy5pc29sYXRlZENvcHkoKTsgfQotCi1wcml2YXRlOgotICAgIFN0cmlu
ZyBtX3N0cmluZzsKLX07Ci0KIC8vIFNoYXJlZCBnbG9iYWwgZW1wdHkgc3RyaW5nLgogV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIGNvbnN0IFN0cmluZyYgZW1wdHlTdHJpbmcoKTsKIApAQCAtNzU4LDcg
KzczOSw2IEBAIHVzaW5nIFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczsKIHVzaW5nIFdURjo6
aXNTcGFjZU9yTmV3bGluZTsKIHVzaW5nIFdURjo6cmV2ZXJzZUZpbmQ7CiB1c2luZyBXVEY6OkFT
Q0lJTGl0ZXJhbDsKLXVzaW5nIFdURjo6U3RyaW5nQ2FwdHVyZTsKIAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3NTFjMTcz
YTQ1OTkwMTUyMjg3ZTFiYWVjZjk3MmZjZWY0ZDdiOWY0Li4xZTQzZTc5MmUxYmRkOGExYzg1ZTcy
N2Y1ZTgxOTlkMDhjN2FlODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUzMzMsNyAr
NTMzMyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnBhcnNlRE5TUHJlZmV0Y2hDb250cm9sSGVhZGVyKGNv
bnN0IFN0cmluZyYgZG5zUHJlZmV0Y2hDb250cm9sKQogdm9pZCBEb2N1bWVudDo6YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAg
IGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1l
c3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIFN0cmluZ0NhcHR1cmUobWVzc2FnZSkpKTsKKyAgICAg
ICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2Up
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTM0NCw3ICs1MzQ0LDcgQEAgdm9pZCBE
b2N1bWVudDo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uc3QKIHZvaWQgRG9jdW1lbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7
CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25z
b2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgU3RyaW5nQ2FwdHVyZShtZXNzYWdlKSkpOwor
ICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgbWVz
c2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAwNjVhMjg4ZTdlNTE2OTJiMjg4ZDYzNzMzYTQx
OGVlMjMwNjkxYmI1Li5kN2MyMDM0MWRlOGUyOTRhMWY5NjEzODIzNGE2ZGY5MGU1Zjg0YTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTIxMCw5
ICsyMTAsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgQWRkQ29uc29sZU1lc3Nh
Z2VUYXNrIDogcHVibGljIFRhc2sgewogICAgIHB1YmxpYzoKLSAgICAgICAgQWRkQ29uc29sZU1l
c3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZ0NhcHR1cmUmIG1lc3NhZ2UpCi0gICAgICAgICAgICA6IFRhc2soW3NvdXJjZSwgbGV2
ZWwsIG1lc3NhZ2VdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2Uu
c3RyaW5nKCkpOworICAgICAgICBBZGRDb25zb2xlTWVzc2FnZVRhc2soTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorICAgICAg
ICAgICAgOiBUYXNrKFtzb3VyY2UsIGxldmVsLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENv
cHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAg
IGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSk7CiAgICAg
ICAgICAgICB9KQogICAgICAgICB7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCmluZGV4IDk3Y2JmNjM4NGIzMzBhZmQyOWNjMWI4MDk1ZGY1OWM2ZWZm
YzRjZmMuLjlkZjU2NTBlNTNjZGYyMWQxOGMxMTM5ZTlhMjVjYzU1YzQ0NWNhMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTcwMywxMCArMTcwMyw5IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6Omluc3RhbGxDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIo
Q29udGVudEZpbHRlciYgY29udGVudEZpCiAgICAgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0IHsgY29udGVudEZpbHRlci51bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIH07CiAg
ICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Y8VGhyZWFkU2FmZVJlZkNvdW50
ZWQ8RnJhbWU+LCBGcmFtZT46OnZhbHVlLCAiRnJhbWUgbXVzdCBiZSBUaHJlYWRTYWZlUmVmQ291
bnRlZC4iKTsKLSAgICAgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZFNjcmlwdCB7IHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0IH07Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVj
aXNpb25IYW5kbGVyKFtmcmFtZSwgY2FwdHVyZWRTY3JpcHRdKGJvb2wgdW5ibG9ja2VkKSB7Cisg
ICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtmcmFtZSA9IFdU
Rk1vdmUoZnJhbWUpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRl
ZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQot
ICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGNhcHR1cmVkU2Ny
aXB0LnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdChzY3JpcHQpOwogICAgICAgICB9KTsKICAgICB9CiAgICAgZnJhbWVMb2FkZXIoKS0+Y2xp
ZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggZWJkNjBmZjFiMDM0YTk3MjJiZTJkZTE5YmMxODc4MjBlNTU4ZGZmYi4uNDEwMTE4YjU1
MTE3NjgzZTk0MWNjN2U0ZTkwNmZkYTAyNDExZmVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtOTAsMjggKzkwLDIzIEBAIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2Uo
VGhyZWFkYWJsZUxvYWRlckNsaWVuCiAgICAgLCBtX2xvYWRlclByb3h5KGxvYWRlclByb3h5KQog
ICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5pc29sYXRlZENvcHkoKSkKIHsKLSAgICBhdXRvKiBy
ZXF1ZXN0RGF0YSA9IHJlcXVlc3QuY29weURhdGEoKS5yZWxlYXNlKCk7Ci0gICAgYXV0byogb3B0
aW9uc0NvcHkgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpLnJlbGVhc2UoKTsKLQogICAgIEFTU0VS
VChzZWN1cml0eU9yaWdpbik7CiAgICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7Ci0g
ICAgYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5Pigqc2VjdXJpdHlPcmlnaW4pLnJlbGVhc2UoKTsKKworICAgIGF1
dG8gY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNl
Y3VyaXR5UG9saWN5Pigqc2VjdXJpdHlPcmlnaW4pOwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGlj
eUNvcHktPmNvcHlTdGF0ZUZyb20oY29udGVudFNlY3VyaXR5UG9saWN5KTsKIAotICAgIFN0cmlu
Z0NhcHR1cmUgY2FwdHVyZWRPdXRnb2luZ1JlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIpOwotICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdERhdGEsIG9wdGlv
bnNDb3B5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LCBjYXB0dXJlZE91dGdvaW5nUmVmZXJy
ZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHJlcXVlc3REYXRhID0gcmVxdWVzdC5jb3B5RGF0YSgp
LCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKSwgY29udGVudFNlY3VyaXR5UG9saWN5
Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSksIG91dGdvaW5nUmVmZXJy
ZXIgPSBvdXRnb2luZ1JlZmVycmVyLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQp
OwogCi0gICAgICAgIGF1dG8gcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdDo6YWRvcHQoc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4ocmVxdWVzdERhdGEpKTsK
LSAgICAgICAgcmVxdWVzdC0+c2V0SFRUUFJlZmVycmVyKGNhcHR1cmVkT3V0Z29pbmdSZWZlcnJl
ci5zdHJpbmcoKSk7Ci0KLSAgICAgICAgYXV0byBvcHRpb25zID0gc3RkOjp1bmlxdWVfcHRyPFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zPihvcHRpb25zQ29weSk7CisgICAgICAgIGF1dG8gcmVxdWVz
dCA9IFJlc291cmNlUmVxdWVzdDo6YWRvcHQoV1RGTW92ZShyZXF1ZXN0RGF0YSkpOworICAgICAg
ICByZXF1ZXN0LT5zZXRIVFRQUmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlcik7CiAKICAgICAgICAg
Ly8gRklYTUU6IElmIHRoZSBhIHNpdGUgcmVxdWVzdHMgYSBsb2NhbCByZXNvdXJjZSwgdGhlbiB0
aGlzIHdpbGwgcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUgYnV0IHRoZSBzeW5jIHBhdGgKICAgICAg
ICAgLy8gd2lsbCByZXR1cm4gYSAwIHZhbHVlLiBFaXRoZXIgdGhpcyBzaG91bGQgcmV0dXJuIDAg
b3IgdGhlIG90aGVyIGNvZGUgcGF0aCBzaG91bGQgZG8gYSBjYWxsYmFjayB3aXRoCiAgICAgICAg
IC8vIGEgZmFpbHVyZS4KLSAgICAgICAgbV9tYWluVGhyZWFkTG9hZGVyID0gRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzLCAqcmVxdWVzdCwgKm9wdGlvbnMs
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGNvbnRlbnRTZWN1cml0eVBv
bGljeUNvcHkpKTsKKyAgICAgICAgbV9tYWluVGhyZWFkTG9hZGVyID0gRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzLCAqcmVxdWVzdCwgKm9wdGlvbnMsIFdU
Rk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSkpOwogICAgICAgICBBU1NFUlQobV9tYWlu
VGhyZWFkTG9hZGVyIHx8IG1fbG9hZGluZ0ZpbmlzaGVkKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDZiMGRiY2Y2NWM4Nzg0NmEwMTQ5MDc5ODRkOTMw
YTU5OGFlOTM1OWUuLjE4MTQ3OTY4YzJhNTY5OWM2MDdmODVmOWU0YThjZmEwYmNlODI4YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtNDMxLDExICs0MzEsOSBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUgdHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7CiAgICAgQVNTRVJU
KFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgU3RyaW5nQ2FwdHVyZSBj
YXB0dXJlZExvY2FsaXplZERldmljZU5hbWUobG9jYWxpemVkRGV2aWNlTmFtZSk7Ci0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRo
aXMsIGVuYWJsZWQsIHR5cGUsIGNhcHR1cmVkTG9jYWxpemVkRGV2aWNlTmFtZV0geworICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0g
UmVmPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PigqdGhpcyksIHRoaXMsIGVu
YWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUgPSBsb2NhbGl6ZWREZXZpY2VOYW1lLmlz
b2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgICAgIG1f
aW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHR5cGUsIGNhcHR1cmVkTG9j
YWxpemVkRGV2aWNlTmFtZS5zdHJpbmcoKSk7CisgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0
RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cAppbmRleCAxNTQ1NmU0OWQzN2FhNTU1OTZlNjk2NWQ4OGNkN2U1Mjk3YWY2MjViLi42YWU5NmE0
MDAxYWY4YWJhMGI0YWRjMGYwZTQxMTYyZjVmMTMwNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgV29y
a2VyR2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgY29uc3QKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlKQogewog
ICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29uc29s
ZU1lc3NhZ2VUYXNrKG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBTdHJpbmdD
YXB0dXJlKG1lc3NhZ2UtPm1lc3NhZ2UoKSkpKTsKKyAgICAgICAgcG9zdFRhc2soQWRkQ29uc29s
ZU1lc3NhZ2VUYXNrKG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdl
LT5tZXNzYWdlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjY0LDcgKzI2NCw3
IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzCiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7
CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25z
b2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgU3RyaW5nQ2FwdHVyZShtZXNzYWdlKSkpOwor
ICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgbWVz
c2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9p
ZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCBsZXYKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5z
aWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywg
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQog
ewogICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29u
c29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIFN0cmluZ0NhcHR1cmUobWVzc2FnZSkpKTsK
KyAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIG1l
c3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBlOWE5MDkxN2ExNDZkMmRlZDYz
ZWRlY2JmYWExOGFkOGM4NmEwODNkLi4yZWM0Y2M5MThmZDllNzc4MDgyNzZhYjhhMWJmYTdjYTky
NzU5YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcApAQCAtMTQxLDkgKzE0MSw3IEBAIGJvb2wgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29uCiAKIHZv
aWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRF
cnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKLSAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkU291
cmNlVVJMKHNvdXJjZVVSTCk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhbdGhpcywgY2FwdHVyZWRFcnJvck1lc3NhZ2UsIGNhcHR1cmVkU291cmNlVVJMLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgZXJyb3JNZXNzYWdl
ID0gZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNv
bGF0ZWRDb3B5KCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgV29ya2VyKiB3b3JrZXJPYmplY3QgPSB0aGlzLT53
b3JrZXJPYmplY3QoKTsKICAgICAgICAgaWYgKCF3b3JrZXJPYmplY3QpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xNTEsMjAgKzE0OSwxOCBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZwogICAg
ICAgICAvLyBXZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgdGhlIGFza2VkVG9UZXJtaW5hdGUoKSBm
bGFnIGhlcmUsIGJlY2F1c2UgZXhjZXB0aW9ucyBzaG91bGQgKmFsd2F5cyogYmUgcmVwb3J0ZWQg
ZXZlbiBpZiB0aGUgdGhyZWFkIGlzIHRlcm1pbmF0ZWQuCiAgICAgICAgIC8vIFRoaXMgaXMgaW50
ZW50aW9uYWxseSBkaWZmZXJlbnQgdGhhbiB0aGUgYmVoYXZpb3IgaW4gTWVzc2FnZVdvcmtlclRh
c2ssIGJlY2F1c2UgdGVybWluYXRlZCB3b3JrZXJzIG5vIGxvbmdlciBkZWxpdmVyIG1lc3NhZ2Vz
IChzZWN0aW9uIDQuNiBvZiB0aGUgV2ViV29ya2VyIHNwZWMpLCBidXQgdGhleSBkbyByZXBvcnQg
ZXhjZXB0aW9ucy4KIAotICAgICAgICBib29sIGVycm9ySGFuZGxlZCA9ICF3b3JrZXJPYmplY3Qt
PmRpc3BhdGNoRXZlbnQoRXJyb3JFdmVudDo6Y3JlYXRlKGNhcHR1cmVkRXJyb3JNZXNzYWdlLnN0
cmluZygpLCBjYXB0dXJlZFNvdXJjZVVSTC5zdHJpbmcoKSwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKSk7CisgICAgICAgIGJvb2wgZXJyb3JIYW5kbGVkID0gIXdvcmtlck9iamVjdC0+ZGlzcGF0
Y2hFdmVudChFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcikpOwogICAgICAgICBpZiAoIWVycm9ySGFuZGxlZCkKLSAgICAg
ICAgICAgIGNvbnRleHQucmVwb3J0RXhjZXB0aW9uKGNhcHR1cmVkRXJyb3JNZXNzYWdlLnN0cmlu
ZygpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNhcHR1cmVkU291cmNlVVJMLnN0cmluZygp
LCAwKTsKKyAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXhjZXB0aW9uKGVycm9yTWVzc2FnZSwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwsIDApOwogICAgIH0pOwogfQogCiB2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVj
dChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkKIHsKLSAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkTWVzc2FnZShtZXNzYWdl
KTsKLSAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkU291cmNlVVJMKHNvdXJjZVVSTCk7Ci0gICAg
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgc291cmNlLCBsZXZlbCwg
Y2FwdHVyZWRNZXNzYWdlLCBjYXB0dXJlZFNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UgPSBt
ZXNzYWdlLmlzb2xhdGVkQ29weSgpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5
KCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgaWYgKGFza2VkVG9UZXJtaW5hdGUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgY29udGV4dC5hZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBj
YXB0dXJlZE1lc3NhZ2Uuc3RyaW5nKCksIGNhcHR1cmVkU291cmNlVVJMLnN0cmluZygpLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdl
KHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKTsKICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280305</attachid>
            <date>2016-06-01 21:57:37 -0700</date>
            <delta_ts>2016-06-01 22:12:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158285-20160601215855.patch</filename>
            <type>text/plain</type>
            <size>16069</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ2NmNjZmM5MTljZjFlOTkyYzVkYzFi
YWY3ZjZmMzYxZjNlYTkwYjUuLmM5NjU5YTVkYTkwYWRhMWY3NDFkNTNlZjk5ODQxNDhmOTI5Njhm
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDYtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2YgU3RyaW5nQ2FwdHVyZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI4NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvV1RG
U3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0NhcHR1cmU6OlN0cmluZ0NhcHR1cmUpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdDYXB0dXJlOjpzdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpTdHJpbmdDYXB0dXJlOjpyZWxlYXNlU3RyaW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6U3RyaW5nQ2FwdHVyZTo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKwogMjAxNi0w
Ni0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBTb21lIHNldHRlcnMgZm9yIGNvbXBvbmVudHMgb2YgRGF0ZSBkbyBub3QgdGltZUNsaXAo
KSB0aGVpciByZXN1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NThhNGQ4ZmYwYzMzODk1OWZmMTQzYmJlMDNj
Y2Y1N2MwZWQwZDlhLi5jOTQ5ZmM5NTFkZmU0ZmNiOWM0OGQwZmJlZTRlNjAxZDkxMmJhNzdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTYtMDYtMDEgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2YgU3RyaW5nQ2FwdHVyZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI4NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoUmVmYWN0b3IsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgCisgICAg
ICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkFkZENvbnNvbGVNZXNzYWdlVGFzazo6QWRkQ29uc29sZU1l
c3NhZ2VUYXNrKToKKyAgICAgICAgCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppbnN0YWxsQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyKToKKyAgICAgICAgCisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RXh0ZXJuYWxQ
bGF5YmFjayk6CisgICAgICAgIAorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToK
KyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0
Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisKIDIwMTYtMDYtMDEgIENocmlzIEZsZWl6
YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXRUZXN0IGFjY2Vzc2li
aWxpdHkvaW9zLXNpbXVsYXRvci9hdHRyaWJ1dGVkLXN0cmluZy1mb3ItcmFuZ2UuaHRtbCBmYWls
aW5nIG9uIGlvcy1zaW11bGF0b3IgZGVidWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGVm
NjIxZmM0MTMzNDllNjk2ZDc1YWZmYTczOThiYjAxMzU2MDliOWUuLmY3MWYyYzA0N2M4YmUwN2Mz
MDk2YmU0OGRhNjA0MzRhMTkyZjYxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNjkw
LDI1ICs2OTAsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIG1fY2hhcmFjdGVyczsKIH07
CiAKLS8vIEZvciB0aHJlYWQtc2FmZSBsYW1iZGEgY2FwdHVyZToKLS8vIFN0cmluZ0NhcHR1cmUg
c3RyaW5nQ2FwdHVyZShzdHJpbmcpOwotLy8gYXV0byBsYW1iZGFUaGF0UnVuc0luT3RoZXJUaHJl
YWQgPSBbc3RyaW5nQ2FwdHVyZV0geyBTdHJpbmcgc3RyaW5nID0gc3RyaW5nQ2FwdHVyZS5zdHJp
bmcoKTsgLi4uIH0KLS8vIEZJWE1FOiBSZW1vdmUgd2hlbiB3ZSBjYW4gdXNlIEMrKzE0IGluaXRp
YWxpemVkIGxhbWJkYSBjYXB0dXJlOiBbc3RyaW5nID0gc3RyaW5nLmlzb2xhdGVkQ29weSgpXS4K
LWNsYXNzIFN0cmluZ0NhcHR1cmUgewotcHVibGljOgotICAgIFN0cmluZ0NhcHR1cmUoKSB7IH0K
LSAgICBTdHJpbmdDYXB0dXJlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSA6IG1fc3RyaW5nKHN0cmlu
ZykgeyB9Ci0gICAgZXhwbGljaXQgU3RyaW5nQ2FwdHVyZShTdHJpbmcmJiBzdHJpbmcpIDogbV9z
dHJpbmcoc3RyaW5nKSB7IH0KLSAgICBTdHJpbmdDYXB0dXJlKGNvbnN0IFN0cmluZ0NhcHR1cmUm
IG90aGVyKSA6IG1fc3RyaW5nKG90aGVyLm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpKSB7IH0KLSAg
ICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0gICAg
U3RyaW5nIHJlbGVhc2VTdHJpbmcoKSB7IHJldHVybiBXVEZNb3ZlKG1fc3RyaW5nKTsgfQotCi0g
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgU3RyaW5nQ2FwdHVyZSYgb3RoZXIpIHsgbV9zdHJpbmcg
PSBvdGhlci5tX3N0cmluZy5pc29sYXRlZENvcHkoKTsgfQotCi1wcml2YXRlOgotICAgIFN0cmlu
ZyBtX3N0cmluZzsKLX07Ci0KIC8vIFNoYXJlZCBnbG9iYWwgZW1wdHkgc3RyaW5nLgogV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIGNvbnN0IFN0cmluZyYgZW1wdHlTdHJpbmcoKTsKIApAQCAtNzU4LDcg
KzczOSw2IEBAIHVzaW5nIFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczsKIHVzaW5nIFdURjo6
aXNTcGFjZU9yTmV3bGluZTsKIHVzaW5nIFdURjo6cmV2ZXJzZUZpbmQ7CiB1c2luZyBXVEY6OkFT
Q0lJTGl0ZXJhbDsKLXVzaW5nIFdURjo6U3RyaW5nQ2FwdHVyZTsKIAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3NTFjMTcz
YTQ1OTkwMTUyMjg3ZTFiYWVjZjk3MmZjZWY0ZDdiOWY0Li4xZTQzZTc5MmUxYmRkOGExYzg1ZTcy
N2Y1ZTgxOTlkMDhjN2FlODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUzMzMsNyAr
NTMzMyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnBhcnNlRE5TUHJlZmV0Y2hDb250cm9sSGVhZGVyKGNv
bnN0IFN0cmluZyYgZG5zUHJlZmV0Y2hDb250cm9sKQogdm9pZCBEb2N1bWVudDo6YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAg
IGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1l
c3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIFN0cmluZ0NhcHR1cmUobWVzc2FnZSkpKTsKKyAgICAg
ICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2Up
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTM0NCw3ICs1MzQ0LDcgQEAgdm9pZCBE
b2N1bWVudDo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uc3QKIHZvaWQgRG9jdW1lbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7
CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25z
b2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgU3RyaW5nQ2FwdHVyZShtZXNzYWdlKSkpOwor
ICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgbWVz
c2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAwNjVhMjg4ZTdlNTE2OTJiMjg4ZDYzNzMzYTQx
OGVlMjMwNjkxYmI1Li5kN2MyMDM0MWRlOGUyOTRhMWY5NjEzODIzNGE2ZGY5MGU1Zjg0YTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTIxMCw5
ICsyMTAsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgQWRkQ29uc29sZU1lc3Nh
Z2VUYXNrIDogcHVibGljIFRhc2sgewogICAgIHB1YmxpYzoKLSAgICAgICAgQWRkQ29uc29sZU1l
c3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZ0NhcHR1cmUmIG1lc3NhZ2UpCi0gICAgICAgICAgICA6IFRhc2soW3NvdXJjZSwgbGV2
ZWwsIG1lc3NhZ2VdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2Uu
c3RyaW5nKCkpOworICAgICAgICBBZGRDb25zb2xlTWVzc2FnZVRhc2soTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorICAgICAg
ICAgICAgOiBUYXNrKFtzb3VyY2UsIGxldmVsLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENv
cHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAg
IGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSk7CiAgICAg
ICAgICAgICB9KQogICAgICAgICB7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCmluZGV4IDk3Y2JmNjM4NGIzMzBhZmQyOWNjMWI4MDk1ZGY1OWM2ZWZm
YzRjZmMuLjlkZjU2NTBlNTNjZGYyMWQxOGMxMTM5ZTlhMjVjYzU1YzQ0NWNhMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTcwMywxMCArMTcwMyw5IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6Omluc3RhbGxDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIo
Q29udGVudEZpbHRlciYgY29udGVudEZpCiAgICAgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0IHsgY29udGVudEZpbHRlci51bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIH07CiAg
ICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Y8VGhyZWFkU2FmZVJlZkNvdW50
ZWQ8RnJhbWU+LCBGcmFtZT46OnZhbHVlLCAiRnJhbWUgbXVzdCBiZSBUaHJlYWRTYWZlUmVmQ291
bnRlZC4iKTsKLSAgICAgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZFNjcmlwdCB7IHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0IH07Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVj
aXNpb25IYW5kbGVyKFtmcmFtZSwgY2FwdHVyZWRTY3JpcHRdKGJvb2wgdW5ibG9ja2VkKSB7Cisg
ICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtmcmFtZSA9IFdU
Rk1vdmUoZnJhbWUpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRl
ZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQot
ICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGNhcHR1cmVkU2Ny
aXB0LnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdChzY3JpcHQpOwogICAgICAgICB9KTsKICAgICB9CiAgICAgZnJhbWVMb2FkZXIoKS0+Y2xp
ZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggZWJkNjBmZjFiMDM0YTk3MjJiZTJkZTE5YmMxODc4MjBlNTU4ZGZmYi4uNDEwMTE4YjU1
MTE3NjgzZTk0MWNjN2U0ZTkwNmZkYTAyNDExZmVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtOTAsMjggKzkwLDIzIEBAIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2Uo
VGhyZWFkYWJsZUxvYWRlckNsaWVuCiAgICAgLCBtX2xvYWRlclByb3h5KGxvYWRlclByb3h5KQog
ICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5pc29sYXRlZENvcHkoKSkKIHsKLSAgICBhdXRvKiBy
ZXF1ZXN0RGF0YSA9IHJlcXVlc3QuY29weURhdGEoKS5yZWxlYXNlKCk7Ci0gICAgYXV0byogb3B0
aW9uc0NvcHkgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpLnJlbGVhc2UoKTsKLQogICAgIEFTU0VS
VChzZWN1cml0eU9yaWdpbik7CiAgICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7Ci0g
ICAgYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5Pigqc2VjdXJpdHlPcmlnaW4pLnJlbGVhc2UoKTsKKworICAgIGF1
dG8gY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNl
Y3VyaXR5UG9saWN5Pigqc2VjdXJpdHlPcmlnaW4pOwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGlj
eUNvcHktPmNvcHlTdGF0ZUZyb20oY29udGVudFNlY3VyaXR5UG9saWN5KTsKIAotICAgIFN0cmlu
Z0NhcHR1cmUgY2FwdHVyZWRPdXRnb2luZ1JlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIpOwotICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdERhdGEsIG9wdGlv
bnNDb3B5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LCBjYXB0dXJlZE91dGdvaW5nUmVmZXJy
ZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHJlcXVlc3REYXRhID0gcmVxdWVzdC5jb3B5RGF0YSgp
LCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKSwgY29udGVudFNlY3VyaXR5UG9saWN5
Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSksIG91dGdvaW5nUmVmZXJy
ZXIgPSBvdXRnb2luZ1JlZmVycmVyLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQp
OwogCi0gICAgICAgIGF1dG8gcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdDo6YWRvcHQoc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4ocmVxdWVzdERhdGEpKTsK
LSAgICAgICAgcmVxdWVzdC0+c2V0SFRUUFJlZmVycmVyKGNhcHR1cmVkT3V0Z29pbmdSZWZlcnJl
ci5zdHJpbmcoKSk7Ci0KLSAgICAgICAgYXV0byBvcHRpb25zID0gc3RkOjp1bmlxdWVfcHRyPFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zPihvcHRpb25zQ29weSk7CisgICAgICAgIGF1dG8gcmVxdWVz
dCA9IFJlc291cmNlUmVxdWVzdDo6YWRvcHQoV1RGTW92ZShyZXF1ZXN0RGF0YSkpOworICAgICAg
ICByZXF1ZXN0LT5zZXRIVFRQUmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlcik7CiAKICAgICAgICAg
Ly8gRklYTUU6IElmIHRoZSBhIHNpdGUgcmVxdWVzdHMgYSBsb2NhbCByZXNvdXJjZSwgdGhlbiB0
aGlzIHdpbGwgcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUgYnV0IHRoZSBzeW5jIHBhdGgKICAgICAg
ICAgLy8gd2lsbCByZXR1cm4gYSAwIHZhbHVlLiBFaXRoZXIgdGhpcyBzaG91bGQgcmV0dXJuIDAg
b3IgdGhlIG90aGVyIGNvZGUgcGF0aCBzaG91bGQgZG8gYSBjYWxsYmFjayB3aXRoCiAgICAgICAg
IC8vIGEgZmFpbHVyZS4KLSAgICAgICAgbV9tYWluVGhyZWFkTG9hZGVyID0gRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzLCAqcmVxdWVzdCwgKm9wdGlvbnMs
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGNvbnRlbnRTZWN1cml0eVBv
bGljeUNvcHkpKTsKKyAgICAgICAgbV9tYWluVGhyZWFkTG9hZGVyID0gRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzLCAqcmVxdWVzdCwgKm9wdGlvbnMsIFdU
Rk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSkpOwogICAgICAgICBBU1NFUlQobV9tYWlu
VGhyZWFkTG9hZGVyIHx8IG1fbG9hZGluZ0ZpbmlzaGVkKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDZiMGRiY2Y2NWM4Nzg0NmEwMTQ5MDc5ODRkOTMw
YTU5OGFlOTM1OWUuLmY0ZGU5Mzc2MTM1NzQ3MTU1OTc3N2U0NmU2MWMzY2QwNDExYThkMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtNDMxLDExICs0MzEsOSBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUgdHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7CiAgICAgQVNTRVJU
KFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgU3RyaW5nQ2FwdHVyZSBj
YXB0dXJlZExvY2FsaXplZERldmljZU5hbWUobG9jYWxpemVkRGV2aWNlTmFtZSk7Ci0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRo
aXMsIGVuYWJsZWQsIHR5cGUsIGNhcHR1cmVkTG9jYWxpemVkRGV2aWNlTmFtZV0geworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ+KCp0aGlzKSwgdGhpcywgZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2
aWNlTmFtZSA9IGxvY2FsaXplZERldmljZU5hbWUuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAg
aWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldEV4dGVybmFsUGxh
eWJhY2soZW5hYmxlZCwgdHlwZSwgY2FwdHVyZWRMb2NhbGl6ZWREZXZpY2VOYW1lLnN0cmluZygp
KTsKKyAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQs
IHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDE1NDU2ZTQ5ZDM3YWE1NTU5
NmU2OTY1ZDg4Y2Q3ZTUyOTdhZjYyNWIuLjZhZTk2YTQwMDFhZjhhYmEwYjRhZGMwZjBlNDExNjJm
NWYxMzA2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6bG9nRXhjZXB0
aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdAogdm9pZCBXb3Jr
ZXJHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQo
KSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2sobWVzc2FnZS0+c291
cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIFN0cmluZ0NhcHR1cmUobWVzc2FnZS0+bWVzc2FnZSgp
KSkpOworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2sobWVzc2FnZS0+c291
cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29w
ZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3MKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVh
ZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxl
dmVsLCBTdHJpbmdDYXB0dXJlKG1lc3NhZ2UpKSk7CisgICAgICAgIHBvc3RUYXNrKEFkZENvbnNv
bGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldgogdm9p
ZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVu
c2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJl
YWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBs
ZXZlbCwgU3RyaW5nQ2FwdHVyZShtZXNzYWdlKSkpOworICAgICAgICBwb3N0VGFzayhBZGRDb25z
b2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCmluZGV4IGU5YTkwOTE3YTE0NmQyZGVkNjNlZGVjYmZhYTE4YWQ4Yzg2YTA4M2QuLjJl
YzRjYzkxOGZkOWU3NzgwODI3NmFiOGExYmZhN2NhOTI3NTlhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0xNDEsOSArMTQxLDcg
QEAgYm9vbCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShTY3JpcHRFeGVjdXRpb25Db24KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
CiB7Ci0gICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2Up
OwotICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRTb3VyY2VVUkwoc291cmNlVVJMKTsKLSAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBjYXB0dXJlZEVycm9yTWVz
c2FnZSwgY2FwdHVyZWRTb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcl0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKFt0aGlzLCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRD
b3B5KCksIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAg
ICBXb3JrZXIqIHdvcmtlck9iamVjdCA9IHRoaXMtPndvcmtlck9iamVjdCgpOwogICAgICAgICBp
ZiAoIXdvcmtlck9iamVjdCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1MSwyMCArMTQ5LDE4
IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnCiAgICAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBj
aGVja2luZyB0aGUgYXNrZWRUb1Rlcm1pbmF0ZSgpIGZsYWcgaGVyZSwgYmVjYXVzZSBleGNlcHRp
b25zIHNob3VsZCAqYWx3YXlzKiBiZSByZXBvcnRlZCBldmVuIGlmIHRoZSB0aHJlYWQgaXMgdGVy
bWluYXRlZC4KICAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGRpZmZlcmVudCB0aGFu
IHRoZSBiZWhhdmlvciBpbiBNZXNzYWdlV29ya2VyVGFzaywgYmVjYXVzZSB0ZXJtaW5hdGVkIHdv
cmtlcnMgbm8gbG9uZ2VyIGRlbGl2ZXIgbWVzc2FnZXMgKHNlY3Rpb24gNC42IG9mIHRoZSBXZWJX
b3JrZXIgc3BlYyksIGJ1dCB0aGV5IGRvIHJlcG9ydCBleGNlcHRpb25zLgogCi0gICAgICAgIGJv
b2wgZXJyb3JIYW5kbGVkID0gIXdvcmtlck9iamVjdC0+ZGlzcGF0Y2hFdmVudChFcnJvckV2ZW50
OjpjcmVhdGUoY2FwdHVyZWRFcnJvck1lc3NhZ2Uuc3RyaW5nKCksIGNhcHR1cmVkU291cmNlVVJM
LnN0cmluZygpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpKTsKKyAgICAgICAgYm9vbCBlcnJv
ckhhbmRsZWQgPSAhd29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2ZW50KEVycm9yRXZlbnQ6OmNyZWF0
ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKSk7CiAg
ICAgICAgIGlmICghZXJyb3JIYW5kbGVkKQotICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFeGNl
cHRpb24oY2FwdHVyZWRFcnJvck1lc3NhZ2Uuc3RyaW5nKCksIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgY2FwdHVyZWRTb3VyY2VVUkwuc3RyaW5nKCksIDApOworICAgICAgICAgICAgY29udGV4
dC5yZXBvcnRFeGNlcHRpb24oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHNvdXJjZVVSTCwgMCk7CiAgICAgfSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIFN0cmlu
Z0NhcHR1cmUgY2FwdHVyZWRNZXNzYWdlKG1lc3NhZ2UpOwotICAgIFN0cmluZ0NhcHR1cmUgY2Fw
dHVyZWRTb3VyY2VVUkwoc291cmNlVVJMKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKFt0aGlzLCBzb3VyY2UsIGxldmVsLCBjYXB0dXJlZE1lc3NhZ2UsIGNhcHR1cmVk
U291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhb
dGhpcywgc291cmNlLCBsZXZlbCwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCksIHNv
dXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBpZiAoYXNr
ZWRUb1Rlcm1pbmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb250ZXh0LmFk
ZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIGNhcHR1cmVkTWVzc2FnZS5zdHJpbmcoKSwg
Y2FwdHVyZWRTb3VyY2VVUkwuc3RyaW5nKCksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Cisg
ICAgICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwg
c291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgIH0pOwogfQogCg==
</data>
<flag name="review"
          id="304271"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>