<?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>144604</bug_id>
          
          <creation_ts>2015-05-04 16:00:33 -0700</creation_ts>
          <short_desc>[Content Extensions] Use less memory to store the json input</short_desc>
          <delta_ts>2015-05-05 15:22:11 -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>528+ (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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>bweinstein</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1091571</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-04 16:00:33 -0700</bug_when>
    <thetext>We have several copies of the JSON data that is an input to the content extension compiler.  We need to copy it at least once to convert the utf8 characters to unicode characters for the JSON parser (until we make the JSON parser nicer), but we can free that memory as soon as we are done with it to reduce the peak memory usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091575</commentid>
    <comment_count>1</comment_count>
      <attachid>252346</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-04 16:03:07 -0700</bug_when>
    <thetext>Created attachment 252346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091580</commentid>
    <comment_count>2</comment_count>
      <attachid>252346</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-04 16:06:10 -0700</bug_when>
    <thetext>Comment on attachment 252346
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm:61
&gt; +    encodedContentExtension = nil; // shouldn&apos;t be necessary.

This is wrong. This is not ARC, so you need to explicitly call release. Setting to nil won’t do anything at all. This will simply cause the data to leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091828</commentid>
    <comment_count>3</comment_count>
      <attachid>252394</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-05 11:52:10 -0700</bug_when>
    <thetext>Created attachment 252394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091833</commentid>
    <comment_count>4</comment_count>
      <attachid>252396</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-05 12:06:38 -0700</bug_when>
    <thetext>Created attachment 252396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091838</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-05 12:32:34 -0700</bug_when>
    <thetext>I imagine I don&apos;t need to retain the NSStrings in _WKUserContentExtensionStoreTest because they are static, right?
Will I need to simultaneously change any code in any programs that call compileContentExtensionForIdentifier?  What about ARC code that calls compileContentExtensionForIdentifier?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091898</commentid>
    <comment_count>6</comment_count>
      <attachid>252396</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-05 15:02:26 -0700</bug_when>
    <thetext>Comment on attachment 252396
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserContentExtensionStore.h:37
&gt; -- (void)compileContentExtensionForIdentifier:(NSString *)identifier encodedContentExtension:(NSString *)encodedContentExtension completionHandler:(void (^)(_WKUserContentFilter *, NSError *))completionHandler;
&gt; +- (void)compileContentExtensionForIdentifier:(NSString *)identifier encodedContentExtension:(NSString *) NS_RELEASES_ARGUMENT encodedContentExtension completionHandler:(void (^)(_WKUserContentFilter *, NSError *))completionHandler;

The patch looks like a good move, but I don&apos;t know about NS_RELEASES_ARGUMENT.
Does that work with ARC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091903</commentid>
    <comment_count>7</comment_count>
      <attachid>252410</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-05 15:13:09 -0700</bug_when>
    <thetext>Created attachment 252410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091904</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-05 15:14:16 -0700</bug_when>
    <thetext>Releasing the NSString should be done in another patch.  It&apos;s another small gain, but I&apos;m not as familiar with ObjC reference counting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091906</commentid>
    <comment_count>9</comment_count>
      <attachid>252410</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-05 15:19:27 -0700</bug_when>
    <thetext>Comment on attachment 252410
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091908</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-05 15:22:11 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/183832</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252346</attachid>
            <date>2015-05-04 16:03:07 -0700</date>
            <delta_ts>2015-05-05 11:52:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144604-20150504160153.patch</filename>
            <type>text/plain</type>
            <size>4136</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Mzc3NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA1LTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gVXNlIGxlc3MgbWVtb3J5IHRvIHN0b3JlIHRoZSBqc29uIGlucHV0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2MDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbToKKyAgICAgICAg
KC1bX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZv
cklkZW50aWZpZXI6ZW5jb2RlZENvbnRlbnRFeHRlbnNpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgY29tcGlsZUNvbnRlbnRF
eHRlbnNpb25Gb3JJZGVudGlmaWVyOmVuY29kZWRDb250ZW50RXh0ZW5zaW9uVVRGOERhdGE6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisKIDIwMTUtMDUtMDQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmsgQ2FjaGU6IFN1cHBvcnQgdGltZSBiYXNlZCBj
YWNoZSBjbGVhcmluZwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHJl
dmlzaW9uIDE4MzU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCwx
MCBAQCBXS19DTEFTU19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCCiAKICsgKGluc3Rh
bmNldHlwZSlkZWZhdWx0U3RvcmU7CiAKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmUgb25jZSBp
dCdzIG5vdCB1c2VkLgogLSAodm9pZCljb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZp
ZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjooTlNTdHJp
bmcgKillbmNvZGVkQ29udGVudEV4dGVuc2lvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
X1dLVXNlckNvbnRlbnRGaWx0ZXIgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcjsKKwor
LSAodm9pZCljb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6KE5TU3RyaW5nICop
aWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvblVURjhEYXRhOihOU0RhdGEgKikgTlNf
UkVMRUFTRVNfQVJHVU1FTlQgZW5jb2RlZENvbnRlbnRFeHRlbnNpb24gY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKF9XS1VzZXJDb250ZW50RmlsdGVyICosIE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXI7CiAtICh2b2lkKWxvb2t1cENvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOihO
U1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1VzZXJD
b250ZW50RmlsdGVyICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJl
bW92ZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0JKHJldmlzaW9uIDE4
MzU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDIyIEBAICsg
KGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmUKICAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKEFQ
STo6VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZTo6ZGVmYXVsdFN0b3JlKCkpOwogfQogCisvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgb25jZSBpdCdzIG5vdCB1c2VkIGFueW1vcmUuCiAtICh2b2lkKWNv
bXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVy
IGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOihOU1N0cmluZyAqKWVuY29kZWRDb250ZW50RXh0ZW5z
aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tVc2VyQ29udGVudEZpbHRlciAqLCBO
U0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gYWRvcHRO
UyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOworICAgIFtzZWxmIGNvbXBpbGVDb250ZW50RXh0
ZW5zaW9uRm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uVVRG
OERhdGE6W2VuY29kZWRDb250ZW50RXh0ZW5zaW9uIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CiAK
LSAgICBfdXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS0+Y29tcGlsZUNvbnRlbnRFeHRlbnNpb24o
aWRlbnRpZmllciwgZW5jb2RlZENvbnRlbnRFeHRlbnNpb24sIFtoYW5kbGVyXShSZWZQdHI8QVBJ
OjpVc2VyQ29udGVudEV4dGVuc2lvbj4gY29udGVudEV4dGVuc2lvbiwgc3RkOjplcnJvcl9jb2Rl
IGVycm9yKSB7CistICh2b2lkKWNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjoo
TlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uVVRGOERhdGE6KE5T
RGF0YSAqKSBOU19SRUxFQVNFU19BUkdVTUVOVCBlbmNvZGVkQ29udGVudEV4dGVuc2lvbiBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLVXNlckNvbnRlbnRGaWx0ZXIgKiwgTlNFcnJvciAq
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBs
ZXRpb25IYW5kbGVyIGNvcHldKTsKKyAgICAKKyAgICBTdHJpbmcganNvbiA9IFN0cmluZzo6ZnJv
bVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGVuY29kZWRDb250ZW50RXh0ZW5z
aW9uLmJ5dGVzKSwgZW5jb2RlZENvbnRlbnRFeHRlbnNpb24ubGVuZ3RoKTsKKyAgICAKKyAgICBl
bmNvZGVkQ29udGVudEV4dGVuc2lvbiA9IG5pbDsgLy8gc2hvdWxkbid0IGJlIG5lY2Vzc2FyeS4K
KyAgICAKKyAgICAvLyBGSVhNRTogVXNlIFdURjo6bW92ZSBoZXJlIHNvIHdlIGNhbiBjbGVhciB0
aGUgU3RyaW5nIGR1cmluZyBjb21waWxpbmcuCisgICAgX3VzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmUtPmNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKGlkZW50aWZpZXIsIGpzb24sIFtoYW5kbGVyXShS
ZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvbj4gY29udGVudEV4dGVuc2lvbiwgc3RkOjpl
cnJvcl9jb2RlIGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgYXV0
byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKF9XS1VzZXJDb250ZW50RmlsdGVyICosIE5TRXJyb3Ig
KikpaGFuZGxlci5nZXQoKTsKICAgICAgICAgICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252394</attachid>
            <date>2015-05-05 11:52:10 -0700</date>
            <delta_ts>2015-05-05 12:06:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144604-20150505115058.patch</filename>
            <type>text/plain</type>
            <size>11858</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE1LTA1LTA1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gVXNlIGxlc3MgbWVtb3J5IHRvIHN0b3JlIHRoZSBqc29uIGlucHV0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjA0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmg6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6bG9hZEVuY29kZWRSdWxlcyk6CisgICAgICAgIERvbid0IGNvcHkg
c3RyaW5ncyBhcyBtdWNoIG9yIGtlZXAgdGhlbSBhbGl2ZSBhZnRlciBkb25lIHVzaW5nIHRoZW0u
CisKIDIwMTUtMDUtMDQgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNZWRpYSBjb250cm9sIHZvbHVtZSBzbGlkZXIgaXMgb3BhcXVlLgpJbmRleDogU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxODM4MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzYsMTAgKzEzNiwxMSBAQCBzdGF0aWMgdm9pZCBhZGRVbml2ZXJzYWxBY3Rpb25z
VG9ERkEoREZBCiAgICAgZGZhLm5vZGVzW2RmYS5yb290XS5zZXRBY3Rpb25zKGFjdGlvbnNTdGFy
dCwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGFjdGlvbnNMZW5ndGgpKTsKIH0KIAotc3RkOjplcnJv
cl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQm
IGNsaWVudCwgY29uc3QgU3RyaW5nJiBydWxlTGlzdCkKK3N0ZDo6ZXJyb3JfY29kZSBjb21waWxl
UnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmlu
ZyYmIHJ1bGVMaXN0KQogewogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4gcGFyc2Vk
UnVsZUxpc3Q7CiAgICAgYXV0byBwYXJzZXJFcnJvciA9IHBhcnNlUnVsZUxpc3QocnVsZUxpc3Qs
IHBhcnNlZFJ1bGVMaXN0KTsKKyAgICBydWxlTGlzdCA9IFN0cmluZygpOwogICAgIGlmIChwYXJz
ZXJFcnJvcikKICAgICAgICAgcmV0dXJuIHBhcnNlckVycm9yOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
Q29tcGlsZXIuaAkocmV2aXNpb24gMTgzODE3KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZSgpID0gMDsKIH07
CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVu
dEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VY
UE9SVCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21w
aWxhdGlvbkNsaWVudCYsIFN0cmluZyYmKTsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVu
c2lvbnMKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3Bw
CShyZXZpc2lvbiAxODM1NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDYgKzE2MCw3
IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgbG9hZFJ1bGUoRXhlY1N0YXQKIAogc3RhdGljIHN0
ZDo6ZXJyb3JfY29kZSBsb2FkRW5jb2RlZFJ1bGVzKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgU3Ry
aW5nJiBydWxlcywgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYgcnVsZUxpc3QpCiB7Cisg
ICAgLy8gRklYTUU6IEpTT05QYXJzZSBzaG91bGRuJ3QgbmVlZCBhbiBFeGVjU3RhdGUuCiAgICAg
SlNWYWx1ZSBkZWNvZGVkUnVsZXMgPSBKU09OUGFyc2UoJmV4ZWMsIHJ1bGVzKTsKIAogICAgIGlm
IChleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICFkZWNvZGVkUnVsZXMpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxODM4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wNS0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIFVzZSBs
ZXNzIG1lbW9yeSB0byBzdG9yZSB0aGUganNvbiBpbnB1dC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDYwNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Y29tcGlsZWRUb0ZpbGUpOgorICAg
ICAgICAoQVBJOjpVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpjb21waWxlQ29udGVudEV4dGVu
c2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlLm1tOgorICAgICAgICAoLVtfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjplbmNvZGVkQ29udGVudEV4
dGVuc2lvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgRG9uJ3QgY29weSBzdHJpbmdz
IGFzIG11Y2ggb3Iga2VlcCB0aGVtIGFsaXZlIGFmdGVyIGRvbmUgdXNpbmcgdGhlbS4KKwogMjAx
NS0wNS0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIFVzZSBsZXNzIG1lbW9yeSB3aGVuIHdyaXRpbmcg
Ynl0ZSBjb2RlIHRvIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAkocmV2aXNp
b24gMTgzODE3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0
YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBEYXRhJiAKICAgICByZXR1cm4gc3VjY2Vz
czsKIH0KIAotc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShjb25zdCBTdHJp
bmcmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aCwgQ29udGVudEV4dGVuc2lvbk1l
dGFEYXRhJiBtZXRhRGF0YSwgRGF0YSYgbWFwcGVkRGF0YSkKK3N0YXRpYyBzdGQ6OmVycm9yX2Nv
ZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQ
YXRoLCBDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEmIG1ldGFEYXRhLCBEYXRhJiBtYXBwZWREYXRh
KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczsKIApA
QCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUo
Y28KIAogICAgIENvbXBpbGF0aW9uQ2xpZW50IGNvbXBpbGF0aW9uQ2xpZW50KHRlbXBvcmFyeUZp
bGVIYW5kbGUsIG1ldGFEYXRhKTsKICAgICAKLSAgICBpZiAoYXV0byBjb21waWxlckVycm9yID0g
Y29tcGlsZVJ1bGVMaXN0KGNvbXBpbGF0aW9uQ2xpZW50LCBqc29uKSkKKyAgICBpZiAoYXV0byBj
b21waWxlckVycm9yID0gY29tcGlsZVJ1bGVMaXN0KGNvbXBpbGF0aW9uQ2xpZW50LCBXVEY6Om1v
dmUoanNvbikpKQogICAgICAgICByZXR1cm4gY29tcGlsZXJFcnJvcjsKICAgICBpZiAoY29tcGls
YXRpb25DbGllbnQuaGFkRXJyb3JXaGlsZVdyaXRpbmdUb0ZpbGUoKSkKICAgICAgICAgcmV0dXJu
IFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OkVycm9yOjpDb21waWxlRmFpbGVkOwpAQCAtMjgw
LDE5ICsyODAsMTkgQEAgdm9pZCBVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpsb29rdXBDbwog
ICAgIH0pOwogfQogCi12b2lkIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBpbGVDb250
ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXVEY6OlN0
cmluZyYganNvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0
ZW5zaW9uPiwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24sIHN0ZDo6ZnVuY3Rpb248dm9p
ZChSZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZlB0cjxVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
PiBzZWxmKHRoaXMpOwogICAgIFN0cmluZ0NhcHR1cmUgaWRlbnRpZmllckNhcHR1cmUoaWRlbnRp
Zmllcik7Ci0gICAgU3RyaW5nQ2FwdHVyZSBqc29uQ2FwdHVyZShqc29uKTsKKyAgICBTdHJpbmdD
YXB0dXJlIGpzb25DYXB0dXJlKFdURjo6bW92ZShqc29uKSk7CiAgICAgU3RyaW5nQ2FwdHVyZSBw
YXRoQ2FwdHVyZShtX3N0b3JlUGF0aCk7CiAKLSAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2go
W3NlbGYsIGlkZW50aWZpZXJDYXB0dXJlLCBqc29uQ2FwdHVyZSwgcGF0aENhcHR1cmUsIGNvbXBs
ZXRpb25IYW5kbGVyXSB7CisgICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNoKFtzZWxmLCBpZGVu
dGlmaWVyQ2FwdHVyZSwganNvbkNhcHR1cmUsIHBhdGhDYXB0dXJlLCBjb21wbGV0aW9uSGFuZGxl
cl0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChwYXRo
Q2FwdHVyZS5zdHJpbmcoKSwgaWRlbnRpZmllckNhcHR1cmUuc3RyaW5nKCkpOwogCiAgICAgICAg
IENvbnRlbnRFeHRlbnNpb25NZXRhRGF0YSBtZXRhRGF0YTsKICAgICAgICAgRGF0YSBmaWxlRGF0
YTsKLSAgICAgICAgYXV0byBlcnJvciA9IGNvbXBpbGVkVG9GaWxlKGpzb25DYXB0dXJlLnN0cmlu
ZygpLCBwYXRoLCBtZXRhRGF0YSwgZmlsZURhdGEpOworICAgICAgICBhdXRvIGVycm9yID0gY29t
cGlsZWRUb0ZpbGUoanNvbkNhcHR1cmUucmVsZWFzZVN0cmluZygpLCBwYXRoLCBtZXRhRGF0YSwg
ZmlsZURhdGEpOwogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbc2VsZiwgZXJyb3IsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgZXJyb3IpOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlLmgJKHJldmlzaW9uIDE4MzU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlKGNvbnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgpOwogICAgIHZpcnR1YWwgflVzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmUoKTsKIAotICAgIHZvaWQgY29tcGlsZUNvbnRlbnRFeHRlbnNp
b24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBqc29u
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+LCBz
dGQ6OmVycm9yX2NvZGUpPik7CisgICAgdm9pZCBjb21waWxlQ29udGVudEV4dGVuc2lvbihjb25z
dCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV1RGOjpTdHJpbmcmJiBqc29uLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+LCBzdGQ6OmVycm9yX2Nv
ZGUpPik7CiAgICAgdm9pZCBsb29rdXBDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBpZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRF
eHRlbnNpb24+LCBzdGQ6OmVycm9yX2NvZGUpPik7CiAgICAgdm9pZCByZW1vdmVDb250ZW50RXh0
ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
c3RkOjplcnJvcl9jb2RlKT4pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmUuaAkocmV2aXNpb24gMTgzNTU2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQgogCiAr
IChpbnN0YW5jZXR5cGUpZGVmYXVsdFN0b3JlOwogCi0tICh2b2lkKWNvbXBpbGVDb250ZW50RXh0
ZW5zaW9uRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZW50
RXh0ZW5zaW9uOihOU1N0cmluZyAqKWVuY29kZWRDb250ZW50RXh0ZW5zaW9uIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShfV0tVc2VyQ29udGVudEZpbHRlciAqLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyOworLSAodm9pZCljb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZp
ZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjooTlNTdHJp
bmcgKikgTlNfUkVMRUFTRVNfQVJHVU1FTlQgZW5jb2RlZENvbnRlbnRFeHRlbnNpb24gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1VzZXJDb250ZW50RmlsdGVyICosIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWxvb2t1cENvbnRlbnRFeHRlbnNpb25Gb3JJZGVu
dGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KF9XS1VzZXJDb250ZW50RmlsdGVyICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAt
ICh2b2lkKXJlbW92ZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlk
ZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0JKHJl
dmlzaW9uIDE4MzU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDks
MTAgQEAgKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZQogLSAodm9pZCljb21waWxlQ29udGVu
dEV4dGVuc2lvbkZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29u
dGVudEV4dGVuc2lvbjooTlNTdHJpbmcgKillbmNvZGVkQ29udGVudEV4dGVuc2lvbiBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLVXNlckNvbnRlbnRGaWx0ZXIgKiwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRp
b25IYW5kbGVyIGNvcHldKTsKKyAgICBTdHJpbmcganNvbihlbmNvZGVkQ29udGVudEV4dGVuc2lv
bik7CisgICAgW2VuY29kZWRDb250ZW50RXh0ZW5zaW9uIHJlbGVhc2VdOyAvLyBXZWJLaXRUZXN0
UnVubmVycyB0aW1lb3V0IHNvbWV0aW1lcyB3aXRoIHRoaXMgY2hhbmdlLiBJIHRoaW5rIGl0IGhh
cyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGlzLCBidXQgSSdtIG5vdCBzdXJlIHdoYXQuLi4KIAot
ICAgIF91c2VyQ29udGVudEV4dGVuc2lvblN0b3JlLT5jb21waWxlQ29udGVudEV4dGVuc2lvbihp
ZGVudGlmaWVyLCBlbmNvZGVkQ29udGVudEV4dGVuc2lvbiwgW2hhbmRsZXJdKFJlZlB0cjxBUEk6
OlVzZXJDb250ZW50RXh0ZW5zaW9uPiBjb250ZW50RXh0ZW5zaW9uLCBzdGQ6OmVycm9yX2NvZGUg
ZXJyb3IpIHsKKyAgICBfdXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS0+Y29tcGlsZUNvbnRlbnRF
eHRlbnNpb24oaWRlbnRpZmllciwgV1RGOjptb3ZlKGpzb24pLCBbaGFuZGxlcl0oUmVmUHRyPEFQ
STo6VXNlckNvbnRlbnRFeHRlbnNpb24+IGNvbnRlbnRFeHRlbnNpb24sIHN0ZDo6ZXJyb3JfY29k
ZSBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGF1dG8gcmF3SGFu
ZGxlciA9ICh2b2lkICheKShfV0tVc2VyQ29udGVudEZpbHRlciAqLCBOU0Vycm9yICopKWhhbmRs
ZXIuZ2V0KCk7CiAgICAgICAgICAgICAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzgyMSkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA1LTA1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQgRXh0
ZW5zaW9uc10gVXNlIGxlc3MgbWVtb3J5IHRvIHN0b3JlIHRoZSBqc29uIGlucHV0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjA0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6SW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZUZyb21GaWx0ZXIp
OgorCiAyMDE1LTA1LTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW0NvbnRlbnQgRXh0ZW5zaW9uc10gQ29tYmluZSBORkFzIHByb3Blcmx5
IGFuZCBmcmVlIG1lbW9yeSBhcyB3ZSBjb21waWxlLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCShyZXZp
c2lvbiAxODM4MTgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVu
dEV4dGVuc2lvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksMTEgKzEwOSwxMSBAQCBwcml2
YXRlOgogCiBjbGFzcyBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbiA6IHB1YmxpYyBD
b250ZW50RXh0ZW5zaW9uczo6Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uPiBjcmVhdGVG
cm9tRmlsdGVyKGNvbnN0IFN0cmluZyYgZmlsdGVyKQorICAgIHN0YXRpYyBSZWZQdHI8SW5NZW1v
cnlDb21waWxlZENvbnRlbnRFeHRlbnNpb24+IGNyZWF0ZUZyb21GaWx0ZXIoU3RyaW5nJiYgZmls
dGVyKQogICAgIHsKICAgICAgICAgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbXBpbGVk
Q29udGVudEV4dGVuc2lvbkRhdGEgZXh0ZW5zaW9uRGF0YTsKICAgICAgICAgSW5NZW1vcnlDb250
ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQgY2xpZW50KGV4dGVuc2lvbkRhdGEpOwotICAg
ICAgICBhdXRvIGNvbXBpbGVyRXJyb3IgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVM
aXN0KGNsaWVudCwgZmlsdGVyKTsKKyAgICAgICAgYXV0byBjb21waWxlckVycm9yID0gQ29udGVu
dEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdChjbGllbnQsIFdURjo6bW92ZShmaWx0ZXIpKTsK
ICAgICAgICAgaWYgKGNvbXBpbGVyRXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252396</attachid>
            <date>2015-05-05 12:06:38 -0700</date>
            <delta_ts>2015-05-05 15:13:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144604-20150505120523.patch</filename>
            <type>text/plain</type>
            <size>13554</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE1LTA1LTA1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gVXNlIGxlc3MgbWVtb3J5IHRvIHN0b3JlIHRoZSBqc29uIGlucHV0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjA0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmg6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6bG9hZEVuY29kZWRSdWxlcyk6CisgICAgICAgIERvbid0IGNvcHkg
c3RyaW5ncyBhcyBtdWNoIG9yIGtlZXAgdGhlbSBhbGl2ZSBhZnRlciBkb25lIHVzaW5nIHRoZW0u
CisKIDIwMTUtMDUtMDQgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNZWRpYSBjb250cm9sIHZvbHVtZSBzbGlkZXIgaXMgb3BhcXVlLgpJbmRleDogU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxODM4MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzYsMTAgKzEzNiwxMSBAQCBzdGF0aWMgdm9pZCBhZGRVbml2ZXJzYWxBY3Rpb25z
VG9ERkEoREZBCiAgICAgZGZhLm5vZGVzW2RmYS5yb290XS5zZXRBY3Rpb25zKGFjdGlvbnNTdGFy
dCwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGFjdGlvbnNMZW5ndGgpKTsKIH0KIAotc3RkOjplcnJv
cl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQm
IGNsaWVudCwgY29uc3QgU3RyaW5nJiBydWxlTGlzdCkKK3N0ZDo6ZXJyb3JfY29kZSBjb21waWxl
UnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmlu
ZyYmIHJ1bGVMaXN0KQogewogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4gcGFyc2Vk
UnVsZUxpc3Q7CiAgICAgYXV0byBwYXJzZXJFcnJvciA9IHBhcnNlUnVsZUxpc3QocnVsZUxpc3Qs
IHBhcnNlZFJ1bGVMaXN0KTsKKyAgICBydWxlTGlzdCA9IFN0cmluZygpOwogICAgIGlmIChwYXJz
ZXJFcnJvcikKICAgICAgICAgcmV0dXJuIHBhcnNlckVycm9yOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
Q29tcGlsZXIuaAkocmV2aXNpb24gMTgzODE3KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZSgpID0gMDsKIH07
CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVu
dEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VY
UE9SVCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21w
aWxhdGlvbkNsaWVudCYsIFN0cmluZyYmKTsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVu
c2lvbnMKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3Bw
CShyZXZpc2lvbiAxODM1NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDYgKzE2MCw3
IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgbG9hZFJ1bGUoRXhlY1N0YXQKIAogc3RhdGljIHN0
ZDo6ZXJyb3JfY29kZSBsb2FkRW5jb2RlZFJ1bGVzKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgU3Ry
aW5nJiBydWxlcywgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYgcnVsZUxpc3QpCiB7Cisg
ICAgLy8gRklYTUU6IEpTT05QYXJzZSBzaG91bGRuJ3QgbmVlZCBhbiBFeGVjU3RhdGUuCiAgICAg
SlNWYWx1ZSBkZWNvZGVkUnVsZXMgPSBKU09OUGFyc2UoJmV4ZWMsIHJ1bGVzKTsKIAogICAgIGlm
IChleGVjLmhhZEV4Y2VwdGlvbigpIHx8ICFkZWNvZGVkUnVsZXMpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxODM4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wNS0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIFVzZSBs
ZXNzIG1lbW9yeSB0byBzdG9yZSB0aGUganNvbiBpbnB1dC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDYwNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Y29tcGlsZWRUb0ZpbGUpOgorICAg
ICAgICAoQVBJOjpVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpjb21waWxlQ29udGVudEV4dGVu
c2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlLm1tOgorICAgICAgICAoLVtfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjplbmNvZGVkQ29udGVudEV4
dGVuc2lvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgRG9uJ3QgY29weSBzdHJpbmdz
IGFzIG11Y2ggb3Iga2VlcCB0aGVtIGFsaXZlIGFmdGVyIGRvbmUgdXNpbmcgdGhlbS4KKwogMjAx
NS0wNS0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIFVzZSBsZXNzIG1lbW9yeSB3aGVuIHdyaXRpbmcg
Ynl0ZSBjb2RlIHRvIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAkocmV2aXNp
b24gMTgzODE3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0
YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBEYXRhJiAKICAgICByZXR1cm4gc3VjY2Vz
czsKIH0KIAotc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShjb25zdCBTdHJp
bmcmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aCwgQ29udGVudEV4dGVuc2lvbk1l
dGFEYXRhJiBtZXRhRGF0YSwgRGF0YSYgbWFwcGVkRGF0YSkKK3N0YXRpYyBzdGQ6OmVycm9yX2Nv
ZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQ
YXRoLCBDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEmIG1ldGFEYXRhLCBEYXRhJiBtYXBwZWREYXRh
KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczsKIApA
QCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUo
Y28KIAogICAgIENvbXBpbGF0aW9uQ2xpZW50IGNvbXBpbGF0aW9uQ2xpZW50KHRlbXBvcmFyeUZp
bGVIYW5kbGUsIG1ldGFEYXRhKTsKICAgICAKLSAgICBpZiAoYXV0byBjb21waWxlckVycm9yID0g
Y29tcGlsZVJ1bGVMaXN0KGNvbXBpbGF0aW9uQ2xpZW50LCBqc29uKSkKKyAgICBpZiAoYXV0byBj
b21waWxlckVycm9yID0gY29tcGlsZVJ1bGVMaXN0KGNvbXBpbGF0aW9uQ2xpZW50LCBXVEY6Om1v
dmUoanNvbikpKQogICAgICAgICByZXR1cm4gY29tcGlsZXJFcnJvcjsKICAgICBpZiAoY29tcGls
YXRpb25DbGllbnQuaGFkRXJyb3JXaGlsZVdyaXRpbmdUb0ZpbGUoKSkKICAgICAgICAgcmV0dXJu
IFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OkVycm9yOjpDb21waWxlRmFpbGVkOwpAQCAtMjgw
LDE5ICsyODAsMTkgQEAgdm9pZCBVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpsb29rdXBDbwog
ICAgIH0pOwogfQogCi12b2lkIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBpbGVDb250
ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXVEY6OlN0
cmluZyYganNvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0
ZW5zaW9uPiwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24sIHN0ZDo6ZnVuY3Rpb248dm9p
ZChSZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZlB0cjxVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
PiBzZWxmKHRoaXMpOwogICAgIFN0cmluZ0NhcHR1cmUgaWRlbnRpZmllckNhcHR1cmUoaWRlbnRp
Zmllcik7Ci0gICAgU3RyaW5nQ2FwdHVyZSBqc29uQ2FwdHVyZShqc29uKTsKKyAgICBTdHJpbmdD
YXB0dXJlIGpzb25DYXB0dXJlKFdURjo6bW92ZShqc29uKSk7CiAgICAgU3RyaW5nQ2FwdHVyZSBw
YXRoQ2FwdHVyZShtX3N0b3JlUGF0aCk7CiAKLSAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2go
W3NlbGYsIGlkZW50aWZpZXJDYXB0dXJlLCBqc29uQ2FwdHVyZSwgcGF0aENhcHR1cmUsIGNvbXBs
ZXRpb25IYW5kbGVyXSB7CisgICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNoKFtzZWxmLCBpZGVu
dGlmaWVyQ2FwdHVyZSwganNvbkNhcHR1cmUsIHBhdGhDYXB0dXJlLCBjb21wbGV0aW9uSGFuZGxl
cl0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChwYXRo
Q2FwdHVyZS5zdHJpbmcoKSwgaWRlbnRpZmllckNhcHR1cmUuc3RyaW5nKCkpOwogCiAgICAgICAg
IENvbnRlbnRFeHRlbnNpb25NZXRhRGF0YSBtZXRhRGF0YTsKICAgICAgICAgRGF0YSBmaWxlRGF0
YTsKLSAgICAgICAgYXV0byBlcnJvciA9IGNvbXBpbGVkVG9GaWxlKGpzb25DYXB0dXJlLnN0cmlu
ZygpLCBwYXRoLCBtZXRhRGF0YSwgZmlsZURhdGEpOworICAgICAgICBhdXRvIGVycm9yID0gY29t
cGlsZWRUb0ZpbGUoanNvbkNhcHR1cmUucmVsZWFzZVN0cmluZygpLCBwYXRoLCBtZXRhRGF0YSwg
ZmlsZURhdGEpOwogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbc2VsZiwgZXJyb3IsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgZXJyb3IpOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlLmgJKHJldmlzaW9uIDE4MzU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlKGNvbnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgpOwogICAgIHZpcnR1YWwgflVzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmUoKTsKIAotICAgIHZvaWQgY29tcGlsZUNvbnRlbnRFeHRlbnNp
b24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBqc29u
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+LCBz
dGQ6OmVycm9yX2NvZGUpPik7CisgICAgdm9pZCBjb21waWxlQ29udGVudEV4dGVuc2lvbihjb25z
dCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV1RGOjpTdHJpbmcmJiBqc29uLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+LCBzdGQ6OmVycm9yX2Nv
ZGUpPik7CiAgICAgdm9pZCBsb29rdXBDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBpZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRF
eHRlbnNpb24+LCBzdGQ6OmVycm9yX2NvZGUpPik7CiAgICAgdm9pZCByZW1vdmVDb250ZW50RXh0
ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
c3RkOjplcnJvcl9jb2RlKT4pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmUuaAkocmV2aXNpb24gMTgzNTU2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQgogCiAr
IChpbnN0YW5jZXR5cGUpZGVmYXVsdFN0b3JlOwogCi0tICh2b2lkKWNvbXBpbGVDb250ZW50RXh0
ZW5zaW9uRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZW50
RXh0ZW5zaW9uOihOU1N0cmluZyAqKWVuY29kZWRDb250ZW50RXh0ZW5zaW9uIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShfV0tVc2VyQ29udGVudEZpbHRlciAqLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyOworLSAodm9pZCljb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZp
ZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjooTlNTdHJp
bmcgKikgTlNfUkVMRUFTRVNfQVJHVU1FTlQgZW5jb2RlZENvbnRlbnRFeHRlbnNpb24gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1VzZXJDb250ZW50RmlsdGVyICosIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWxvb2t1cENvbnRlbnRFeHRlbnNpb25Gb3JJZGVu
dGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KF9XS1VzZXJDb250ZW50RmlsdGVyICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAt
ICh2b2lkKXJlbW92ZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlk
ZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0JKHJl
dmlzaW9uIDE4MzU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDks
MTAgQEAgKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZQogLSAodm9pZCljb21waWxlQ29udGVu
dEV4dGVuc2lvbkZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29u
dGVudEV4dGVuc2lvbjooTlNTdHJpbmcgKillbmNvZGVkQ29udGVudEV4dGVuc2lvbiBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLVXNlckNvbnRlbnRGaWx0ZXIgKiwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRp
b25IYW5kbGVyIGNvcHldKTsKKyAgICBTdHJpbmcganNvbihlbmNvZGVkQ29udGVudEV4dGVuc2lv
bik7CisgICAgW2VuY29kZWRDb250ZW50RXh0ZW5zaW9uIHJlbGVhc2VdOwogCi0gICAgX3VzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmUtPmNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKGlkZW50aWZpZXIs
IGVuY29kZWRDb250ZW50RXh0ZW5zaW9uLCBbaGFuZGxlcl0oUmVmUHRyPEFQSTo6VXNlckNvbnRl
bnRFeHRlbnNpb24+IGNvbnRlbnRFeHRlbnNpb24sIHN0ZDo6ZXJyb3JfY29kZSBlcnJvcikgewor
ICAgIF91c2VyQ29udGVudEV4dGVuc2lvblN0b3JlLT5jb21waWxlQ29udGVudEV4dGVuc2lvbihp
ZGVudGlmaWVyLCBXVEY6Om1vdmUoanNvbiksIFtoYW5kbGVyXShSZWZQdHI8QVBJOjpVc2VyQ29u
dGVudEV4dGVuc2lvbj4gY29udGVudEV4dGVuc2lvbiwgc3RkOjplcnJvcl9jb2RlIGVycm9yKSB7
CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZv
aWQgKF4pKF9XS1VzZXJDb250ZW50RmlsdGVyICosIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsK
ICAgICAgICAgICAgIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTgzODIxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDUtMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29udGVudCBFeHRlbnNpb25zXSBV
c2UgbGVzcyBtZW1vcnkgdG8gc3RvcmUgdGhlIGpzb24gaW5wdXQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2MDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9FeHRlbnNp
b25NYW5hZ2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtFeHRlbnNpb25NYW5hZ2Vy
V2luZG93Q29udHJvbGxlciBhZGQ6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Oklu
TWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGVGcm9tRmlsdGVyKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRlc3QpOgorCiAy
MDE1LTA1LTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW0NvbnRlbnQgRXh0ZW5zaW9uc10gQ29tYmluZSBORkFzIHByb3Blcmx5IGFuZCBm
cmVlIG1lbW9yeSBhcyB3ZSBjb21waWxlLgpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL0V4
dGVuc2lvbk1hbmFnZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL0V4dGVuc2lvbk1hbmFnZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9u
IDE4MzU1NikKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9FeHRlbnNpb25NYW5hZ2VyV2luZG93
Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIC0gKElCQWN0aW9u
KWFkZDooaWQpc2VuZGVyCiAKICAgICAgICAgTlNVUkwgKnVybCA9IFtvcGVuUGFuZWwuVVJMcyBv
YmplY3RBdEluZGV4OjBdOwogICAgICAgICBOU1N0cmluZyAqaWRlbnRpZmllciA9IHVybC5sYXN0
UGF0aENvbXBvbmVudDsKLSAgICAgICAgTlNTdHJpbmcgKmpzb25TdHJpbmcgPSBbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6dXJsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nIGVycm9yOm5pbF07CisgICAgICAgIE5TU3RyaW5nICpqc29uU3RyaW5nID0gW1tbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDp1cmwgZW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmcgZXJyb3I6bmlsXSByZXRhaW5dOwogCiAgICAgICAgIFtbX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9y
SWRlbnRpZmllcjppZGVudGlmaWVyIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmpzb25TdHJpbmcg
Y29tcGxldGlvbkhhbmRsZXI6XihfV0tVc2VyQ29udGVudEZpbHRlciAqZXh0ZW5zaW9uLCBOU0Vy
cm9yICplcnJvcikKICAgICAgICAgewpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAxODM4
MTgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksMTEgKzEwOSwxMSBAQCBwcml2YXRlOgogCiBj
bGFzcyBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbiA6IHB1YmxpYyBDb250ZW50RXh0
ZW5zaW9uczo6Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uPiBjcmVhdGVGcm9tRmlsdGVy
KGNvbnN0IFN0cmluZyYgZmlsdGVyKQorICAgIHN0YXRpYyBSZWZQdHI8SW5NZW1vcnlDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24+IGNyZWF0ZUZyb21GaWx0ZXIoU3RyaW5nJiYgZmlsdGVyKQogICAg
IHsKICAgICAgICAgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbXBpbGVkQ29udGVudEV4
dGVuc2lvbkRhdGEgZXh0ZW5zaW9uRGF0YTsKICAgICAgICAgSW5NZW1vcnlDb250ZW50RXh0ZW5z
aW9uQ29tcGlsYXRpb25DbGllbnQgY2xpZW50KGV4dGVuc2lvbkRhdGEpOwotICAgICAgICBhdXRv
IGNvbXBpbGVyRXJyb3IgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KGNsaWVu
dCwgZmlsdGVyKTsKKyAgICAgICAgYXV0byBjb21waWxlckVycm9yID0gQ29udGVudEV4dGVuc2lv
bnM6OmNvbXBpbGVSdWxlTGlzdChjbGllbnQsIFdURjo6bW92ZShmaWx0ZXIpKTsKICAgICAgICAg
aWYgKGNvbXBpbGVyRXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0JKHJl
dmlzaW9uIDE4MzU1NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9s
bGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDcgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1Db25maWd1cmVWaQogICAgIAogI2lmIFdLX0FQSV9FTkFCTEVECiAg
ICAgX19ibG9jayBib29sIGRvbmVDb21waWxpbmcgPSBmYWxzZTsKKyAgICBbY29udGVudEV4dGVu
c2lvblN0cmluZyByZXRhaW5dOwogICAgIFtbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBk
ZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlRlc3RD
b250ZW50RXh0ZW5zaW9ucyIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246Y29udGVudEV4dGVuc2lv
blN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS1VzZXJDb250ZW50RmlsdGVyICpmaWx0ZXIs
IE5TRXJyb3IgKmVycm9yKQogICAgIHsKICAgICAgICAgaWYgKCFlcnJvcikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252410</attachid>
            <date>2015-05-05 15:13:09 -0700</date>
            <delta_ts>2015-05-05 15:19:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144604-20150505151154.patch</filename>
            <type>text/plain</type>
            <size>8692</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA1LTA1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gVXNlIGxlc3MgbWVtb3J5IHRvIHN0b3JlIHRoZSBqc29uIGlucHV0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjA0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6bG9hZEVuY29kZWRSdWxlcyk6CisgICAgICAgIERvbid0IGNvcHkg
c3RyaW5ncyBhcyBtdWNoIG9yIGtlZXAgdGhlbSBhbGl2ZSBhZnRlciBkb25lIHVzaW5nIHRoZW0u
CisKIDIwMTUtMDUtMDQgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNZWRpYSBjb250cm9sIHZvbHVtZSBzbGlkZXIgaXMgb3BhcXVlLgpJbmRleDogU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxODM4MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzYsMTAgKzEzNiwxMSBAQCBzdGF0aWMgdm9pZCBhZGRVbml2ZXJzYWxBY3Rpb25z
VG9ERkEoREZBCiAgICAgZGZhLm5vZGVzW2RmYS5yb290XS5zZXRBY3Rpb25zKGFjdGlvbnNTdGFy
dCwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGFjdGlvbnNMZW5ndGgpKTsKIH0KIAotc3RkOjplcnJv
cl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQm
IGNsaWVudCwgY29uc3QgU3RyaW5nJiBydWxlTGlzdCkKK3N0ZDo6ZXJyb3JfY29kZSBjb21waWxl
UnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmlu
ZyYmIHJ1bGVMaXN0KQogewogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4gcGFyc2Vk
UnVsZUxpc3Q7CiAgICAgYXV0byBwYXJzZXJFcnJvciA9IHBhcnNlUnVsZUxpc3QocnVsZUxpc3Qs
IHBhcnNlZFJ1bGVMaXN0KTsKKyAgICBydWxlTGlzdCA9IFN0cmluZygpOwogICAgIGlmIChwYXJz
ZXJFcnJvcikKICAgICAgICAgcmV0dXJuIHBhcnNlckVycm9yOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
Q29tcGlsZXIuaAkocmV2aXNpb24gMTgzODE3KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZSgpID0gMDsKIH07
CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVu
dEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VY
UE9SVCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21w
aWxhdGlvbkNsaWVudCYsIFN0cmluZyYmKTsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVu
c2lvbnMKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4
MzgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDE1LTA1LTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQgRXh0ZW5zaW9uc10gVXNlIGxlc3MgbWVtb3J5
IHRvIHN0b3JlIHRoZSBqc29uIGlucHV0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpjb21waWxlZFRvRmlsZSk6CisgICAgICAgIChBUEk6
OlVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaDoKKyAg
ICAgICAgRG9uJ3QgY29weSBzdHJpbmdzIGFzIG11Y2ggb3Iga2VlcCB0aGVtIGFsaXZlIGFmdGVy
IGRvbmUgdXNpbmcgdGhlbS4KKwogMjAxNS0wNS0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIFVzZSBs
ZXNzIG1lbW9yeSB3aGVuIHdyaXRpbmcgYnl0ZSBjb2RlIHRvIGZpbGUKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlLmNwcAkocmV2aXNpb24gMTgzODE3KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBE
YXRhJiAKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBj
b21waWxlZFRvRmlsZShjb25zdCBTdHJpbmcmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxl
UGF0aCwgQ29udGVudEV4dGVuc2lvbk1ldGFEYXRhJiBtZXRhRGF0YSwgRGF0YSYgbWFwcGVkRGF0
YSkKK3N0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwg
Y29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoLCBDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEmIG1l
dGFEYXRhLCBEYXRhJiBtYXBwZWREYXRhKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczsKIApAQCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRpYyBzdGQ6OmVy
cm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoY28KIAogICAgIENvbXBpbGF0aW9uQ2xpZW50IGNvbXBp
bGF0aW9uQ2xpZW50KHRlbXBvcmFyeUZpbGVIYW5kbGUsIG1ldGFEYXRhKTsKICAgICAKLSAgICBp
ZiAoYXV0byBjb21waWxlckVycm9yID0gY29tcGlsZVJ1bGVMaXN0KGNvbXBpbGF0aW9uQ2xpZW50
LCBqc29uKSkKKyAgICBpZiAoYXV0byBjb21waWxlckVycm9yID0gY29tcGlsZVJ1bGVMaXN0KGNv
bXBpbGF0aW9uQ2xpZW50LCBXVEY6Om1vdmUoanNvbikpKQogICAgICAgICByZXR1cm4gY29tcGls
ZXJFcnJvcjsKICAgICBpZiAoY29tcGlsYXRpb25DbGllbnQuaGFkRXJyb3JXaGlsZVdyaXRpbmdU
b0ZpbGUoKSkKICAgICAgICAgcmV0dXJuIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OkVycm9y
OjpDb21waWxlRmFpbGVkOwpAQCAtMjgwLDE5ICsyODAsMTkgQEAgdm9pZCBVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlOjpsb29rdXBDbwogICAgIH0pOwogfQogCi12b2lkIFVzZXJDb250ZW50RXh0
ZW5zaW9uU3RvcmU6OmNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBXVEY6OlN0cmluZyYganNvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKFJl
ZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uPiwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBpbGVDb250
ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6OlN0cmluZyYm
IGpzb24sIHN0ZDo6ZnVuY3Rpb248dm9pZChSZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVuc2lv
bj4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZlB0cjxV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlPiBzZWxmKHRoaXMpOwogICAgIFN0cmluZ0NhcHR1cmUg
aWRlbnRpZmllckNhcHR1cmUoaWRlbnRpZmllcik7Ci0gICAgU3RyaW5nQ2FwdHVyZSBqc29uQ2Fw
dHVyZShqc29uKTsKKyAgICBTdHJpbmdDYXB0dXJlIGpzb25DYXB0dXJlKFdURjo6bW92ZShqc29u
KSk7CiAgICAgU3RyaW5nQ2FwdHVyZSBwYXRoQ2FwdHVyZShtX3N0b3JlUGF0aCk7CiAKLSAgICBt
X2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3NlbGYsIGlkZW50aWZpZXJDYXB0dXJlLCBqc29uQ2Fw
dHVyZSwgcGF0aENhcHR1cmUsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgbV9jb21waWxlUXVl
dWUtPmRpc3BhdGNoKFtzZWxmLCBpZGVudGlmaWVyQ2FwdHVyZSwganNvbkNhcHR1cmUsIHBhdGhD
YXB0dXJlLCBjb21wbGV0aW9uSGFuZGxlcl0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0
aCA9IGNvbnN0cnVjdGVkUGF0aChwYXRoQ2FwdHVyZS5zdHJpbmcoKSwgaWRlbnRpZmllckNhcHR1
cmUuc3RyaW5nKCkpOwogCiAgICAgICAgIENvbnRlbnRFeHRlbnNpb25NZXRhRGF0YSBtZXRhRGF0
YTsKICAgICAgICAgRGF0YSBmaWxlRGF0YTsKLSAgICAgICAgYXV0byBlcnJvciA9IGNvbXBpbGVk
VG9GaWxlKGpzb25DYXB0dXJlLnN0cmluZygpLCBwYXRoLCBtZXRhRGF0YSwgZmlsZURhdGEpOwor
ICAgICAgICBhdXRvIGVycm9yID0gY29tcGlsZWRUb0ZpbGUoanNvbkNhcHR1cmUucmVsZWFzZVN0
cmluZygpLCBwYXRoLCBtZXRhRGF0YSwgZmlsZURhdGEpOwogICAgICAgICBpZiAoZXJyb3IpIHsK
ICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgZXJyb3IsIGNvbXBs
ZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0
ciwgZXJyb3IpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29u
dGVudEV4dGVuc2lvblN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHJldmlzaW9uIDE4MzU1NikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlKGNvbnN0IFdURjo6U3RyaW5nJiBzdG9yZVBh
dGgpOwogICAgIHZpcnR1YWwgflVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUoKTsKIAotICAgIHZv
aWQgY29tcGlsZUNvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFdURjo6U3RyaW5nJiBqc29uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6
VXNlckNvbnRlbnRFeHRlbnNpb24+LCBzdGQ6OmVycm9yX2NvZGUpPik7CisgICAgdm9pZCBjb21w
aWxlQ29udGVudEV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV1RGOjpT
dHJpbmcmJiBqc29uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRF
eHRlbnNpb24+LCBzdGQ6OmVycm9yX2NvZGUpPik7CiAgICAgdm9pZCBsb29rdXBDb250ZW50RXh0
ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
UmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+LCBzdGQ6OmVycm9yX2NvZGUpPik7CiAg
ICAgdm9pZCByZW1vdmVDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoc3RkOjplcnJvcl9jb2RlKT4pOwogCkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODM4
MjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAor
MjAxNS0wNS0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIFVzZSBsZXNzIG1lbW9yeSB0byBzdG9yZSB0
aGUganNvbiBpbnB1dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NDYwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTWluaUJyb3dzZXIvbWFjL0V4dGVuc2lvbk1hbmFnZXJXaW5kb3dDb250cm9sbGVy
Lm06CisgICAgICAgICgtW0V4dGVuc2lvbk1hbmFnZXJXaW5kb3dDb250cm9sbGVyIGFkZDpdKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRl
bnNpb246OmNyZWF0ZUZyb21GaWx0ZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFj
L1Rlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1Db25maWd1cmVWaWV3Rm9yVGVzdCk6CisKIDIwMTUtMDUtMDUgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbQ29udGVudCBFeHRlbnNp
b25zXSBDb21iaW5lIE5GQXMgcHJvcGVybHkgYW5kIGZyZWUgbWVtb3J5IGFzIHdlIGNvbXBpbGUu
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9D
b250ZW50RXh0ZW5zaW9ucy5jcHAJKHJldmlzaW9uIDE4MzgxOCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwOSwxMSArMTA5LDExIEBAIHByaXZhdGU6CiAKIGNsYXNzIEluTWVtb3J5Q29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uIDogcHVibGljIENvbnRlbnRFeHRlbnNpb25zOjpDb21waWxlZENvbnRl
bnRFeHRlbnNpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8SW5NZW1vcnlDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24+IGNyZWF0ZUZyb21GaWx0ZXIoY29uc3QgU3RyaW5nJiBmaWx0ZXIp
CisgICAgc3RhdGljIFJlZlB0cjxJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbj4gY3Jl
YXRlRnJvbUZpbHRlcihTdHJpbmcmJiBmaWx0ZXIpCiAgICAgewogICAgICAgICBXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YSBleHRlbnNpb25E
YXRhOwogICAgICAgICBJbk1lbW9yeUNvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCBj
bGllbnQoZXh0ZW5zaW9uRGF0YSk7Ci0gICAgICAgIGF1dG8gY29tcGlsZXJFcnJvciA9IENvbnRl
bnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QoY2xpZW50LCBmaWx0ZXIpOworICAgICAgICBh
dXRvIGNvbXBpbGVyRXJyb3IgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KGNs
aWVudCwgV1RGOjptb3ZlKGZpbHRlcikpOwogICAgICAgICBpZiAoY29tcGlsZXJFcnJvcikKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogCg==
</data>
<flag name="review"
          id="277265"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>