<?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>39857</bug_id>
          
          <creation_ts>2010-05-27 16:53:00 -0700</creation_ts>
          <short_desc>GIFs loop one time too few</short_desc>
          <delta_ts>2011-04-19 05:15:29 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>CLOSED</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="Peter Kasting">pkasting</reporter>
          <assigned_to name="Peter Kasting">pkasting</assigned_to>
          <cc>hausmann</cc>
    
    <cc>hyatt</cc>
    
    <cc>jay.tucker</cc>
    
    <cc>mrowe</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>231503</commentid>
    <comment_count>0</comment_count>
      <attachid>57281</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-05-27 16:53:00 -0700</bug_when>
    <thetext>Created attachment 57281
Image with a loop count of &quot;1&quot;

The Netscape extension to GIF89a that adds a loop count to animated images is interpreted differently by Firefox/IE vs. Safari/Opera.  According to http://mxr.mozilla.org/mozilla-central/source/modules/libpr0n/src/imgContainer.cpp (see SetLoopCount()), the loop count is intended to mean &quot;how many times should this loop after animating through once&quot;.  Thus a loop count of &quot;1&quot; means that the animation should be displayed a total of 2 times.  Firefox and IE both behave this way.

Safari/Opera, on the other hand, treat the loop count as the number of total times to loop.  Thus they display non-infinitely-looping GIFs with one fewer cycle compared to Firefox/IE.  The attached image specifies a loop count of 1 and thus can be used to compare the browsers&apos; behavior.

Chrome currently matches Safari/Opera; I intend to fix this in a separate bug.  This bug is about fixing Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231506</commentid>
    <comment_count>1</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-05-27 16:57:51 -0700</bug_when>
    <thetext>Oh hey wait.  Since the fix is in BitmapImage.cpp, it will actually fix things for both Safari and Chrome at the same time.

OK, taking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231511</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-05-27 17:30:06 -0700</bug_when>
    <thetext>Argh, this is really confusing.

Reading http://mxr.mozilla.org/mozilla-central/source/modules/libpr0n/decoders/gif/nsGIFDecoder2.cpp more:

-1 means &quot;loop infinitely&quot;.
0 means &quot;loop infinitely&quot;.
anything else means &quot;show n + 1 total times&quot;.

The obvious question then is: how would someone specify &quot;loop once&quot;?  The answer is that you can&apos;t do it from this value, you just omit the Netscape extension block entirely, and the default is then to loop once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231517</commentid>
    <comment_count>3</comment_count>
      <attachid>57284</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-05-27 18:01:36 -0700</bug_when>
    <thetext>Created attachment 57284
patch v1

This should fix Safari, Chrome, and all other consumers besides Qt, which was already correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231518</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-27 18:02:53 -0700</bug_when>
    <thetext>Attachment 57284 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/platform/graphics/BitmapImage.cpp:283:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/platform/image-decoders/gif/GIFImageReader.cpp:692:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/platform/graphics/cg/ImageSourceCG.cpp:213:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 3 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231520</commentid>
    <comment_count>5</comment_count>
      <attachid>57285</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-05-27 18:06:16 -0700</bug_when>
    <thetext>Created attachment 57285
patch v1.1

Fixes the style errors in BitmapImage.cpp and ImageSourceCG.cpp, but not in GIFImageReader.cpp as that file is not in WebKit style but rather is copied from Mozilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231522</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-27 18:07:45 -0700</bug_when>
    <thetext>Attachment 57285 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/platform/image-decoders/gif/GIFImageReader.cpp:692:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231550</commentid>
    <comment_count>7</comment_count>
      <attachid>57285</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-27 20:30:29 -0700</bug_when>
    <thetext>Comment on attachment 57285
patch v1.1

Great catch, really glad you are fixing it.

Why get rid of cAnimationLoopOnce? Changing its value to 0 would make the patch smaller, and I think having a named constant for it is still helpful even if it&apos;s only a particular special case of the general rule of &quot;loop once more than this number&quot;. I think that changing from the constant to the magic number 0 makes the code less readable.

Please take a crack at doing this without removing cAnimationLoopOnce. The resulting patch should be a bit smaller and it will also be clearer what you are and are not changing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231551</commentid>
    <comment_count>8</comment_count>
      <attachid>57285</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-27 20:34:57 -0700</bug_when>
    <thetext>Comment on attachment 57285
patch v1.1

We also need a test case for this bug fix. If we can&apos;t come up with a DumpRenderTree test, we need a manual test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231806</commentid>
    <comment_count>9</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-05-28 11:17:48 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Why get rid of cAnimationLoopOnce? Changing its value to 0 would make the patch smaller, and I think having a named constant for it is still helpful even if it&apos;s only a particular special case of the general rule of &quot;loop once more than this number&quot;. I think that changing from the constant to the magic number 0 makes the code less readable.

You are right that that would make the patch smaller.  My reason for doing it was that I felt uncomfortable with having a named constant for a value that was handled identically to all the unnamed constants -- it seemed like it would cause readers to believe that had to be handled specially, which wasn&apos;t true.  OTOH, it _is_ something of a magic number since the GIF extension can&apos;t represent that value, so in that way it makes sense.  I&apos;ll change it.

Manual tests go in WebCore/manual-tests/?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231913</commentid>
    <comment_count>10</comment_count>
      <attachid>57371</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-05-28 13:41:42 -0700</bug_when>
    <thetext>Created attachment 57371
patch v2

This restores cAnimationLoopOnce, adds more comments, and fixes + makes available for everyone an existing Qt manual test on this.

I am concerned that, based on the comments on bug 36818, Qt may still be buggy with this patch.  If that&apos;s true, the fix may need to happen in the Qt image decoders themselves.  I will leave it to a Qt developer to address that (a few of whom are CCed on this bug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231915</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-28 13:46:12 -0700</bug_when>
    <thetext>Attachment 57371 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/platform/image-decoders/gif/GIFImageReader.cpp:693:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231929</commentid>
    <comment_count>12</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-05-28 14:16:01 -0700</bug_when>
    <thetext>Fixed in r60375.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238727</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-16 01:37:11 -0700</bug_when>
    <thetext>Revision r60375 cherry-picked into qtwebkit-2.0 with commit 6a7801db0fd3f747a0306f2847d5199823cc0ed7</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>57281</attachid>
            <date>2010-05-27 16:53:00 -0700</date>
            <delta_ts>2010-05-27 16:53:00 -0700</delta_ts>
            <desc>Image with a loop count of &quot;1&quot;</desc>
            <filename>netscape.gif</filename>
            <type>image/gif</type>
            <size>4094</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">R0lGODlh5gAhANUAAFOtU7KRbwE6AQBmAOeEhJS1k3tiS8wCArvSu////wBPAMXGxZZ4W2BLN9lC
QvbryfC+usbJ/La62zyAPO3axOTm4rG+/OyUANHX0TotJCVhJO3x7Pvq6oCPwOnq9l58YdjY/P/4
1W5zAH+dftze3fX49BVUE7S1qRJxEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEBAAAh+QQE
IQAAACwAAAAA5gAhAAAG/0CAcEgsGo/IpHLJbDqLmMVisyltKiQMooAseL9gYwGDIVWwZfPGk+U+
33D4BBWv2+94JWazOC3UWWZuAF9KI4UACFkVV2ZnjB5SCHmUdRMaAkIJm5ydnp+goaKjpKWmp51R
JwUnflmtZyeXKCa1Gre4GrUmKBojCBgnZX5RGB7BHyMLBSjNzs/Q0dLT1NXWGgoCEwCo3d7f4OGd
JyMYFWRS5q0BmAomGsl+EvOrIx+6vn9ZfcLnJ8kLMIxAMaCgwYMIEypcyLChQ0zauImbSLHiNwwS
9qVzRYJCgA8fCkQA4cEDiAgjSZaU0OEEhXPpKkQaMYKBsFYTHOrcybNnQf+I2ywKHUqU0waa+vhJ
MUNhgQSUKC1IhZqyI5Y+AaPQFKaqAAkAPsOK9QlUYtGzaL8tADnmDAkprihQkCC1LlUQIDA84ONK
FcdWOMcKHsywbNrDiEmRIPEvnpkofUiUqFB3KtXHS/354dfqzxwEmzaAHZEAQYXSEgsULMBJ9QBP
c1iXJghaNtiCEjEQnLAhgegBW3oj4F16gOHEyJMnKCFs3ypXFaRM2UDXAtUIFUowXnC189KS0RdM
AH1ukwnZoHz5Bp3gw+tOGlhfKc6ek4IBExIU+FDhBIoNGEzAmgag0bSJgfcIEJFyDCLGGDGQuQKg
MFbQBZUE2fHB3VubpQH/WVYoFIBALZsImEAFJpx2ggYl/vKBABgkMMJ9JvR2ggCb3LMJgQnIsokA
AxSwgQAKkPZBAtigICMwRPZHpIzHNSglUTABFhA/ZkiRXQVPRWCBZNEpAyAJG6jBRhlkYKBaiPVN
QBoCAhSoQIkD/NKbjPeBtoEJ+SVgwpwJjBcooEAiAGdBRSYAJHCGzgicozKaoGBQU1Zq0QIjaGeG
cwGFuUcJGFgHwmQLMDDCFYyccQUVMFUwggnAnUhaoG8qIGeLvhVw2owSvdgnkCWCltOPjN63mqIF
GYqAo8veF+mkZlkq7TcbTHDeW2WA58EjNJlD3ahvHVLFuJKVsO0jzBH5/94luCJgK57ByijArhr0
dtQHSgaar6DDIqvrfYmwBusAG4jILKSvQjvtwt7MKMAHAGb7yCNY7bFpHwGcRgWrj1BBQkkfGLvJ
CewVUOutgYKm5iYCwQaaoSfGGeh7C+JLBouqkTbewc6OQM6CDAdNSgUfTPCBSw/IJdcDTDfdtNJQ
Jw11mmkukHQHGiQbGmjJlPbujLhuUtsIFZis6wTE+YaJsOsGGmOJCqBXQJw8v6bMCEALrXcnzAVw
AgRyAb500yEUbvjhhj8NNQUQNE7BAyc0kEEGBqEtqS58/omCtQqgDSTamLQjgggXiCDpACiAdLrl
+E2gDZDJnG7cCO1ccv+f7fi9o/DevCfAAQMGGMDA8MQzEMDxyFspRdSEIx7CAyFQYMDkwcNqrEGk
Z93T6KNfoD2i1zekQPgDkK9QlL0LvUEAxbc/fPDwxy+/8MMj7zdgJ0zfAPzfI0R66dsr3QUGRpie
oC99DKsA+4zHPuS574Hza4AEJyjBDEguA/BrAAM68KfzXeCDpRMBQQ6Cgu59sHuLKiBPDojAaSGg
ffaLIQMf2L75BU9yGrwhAyIwgfEt5H8gDKIQTScA76VQhTphYQst9cLhUc+CwtNg/RroQOMVj342
lGD8GACCGSlghAlxBxCHKAIFGct8SCzM7pY4rRIUQHgBuODkMsAAHAr/wACSqyMGjxe8BdYwflq8
oQE8UIA/EXAh41OQIonkwzSKRYlsbJAbjWcAAUzughOMHB7xOMcA6E9/dZwg8DKYw01GBxtoRKJ+
DIUQ/SCElWRZYyQt9UYnarGCAtBiHadHxwzE8XgYxOEchUfKUe7PDO1wZCtph4mDyOsgCFjAEZMo
y1lKqQS0Y6AD2afBPHoTjwzwZQB8OT1jlhKPpTxmtQTAizSigDxKOkQh4Qml4SSLDBvYnMroMAlC
UEE1kLQmckrwASlu0obENEADSVnBYKLTkzdMZwMk86JUjoU1yWDRL5bVHtotCU55OsqSMFAvkyVg
ZQa6RTUFqhxs0u+B/36s3yixSMk/QhSd8JtcdkKmTEMRCUe/kMRPT6SoRUUTqCeaAqYURZqAJKAB
AWUpYrIZU2367XgnsN9M4ZhVP/JRfhckjQd62FMMACme0QzIWU/aHoMcVUY9wgVpBIBRlUZVqmkp
gAI0EJB1HM+qMbxfVz/yga0Gz7CSO1ICxmrRsXDjF/kJ6pEgKyPuGOut4vrCXJWEqeHcFa9nQUD5
TuAllMxDAn4NrGrZh9D38VIyHihBD68HxsEoY54hmdttTYCAoi1Ae16I0wdMoIzefuBQE/BDISWl
jQnARDrQja50p0vd6lr3utjNrnalsNwPdOC74A1vTSCI0PJmQAC+kEpAHzC3i/a6973wda+CJMXc
WsyXnfS1LzvxW9/8Mven2vjvIgdM4AIb+MAITrCCF8zgBjv4wRCOsIQnLOAJW/jCGM6whjfM4Q4H
AQAh+QQEBAAAACwQAAkACgAFAAAGHkCCA5IoGhMOAoUAIRA4ziQk6ahaOVChkIp9VqeOIAAh+QQE
BAAAACwKAAcAFgAJAAAGYEDCYXggJI7IpDIhdBAIkBInMU1AKEgOpCo0HgmOMMcxNEKIEOYwDCE7
yc/iwXE+qNFkTqnsnoMPHF1IeRxrYW6HgUWDgAliCRSCJWmCR2RYTXCIdm1pXwRVbU4cgWFGQQAh
+QQEIQAAACwFAAQAIAAOAAAGlkAIYUgkJI7IpHKJJByeUAdzSnVCn1KqNmldQiCcBPgoJFCSHGI4
0VU+CY4DOA41sq+HsLUISeAhdHRyEFFYd3hGWF+Ecgkcb3FZVml4B4mWR3tDWFhDdEJPS2+ZlQeC
f21Jo4dFm6atlAeimGJPfUccgKZJfalIq49voK4OX3GHs3aHVwQcp6FwWUkODspigg5hsa8JQQAh
+QQEBAAAACw/AAkAFgAHAAAGSMAEhQPhJCCUhFJJgSyXHIJDSjg6jSWis6TklKhRx1Q6FRPI5zFE
XDYTDmnx2gE5x9Fss54NqTebdWNTgE1UTk9dTn2ICWdGQQAh+QQEBAAAACw0AAYALAANAAAG5cBE
gsMRUiAl4RBSVDqdEMhzKiyVOITDwUHJNhNZKVVZ2o6dJYcjqz4QvEoO86yM0qsO7UEYzRLWCRAE
XW8OUm9/hwRphRSBam9pemtJWXpRBxB5ehybWhxboJOieQ4JeZZaXQdHbhCZeWCwpmFqoAQJW2G5
pmqPWm8Hcq6we69/pse2bqdrwrynmXy6wsevmsazspoOt827ZoK6eeLDBNeoeZ1u6qHMahR6oYh6
uF7X6PXRWlLLuL6a2HQyRaTJFSEckhRR18RWk4RDFCak0IrglzvRnPi6I4ofximCoIi5I2iQkyAA
IfkEBCEAAAAsKAADAEQAEwAABv/AhHBI5EAgRKERwkk6n8vmc0rlEBxYQpNwODghXSR1Cj6Ix08I
QZugdN8HR4LrTZbPaOI9/6QjHW+AcXNdTlF8SYeIRH5ug0JXhF5qYlFRagRKR0ZrmkwJm1ZsSmuH
fmVyQ1tdgmagYahvmbFds2EJrIFCjnCZdBy8BwQUQ3RwcndlcAdGy13Nrs7RrIK2da2sq66Cr2Zl
vrC1kke32d/fQuJlu85ydJCFybcctXv0wnviuMK/6cLdjLBZKSSpGzlX+wjsSZjvX8J3/qwl4CBl
oiA1BN/JQ1jvFsNyDmv1SwgQgoOKdChA1BjO1UYkL0l+/IdOD6srbwoW3KhQELRfns8aZkp4b9ms
UsrgIFkZr2Wvbk+FRpQUR5yfOa0cEMOa6oocClgo0Bo6dlfYBFmEpG1TyurZRWk8DlkIt00xuXXJ
4DWYF22cVhX7ftlLFy42hIKhlEq0OK/KNaOSBAEAIfkEBAQAAAAsAgAXAA8ABwAABkHAhDBBGiKK
RERitCFNAEIAYEJySgukzQiamCQKo1Ghq0wguN4zQDmZjM/CtJQNKGip3cIEgXC7iXMJG3VCBQAb
QQAh+QQEBAAAACwCABcALQAIAAAGqUBSYjgkITYJBJG0QTg3RiVxKC0SEcKEMTGpFiYAFGlUGE4S
KACABACfl5MRFDxUT0gkMGCKRiLuZ3lcRABKb0MoEwVMI3uDBSNkXABIZkRnZ5KJXW1qUxNdVI5n
CGqGACNEKEWZBauDdSOhn4pJo7aFXLV1haEkiYhPhRsolQlfAAUbskKKXX9fVUMFudNZamtYSWXT
tWy5G8nTlBUYC+fo6err6yPs70EAIfkEBAQAAAAsAgAXAEsACAAABv/AhBCBEG6Im8QRkUwQEaRl
80gSWklM53XJxBatQ3B1OMZaARO0M406sotpAJHtRn8TBTZpVBBOEigAACRoalcTIxskaUKCEySL
ggmLjQUIAAlyl0p/f0OYcgB9YIBJCI9/lJ6ZcGAoEwVRI5gJfwUjfLVOtJenapu6E8KWaX8bwgBN
un66ua8Tl3Fgwl/Af5dyuqdCt74ju8yr3mAA30IoQpR86MuZI9Ckw+Dagq21BQVtm9Cnp338WDBB
w+XvjBx4JF6dQyJnQxsreURteFcFFj+LRmZVMTORUDY89TgmKvARYslYjQRhqYJgFB5Yk+opEcUt
WQUMC3Lq3Mmzp88Jn0CD5hwhdGcQACH5BATIAAAALAMAFwBoAAgAAAb/wIQQgRBuigmkEUnaCJvC
aBJ5RDirzimiScweSdIEyZqMcrtjZVQNHrbHUcBEnkQVJ1IAyglA9sNydAhze4N6dwB9hoVzE0oF
hCQjBUJ4KIkkgXhmEyMbJHNCiRMkoIlimwAFCHSblQWUfwmyT6mrALNEuBt4rqy5qmEJe0mkeKAJ
rn+uwxMFTSO4yQkFI5PTv0l9mL4AvLmiatmshnjZvRPO5Qm8c1nTldPXKOmsc9KVjkPS5ol3xUKq
sQKljN4eWbQAUhthaIS2eL7mOIwzcVitBJNQxBM1Qp+UdJTOaVv2qkAhXHQ2wgLAkFXLKM5MHsHl
aNAgSjXH0ERg7WacWT76SNATYsdKnw3EAs4psKEjGGc1oRqJBgYOCUrssG64pYpVsKkAqhZpmklW
AX9wmm5NSI3WM1GYtiTBSs2ZGH/svp7dgGGB37+AAwseTLiw4cOIC49I7DcIADs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57284</attachid>
            <date>2010-05-27 18:01:36 -0700</date>
            <delta_ts>2010-05-27 18:06:16 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>gif_patch</filename>
            <type>text/plain</type>
            <size>9695</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDMzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDUtMjcgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTg1NworICAgICAgICBN
YWtlIEdJRnMgbG9vcCB0aGUgY29ycmVjdCBudW1iZXIgb2YgdGltZXMuICBQcmV2aW91c2x5LCBl
dmVyeW9uZSBidXQgUXQKKyAgICAgICAgbG9vcGVkIG9uZSB0aW1lIHRvbyBmZXcgZm9yIG5vbi1p
bmZpbml0ZWx5LWxvb3BpbmcgR0lGcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpyZXBldGl0aW9u
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24p
OiBGb3IgYSBsb29wIGNvdW50IG9mIG4sIHNob3cgYSB0b3RhbCBvZiBuICsgMSBhbmltYXRpb24g
Y3ljbGVzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6IAorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyUXQ6OnJlcGV0aXRpb25Db3VudCk6IFJlbW92ZSB0cmFuc2xhdGlvbiBjb2RlIG5v
dyB0aGF0IFdlYkNvcmUgbWF0Y2hlcyBRdCdzIGludGVybmFsIGhhbmRsaW5nIG9mIHRoZSBsb29w
IGNvdW50LgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURl
Y29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRl
ci5jcHA6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6cmVhZCk6IFRyYW5zbGF0ZSBsb29wIGNv
dW50IDAgdG8gImxvb3AgaW5maW5pdGVseSIgKGJ5IHJlc3RvcmluZyBvbmUgcGllY2Ugb2YgdGhl
IE1vemlsbGEgY29kZSB3ZSdkIHJlbW92ZWQpLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oOgorCiAyMDEwLTA1LTI3ICBOYXRoYW4gTGF3cmVu
Y2UgIDxubGF3cmVuY2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5
IEdhcmVuLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJ
KHJldmlzaW9uIDYwMzIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OCwxMCArMjQ4LDEwIEBAIGludCBCaXRtYXBJbWFn
ZTo6cmVwZXRpdGlvbkNvdW50KGJvb2wgaW0KICAgICBpZiAoKG1fcmVwZXRpdGlvbkNvdW50U3Rh
dHVzID09IFVua25vd24pIHx8ICgobV9yZXBldGl0aW9uQ291bnRTdGF0dXMgPT0gVW5jZXJ0YWlu
KSAmJiBpbWFnZUtub3duVG9CZUNvbXBsZXRlKSkgewogICAgICAgICAvLyBTbmFnIHRoZSByZXBl
dGl0aW9uIGNvdW50LiAgSWYgfGltYWdlS25vd25Ub0JlQ29tcGxldGV8IGlzIGZhbHNlLCB0aGUK
ICAgICAgICAgLy8gcmVwZXRpdGlvbiBjb3VudCBtYXkgbm90IGJlIGFjY3VyYXRlIHlldCBmb3Ig
R0lGczsgaW4gdGhpcyBjYXNlIHRoZQotICAgICAgICAvLyBkZWNvZGVyIHdpbGwgZGVmYXVsdCB0
byBjQW5pbWF0aW9uTG9vcE9uY2UsIGFuZCB3ZSdsbCB0cnkgYW5kIHJlYWQKLSAgICAgICAgLy8g
dGhlIGNvdW50IGFnYWluIG9uY2UgdGhlIHdob2xlIGltYWdlIGlzIGRlY29kZWQuCisgICAgICAg
IC8vIGRlY29kZXIgd2lsbCBkZWZhdWx0IHRvIDAgKCJsb29wIG9uY2UiKSwgYW5kIHdlJ2xsIHRy
eSBhbmQgcmVhZCB0aGUKKyAgICAgICAgLy8gY291bnQgYWdhaW4gb25jZSB0aGUgd2hvbGUgaW1h
Z2UgaXMgZGVjb2RlZC4KICAgICAgICAgbV9yZXBldGl0aW9uQ291bnQgPSBtX3NvdXJjZS5yZXBl
dGl0aW9uQ291bnQoKTsKLSAgICAgICAgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMgPSAoaW1hZ2VL
bm93blRvQmVDb21wbGV0ZSB8fCBtX3JlcGV0aXRpb25Db3VudCA9PSBjQW5pbWF0aW9uTm9uZSkg
PyBDZXJ0YWluIDogVW5jZXJ0YWluOworICAgICAgICBtX3JlcGV0aXRpb25Db3VudFN0YXR1cyA9
IChpbWFnZUtub3duVG9CZUNvbXBsZXRlIHx8IG1fcmVwZXRpdGlvbkNvdW50ID09IGNBbmltYXRp
b25Ob25lIHx8IG1fcmVwZXRpdGlvbkNvdW50ID09IGNBbmltYXRpb25Mb29wSW5maW5pdGUpID8g
Q2VydGFpbiA6IFVuY2VydGFpbjsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVwZXRpdGlvbkNvdW50
OwogfQpAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0QW5pbWF0aW9u
KGJvb2wgY2EKICAgICAvLyB5ZXQgYW5kIG91ciByZXBldGl0aW9uIGNvdW50IGlzIHBvdGVudGlh
bGx5IHVuc2V0LiAgVGhlIHJlcGV0aXRpb24gY291bnQKICAgICAvLyBpbiBhIEdJRiBjYW4gcG90
ZW50aWFsbHkgY29tZSBhZnRlciBhbGwgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEsIHNvCiAg
ICAgLy8gd2FpdCBvbiBpdC4KLSAgICBpZiAoIW1fYWxsRGF0YVJlY2VpdmVkICYmIHJlcGV0aXRp
b25Db3VudChmYWxzZSkgPT0gY0FuaW1hdGlvbkxvb3BPbmNlICYmIG1fY3VycmVudEZyYW1lID49
IChmcmFtZUNvdW50KCkgLSAxKSkKKyAgICBpZiAoIW1fYWxsRGF0YVJlY2VpdmVkICYmIHJlcGV0
aXRpb25Db3VudChmYWxzZSkgPT0gMCAmJiBtX2N1cnJlbnRGcmFtZSA+PSAoZnJhbWVDb3VudCgp
IC0gMSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERldGVybWluZSB0aW1lIGZvciBuZXh0
IGZyYW1lIHRvIHN0YXJ0LiAgQnkgaWdub3JpbmcgcGFpbnQgYW5kIHRpbWVyIGxhZwpAQCAtNDA0
LDcgKzQwNCw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmludGVybmFsQWR2YW5jZUFuaW1hdGkKICAg
ICAgICAgLy8gR2V0IHRoZSByZXBldGl0aW9uIGNvdW50IGFnYWluLiAgSWYgd2Ugd2VyZW4ndCBh
YmxlIHRvIGdldCBhCiAgICAgICAgIC8vIHJlcGV0aXRpb24gY291bnQgYmVmb3JlLCB3ZSBzaG91
bGQgaGF2ZSBkZWNvZGVkIHRoZSB3aG9sZSBpbWFnZSBieQogICAgICAgICAvLyBub3csIHNvIGl0
IHNob3VsZCBub3cgYmUgYXZhaWxhYmxlLgotICAgICAgICBpZiAocmVwZXRpdGlvbkNvdW50KHRy
dWUpICYmIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSA+PSBtX3JlcGV0aXRpb25Db3VudCkgeworICAg
ICAgICBpZiAocmVwZXRpdGlvbkNvdW50KHRydWUpICE9IGNBbmltYXRpb25Mb29wSW5maW5pdGUg
JiYgbV9yZXBldGl0aW9uc0NvbXBsZXRlID4gbV9yZXBldGl0aW9uQ291bnQpIHsKICAgICAgICAg
ICAgIG1fYW5pbWF0aW9uRmluaXNoZWQgPSB0cnVlOwogICAgICAgICAgICAgbV9kZXNpcmVkRnJh
bWVTdGFydFRpbWUgPSAwOwogICAgICAgICAgICAgLS1tX2N1cnJlbnRGcmFtZTsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHJldmlzaW9uIDYwMzIzKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC05MSw3ICs5MSw3IEBAIHR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2UK
ICNlbmRpZgogI2VuZGlmCiAKLWNvbnN0IGludCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAtMTsKK2Nv
bnN0IGludCBjQW5pbWF0aW9uTG9vcEluZmluaXRlID0gLTE7CiBjb25zdCBpbnQgY0FuaW1hdGlv
bk5vbmUgPSAtMjsKIAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJsaWMgTm9uY29weWFibGUgewpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
CShyZXZpc2lvbiA2MDMyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxOCArMTk4LDIxIEBAIEludFNpemUg
SW1hZ2VTb3VyY2U6OnNpemUoKSBjb25zdAogCiBpbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25D
b3VudCgpCiB7Ci0gICAgaW50IHJlc3VsdCA9IGNBbmltYXRpb25Mb29wT25jZTsgLy8gTm8gcHJv
cGVydHkgbWVhbnMgbG9vcCBvbmNlLgorICAgIGludCByZXN1bHQgPSAwOyAvLyBObyBwcm9wZXJ0
eSBtZWFucyBsb29wIG9uY2UuCiAgICAgaWYgKCFpbml0aWFsaXplZCgpKQogICAgICAgICByZXR1
cm4gcmVzdWx0OwogCi0gICAgLy8gQSBwcm9wZXJ0eSB3aXRoIHZhbHVlIDAgbWVhbnMgbG9vcCBm
b3JldmVyLgogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMoQWRvcHRD
RiwgQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzKG1fZGVjb2RlciwgaW1hZ2VTb3VyY2VPcHRp
b25zKCkpKTsKICAgICBpZiAocHJvcGVydGllcykgewogICAgICAgICBDRkRpY3Rpb25hcnlSZWYg
Z2lmUHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJv
cGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eUdJRkRpY3Rpb25hcnkpOwogICAgICAgICBp
ZiAoZ2lmUHJvcGVydGllcykgewogICAgICAgICAgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVt
YmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGdpZlByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVy
dHlHSUZMb29wQ291bnQpOwotICAgICAgICAgICAgaWYgKG51bSkKKyAgICAgICAgICAgIGlmIChu
dW0pIHsKKyAgICAgICAgICAgICAgICAvLyBBIHByb3BlcnR5IHdpdGggdmFsdWUgMCBtZWFucyBs
b29wIGZvcmV2ZXIuCiAgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51
bWJlckludFR5cGUsICZyZXN1bHQpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gMCkK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY0FuaW1hdGlvbkxvb3BJbmZpbml0ZTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBjQW5pbWF0
aW9uTm9uZTsgLy8gVHVybnMgb3V0IHdlJ3JlIG5vdCBhIEdJRiBhZnRlciBhbGwsIHNvIHdlIGRv
bid0IGFuaW1hdGUuCiAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZURlY29kZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9JbWFnZURlY29kZXJRdC5jcHAJKHJldmlzaW9uIDYwMzIzKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
NSwyNCArMTE1LDggQEAgc2l6ZV90IEltYWdlRGVjb2RlclF0OjpmcmFtZUNvdW50KCkKIAogaW50
IEltYWdlRGVjb2RlclF0OjpyZXBldGl0aW9uQ291bnQoKSBjb25zdAogewotICAgIGlmIChtX3Jl
YWRlciAmJiBtX3JlYWRlci0+c3VwcG9ydHNBbmltYXRpb24oKSkgeworICAgIGlmIChtX3JlYWRl
ciAmJiBtX3JlYWRlci0+c3VwcG9ydHNBbmltYXRpb24oKSkKICAgICAgICAgbV9yZXBldGl0aW9u
Q291bnQgPSBtX3JlYWRlci0+bG9vcENvdW50KCk7Ci0KLSAgICAgICAgLy8gUXQgYW5kIFdlYkNv
cmUgaGF2ZSBhIGluY29tcGF0aWJsZSB1bmRlcnN0YW5kaW5nIG9mCi0gICAgICAgIC8vIHRoZSBs
b29wIGNvdW50IGFuZCB3ZSBjYW4gbm90IGNvbXBsZXRlbHkgbWFwIGV2ZXJ5dGhpbmcuCi0gICAg
ICAgIC8vICBRdCAgIHwgICBXZWJDb3JlICAgICAgICAgIHwgZGVzY3JpcHRpb24KLSAgICAgICAg
Ly8gIC0xICAgfCAgICAgMCAgICAgICAgICAgICAgfCBpbmZpbml0ZSBhbmltYXRpb24KLSAgICAg
ICAgLy8gICAwICAgfCBjQW5pbWF0aW9uTG9vcE9uY2UgfCBzaG93IGV2ZXJ5IGZyYW1lIG9uY2UK
LSAgICAgICAgLy8gICBuICAgfCAgICAgbisxICAgICAgICAgICAgfCBRdCByZXR1cm5zIHRoZSAj
IG9mIGl0ZXJhdGlvbnMgLSAxCi0gICAgICAgIC8vICBuL2EgIHwgY0FuaW1hdGlvbk5vbmUgICAg
IHwgc2hvdyBvbmx5IHRoZSBmaXJzdCBmcmFtZQotICAgICAgICBpZiAobV9yZXBldGl0aW9uQ291
bnQgPT0gLTEpCi0gICAgICAgICAgICBtX3JlcGV0aXRpb25Db3VudCA9IDA7Ci0gICAgICAgIGVs
c2UgaWYgKG1fcmVwZXRpdGlvbkNvdW50ID09IDApCi0gICAgICAgICAgICBtX3JlcGV0aXRpb25D
b3VudCA9IGNBbmltYXRpb25Mb29wT25jZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKytt
X3JlcGV0aXRpb25Db3VudDsKLSAgICB9Ci0KICAgICByZXR1cm4gbV9yZXBldGl0aW9uQ291bnQ7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gNjAzMjMpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogR0lGSW1hZ2VEZWNv
ZGVyOjpHSUZJbWFnZURlY29kZXIoKQogICAgIDogbV9hbHJlYWR5U2Nhbm5lZFRoaXNEYXRhRm9y
RnJhbWVDb3VudCh0cnVlKQotICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbkxvb3BP
bmNlKQorICAgICwgbV9yZXBldGl0aW9uQ291bnQoMCkKICAgICAsIG1fcmVhZE9mZnNldCgwKQog
ewogfQpAQCAtOTcsMTAgKzk3LDkgQEAgaW50IEdJRkltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNv
dW50KCkgYwogICAgIGlmIChtX3JlYWRlcikgewogICAgICAgICAvLyBBZGRlZCB3cmlua2xlOiBJ
bWFnZVNvdXJjZTo6Y2xlYXIoKSBtYXkgZGVzdHJveSB0aGUgcmVhZGVyLCBtYWtpbmcKICAgICAg
ICAgLy8gdGhlIHJlc3VsdCBmcm9tIHRoZSByZWFkZXIgX2xlc3NfIGF1dGhvcml0YXRpdmUgb24g
ZnV0dXJlIGNhbGxzLiAgVG8KLSAgICAgICAgLy8gZGV0ZWN0IHRoaXMsIHRoZSByZWFkZXIgcmV0
dXJucyBjTG9vcENvdW50Tm90U2VlbiAoLTIpIGluc3RlYWQgb2YKLSAgICAgICAgLy8gY0FuaW1h
dGlvbkxvb3BPbmNlICgtMSkgd2hlbiBpdHMgY3VycmVudCBpbmNhcm5hdGlvbiBoYXNuJ3QgYWN0
dWFsbHkKLSAgICAgICAgLy8gc2VlbiBhIGxvb3AgY291bnQgeWV0OyBpbiB0aGlzIGNhc2Ugd2Ug
cmV0dXJuIG91ciBwcmV2aW91c2x5LWNhY2hlZAotICAgICAgICAvLyB2YWx1ZS4KKyAgICAgICAg
Ly8gZGV0ZWN0IHRoaXMsIHRoZSByZWFkZXIgcmV0dXJucyBjTG9vcENvdW50Tm90U2VlbiAoLTIp
IGluc3RlYWQgb2YgMAorICAgICAgICAvLyB3aGVuIGl0cyBjdXJyZW50IGluY2FybmF0aW9uIGhh
c24ndCBhY3R1YWxseSBzZWVuIGEgbG9vcCBjb3VudCB5ZXQ7CisgICAgICAgIC8vIGluIHRoaXMg
Y2FzZSB3ZSByZXR1cm4gb3VyIHByZXZpb3VzbHktY2FjaGVkIHZhbHVlLgogICAgICAgICBjb25z
dCBpbnQgcmVwZXRpdGlvbkNvdW50ID0gbV9yZWFkZXItPmxvb3BfY291bnQ7CiAgICAgICAgIGlm
IChyZXBldGl0aW9uQ291bnQgIT0gY0xvb3BDb3VudE5vdFNlZW4pCiAgICAgICAgICAgICBtX3Jl
cGV0aXRpb25Db3VudCA9IHJlcGV0aXRpb25Db3VudDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAJKHJldmlz
aW9uIDYwMzIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VSZWFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODgsNiArNjg4LDEwIEBAIGJvb2wgR0lG
SW1hZ2VSZWFkZXI6OnJlYWQoY29uc3QgdW5zaWduZWQKICAgICAgIGlmIChuZXRzY2FwZV9leHRl
bnNpb24gPT0gMSkgewogICAgICAgICBsb29wX2NvdW50ID0gR0VUSU5UMTYocSArIDEpOwogCisg
ICAgICAgIC8qIFplcm8gbG9vcCBjb3VudCBpcyBpbmZpbml0ZSBhbmltYXRpb24gbG9vcCByZXF1
ZXN0ICovCisgICAgICAgIGlmIChsb29wX2NvdW50ID09IDApCisgICAgICAgICAgbG9vcF9jb3Vu
dCA9IGNMb29wSW5maW5pdGU7CisKICAgICAgICAgR0VUTigxLCBnaWZfbmV0c2NhcGVfZXh0ZW5z
aW9uX2Jsb2NrKTsKICAgICAgIH0KICAgICAgIC8qIFdhaXQgZm9yIHNwZWNpZmllZCAjIG9mIGJ5
dGVzIHRvIGVudGVyIGJ1ZmZlciAqLwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCShyZXZpc2lvbiA2MDMyMykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDkgQEAKICNkZWZpbmUgTUFYX0NPTE9SUyAgICAgICAg
ICAgMjU2CiAjZGVmaW5lIE1BWF9IT0xEX1NJWkUgICAgICAgIDI1NgogCisvLyBUaGVzZSB2YWx1
ZXMgc2hvdWxkIG1hdGNoIGNBbmltYXRpb25Mb29wSW5maW5pdGUgYW5kIGNBbmltYXRpb25Ob25l
LAorLy8gcmVzcGVjdGl2ZWx5LCBpbiBJbWFnZVNvdXJjZS5oLgorY29uc3QgaW50IGNMb29wSW5m
aW5pdGUgPSAtMTsKIGNvbnN0IGludCBjTG9vcENvdW50Tm90U2VlbiA9IC0yOwogCiAvKiBnaWYy
LmggIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57285</attachid>
            <date>2010-05-27 18:06:16 -0700</date>
            <delta_ts>2010-05-28 13:41:42 -0700</delta_ts>
            <desc>patch v1.1</desc>
            <filename>gif_patch</filename>
            <type>text/plain</type>
            <size>9687</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDMzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDUtMjcgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTg1NworICAgICAgICBN
YWtlIEdJRnMgbG9vcCB0aGUgY29ycmVjdCBudW1iZXIgb2YgdGltZXMuICBQcmV2aW91c2x5LCBl
dmVyeW9uZSBidXQgUXQKKyAgICAgICAgbG9vcGVkIG9uZSB0aW1lIHRvbyBmZXcgZm9yIG5vbi1p
bmZpbml0ZWx5LWxvb3BpbmcgR0lGcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpyZXBldGl0aW9u
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24p
OiBGb3IgYSBsb29wIGNvdW50IG9mIG4sIHNob3cgYSB0b3RhbCBvZiBuICsgMSBhbmltYXRpb24g
Y3ljbGVzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6IAorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyUXQ6OnJlcGV0aXRpb25Db3VudCk6IFJlbW92ZSB0cmFuc2xhdGlvbiBjb2RlIG5v
dyB0aGF0IFdlYkNvcmUgbWF0Y2hlcyBRdCdzIGludGVybmFsIGhhbmRsaW5nIG9mIHRoZSBsb29w
IGNvdW50LgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURl
Y29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRl
ci5jcHA6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6cmVhZCk6IFRyYW5zbGF0ZSBsb29wIGNv
dW50IDAgdG8gImxvb3AgaW5maW5pdGVseSIgKGJ5IHJlc3RvcmluZyBvbmUgcGllY2Ugb2YgdGhl
IE1vemlsbGEgY29kZSB3ZSdkIHJlbW92ZWQpLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oOgorCiAyMDEwLTA1LTI3ICBOYXRoYW4gTGF3cmVu
Y2UgIDxubGF3cmVuY2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5
IEdhcmVuLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJ
KHJldmlzaW9uIDYwMzIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OCwxMCArMjQ4LDEwIEBAIGludCBCaXRtYXBJbWFn
ZTo6cmVwZXRpdGlvbkNvdW50KGJvb2wgaW0KICAgICBpZiAoKG1fcmVwZXRpdGlvbkNvdW50U3Rh
dHVzID09IFVua25vd24pIHx8ICgobV9yZXBldGl0aW9uQ291bnRTdGF0dXMgPT0gVW5jZXJ0YWlu
KSAmJiBpbWFnZUtub3duVG9CZUNvbXBsZXRlKSkgewogICAgICAgICAvLyBTbmFnIHRoZSByZXBl
dGl0aW9uIGNvdW50LiAgSWYgfGltYWdlS25vd25Ub0JlQ29tcGxldGV8IGlzIGZhbHNlLCB0aGUK
ICAgICAgICAgLy8gcmVwZXRpdGlvbiBjb3VudCBtYXkgbm90IGJlIGFjY3VyYXRlIHlldCBmb3Ig
R0lGczsgaW4gdGhpcyBjYXNlIHRoZQotICAgICAgICAvLyBkZWNvZGVyIHdpbGwgZGVmYXVsdCB0
byBjQW5pbWF0aW9uTG9vcE9uY2UsIGFuZCB3ZSdsbCB0cnkgYW5kIHJlYWQKLSAgICAgICAgLy8g
dGhlIGNvdW50IGFnYWluIG9uY2UgdGhlIHdob2xlIGltYWdlIGlzIGRlY29kZWQuCisgICAgICAg
IC8vIGRlY29kZXIgd2lsbCBkZWZhdWx0IHRvIDAgKCJsb29wIG9uY2UiKSwgYW5kIHdlJ2xsIHRy
eSBhbmQgcmVhZCB0aGUKKyAgICAgICAgLy8gY291bnQgYWdhaW4gb25jZSB0aGUgd2hvbGUgaW1h
Z2UgaXMgZGVjb2RlZC4KICAgICAgICAgbV9yZXBldGl0aW9uQ291bnQgPSBtX3NvdXJjZS5yZXBl
dGl0aW9uQ291bnQoKTsKLSAgICAgICAgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMgPSAoaW1hZ2VL
bm93blRvQmVDb21wbGV0ZSB8fCBtX3JlcGV0aXRpb25Db3VudCA9PSBjQW5pbWF0aW9uTm9uZSkg
PyBDZXJ0YWluIDogVW5jZXJ0YWluOworICAgICAgICBtX3JlcGV0aXRpb25Db3VudFN0YXR1cyA9
IChpbWFnZUtub3duVG9CZUNvbXBsZXRlIHx8IG1fcmVwZXRpdGlvbkNvdW50ID09IGNBbmltYXRp
b25Ob25lIHx8IG1fcmVwZXRpdGlvbkNvdW50ID09IGNBbmltYXRpb25Mb29wSW5maW5pdGUpID8g
Q2VydGFpbiA6IFVuY2VydGFpbjsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVwZXRpdGlvbkNvdW50
OwogfQpAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0QW5pbWF0aW9u
KGJvb2wgY2EKICAgICAvLyB5ZXQgYW5kIG91ciByZXBldGl0aW9uIGNvdW50IGlzIHBvdGVudGlh
bGx5IHVuc2V0LiAgVGhlIHJlcGV0aXRpb24gY291bnQKICAgICAvLyBpbiBhIEdJRiBjYW4gcG90
ZW50aWFsbHkgY29tZSBhZnRlciBhbGwgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEsIHNvCiAg
ICAgLy8gd2FpdCBvbiBpdC4KLSAgICBpZiAoIW1fYWxsRGF0YVJlY2VpdmVkICYmIHJlcGV0aXRp
b25Db3VudChmYWxzZSkgPT0gY0FuaW1hdGlvbkxvb3BPbmNlICYmIG1fY3VycmVudEZyYW1lID49
IChmcmFtZUNvdW50KCkgLSAxKSkKKyAgICBpZiAoIW1fYWxsRGF0YVJlY2VpdmVkICYmICFyZXBl
dGl0aW9uQ291bnQoZmFsc2UpICYmIG1fY3VycmVudEZyYW1lID49IChmcmFtZUNvdW50KCkgLSAx
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRGV0ZXJtaW5lIHRpbWUgZm9yIG5leHQgZnJh
bWUgdG8gc3RhcnQuICBCeSBpZ25vcmluZyBwYWludCBhbmQgdGltZXIgbGFnCkBAIC00MDQsNyAr
NDA0LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZhbmNlQW5pbWF0aQogICAgICAg
ICAvLyBHZXQgdGhlIHJlcGV0aXRpb24gY291bnQgYWdhaW4uICBJZiB3ZSB3ZXJlbid0IGFibGUg
dG8gZ2V0IGEKICAgICAgICAgLy8gcmVwZXRpdGlvbiBjb3VudCBiZWZvcmUsIHdlIHNob3VsZCBo
YXZlIGRlY29kZWQgdGhlIHdob2xlIGltYWdlIGJ5CiAgICAgICAgIC8vIG5vdywgc28gaXQgc2hv
dWxkIG5vdyBiZSBhdmFpbGFibGUuCi0gICAgICAgIGlmIChyZXBldGl0aW9uQ291bnQodHJ1ZSkg
JiYgbV9yZXBldGl0aW9uc0NvbXBsZXRlID49IG1fcmVwZXRpdGlvbkNvdW50KSB7CisgICAgICAg
IGlmIChyZXBldGl0aW9uQ291bnQodHJ1ZSkgIT0gY0FuaW1hdGlvbkxvb3BJbmZpbml0ZSAmJiBt
X3JlcGV0aXRpb25zQ29tcGxldGUgPiBtX3JlcGV0aXRpb25Db3VudCkgewogICAgICAgICAgICAg
bV9hbmltYXRpb25GaW5pc2hlZCA9IHRydWU7CiAgICAgICAgICAgICBtX2Rlc2lyZWRGcmFtZVN0
YXJ0VGltZSA9IDA7CiAgICAgICAgICAgICAtLW1fY3VycmVudEZyYW1lOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAkocmV2aXNpb24gNjAzMjMpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDcgKzkxLDcgQEAgdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZQogI2Vu
ZGlmCiAjZW5kaWYKIAotY29uc3QgaW50IGNBbmltYXRpb25Mb29wT25jZSA9IC0xOworY29uc3Qg
aW50IGNBbmltYXRpb25Mb29wSW5maW5pdGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9u
ZSA9IC0yOwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAJKHJl
dmlzaW9uIDYwMzIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDE4ICsxOTgsMjEgQEAgSW50U2l6ZSBJbWFn
ZVNvdXJjZTo6c2l6ZSgpIGNvbnN0CiAKIGludCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50
KCkKIHsKLSAgICBpbnQgcmVzdWx0ID0gY0FuaW1hdGlvbkxvb3BPbmNlOyAvLyBObyBwcm9wZXJ0
eSBtZWFucyBsb29wIG9uY2UuCisgICAgaW50IHJlc3VsdCA9IDA7IC8vIE5vIHByb3BlcnR5IG1l
YW5zIGxvb3Agb25jZS4KICAgICBpZiAoIWluaXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAKLSAgICAvLyBBIHByb3BlcnR5IHdpdGggdmFsdWUgMCBtZWFucyBsb29wIGZvcmV2
ZXIuCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyhBZG9wdENGLCBD
R0ltYWdlU291cmNlQ29weVByb3BlcnRpZXMobV9kZWNvZGVyLCBpbWFnZVNvdXJjZU9wdGlvbnMo
KSkpOwogICAgIGlmIChwcm9wZXJ0aWVzKSB7CiAgICAgICAgIENGRGljdGlvbmFyeVJlZiBnaWZQ
cm9wZXJ0aWVzID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0
aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5R0lGRGljdGlvbmFyeSk7CiAgICAgICAgIGlmIChn
aWZQcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJS
ZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZ2lmUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUdJ
Rkxvb3BDb3VudCk7Ci0gICAgICAgICAgICBpZiAobnVtKQorICAgICAgICAgICAgaWYgKG51bSkg
eworICAgICAgICAgICAgICAgIC8vIEEgcHJvcGVydHkgd2l0aCB2YWx1ZSAwIG1lYW5zIGxvb3Ag
Zm9yZXZlci4KICAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVy
SW50VHlwZSwgJnJlc3VsdCk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGNBbmltYXRpb25Mb29wSW5maW5pdGU7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gY0FuaW1hdGlvbk5vbmU7
IC8vIFR1cm5zIG91dCB3ZSdyZSBub3QgYSBHSUYgYWZ0ZXIgYWxsLCBzbyB3ZSBkb24ndCBhbmlt
YXRlLgogICAgIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNv
ZGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VEZWNvZGVyUXQuY3BwCShyZXZpc2lvbiA2MDMyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMjQgKzEx
NSw4IEBAIHNpemVfdCBJbWFnZURlY29kZXJRdDo6ZnJhbWVDb3VudCgpCiAKIGludCBJbWFnZURl
Y29kZXJRdDo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKIHsKLSAgICBpZiAobV9yZWFkZXIgJiYg
bV9yZWFkZXItPnN1cHBvcnRzQW5pbWF0aW9uKCkpIHsKKyAgICBpZiAobV9yZWFkZXIgJiYgbV9y
ZWFkZXItPnN1cHBvcnRzQW5pbWF0aW9uKCkpCiAgICAgICAgIG1fcmVwZXRpdGlvbkNvdW50ID0g
bV9yZWFkZXItPmxvb3BDb3VudCgpOwotCi0gICAgICAgIC8vIFF0IGFuZCBXZWJDb3JlIGhhdmUg
YSBpbmNvbXBhdGlibGUgdW5kZXJzdGFuZGluZyBvZgotICAgICAgICAvLyB0aGUgbG9vcCBjb3Vu
dCBhbmQgd2UgY2FuIG5vdCBjb21wbGV0ZWx5IG1hcCBldmVyeXRoaW5nLgotICAgICAgICAvLyAg
UXQgICB8ICAgV2ViQ29yZSAgICAgICAgICB8IGRlc2NyaXB0aW9uCi0gICAgICAgIC8vICAtMSAg
IHwgICAgIDAgICAgICAgICAgICAgIHwgaW5maW5pdGUgYW5pbWF0aW9uCi0gICAgICAgIC8vICAg
MCAgIHwgY0FuaW1hdGlvbkxvb3BPbmNlIHwgc2hvdyBldmVyeSBmcmFtZSBvbmNlCi0gICAgICAg
IC8vICAgbiAgIHwgICAgIG4rMSAgICAgICAgICAgIHwgUXQgcmV0dXJucyB0aGUgIyBvZiBpdGVy
YXRpb25zIC0gMQotICAgICAgICAvLyAgbi9hICB8IGNBbmltYXRpb25Ob25lICAgICB8IHNob3cg
b25seSB0aGUgZmlyc3QgZnJhbWUKLSAgICAgICAgaWYgKG1fcmVwZXRpdGlvbkNvdW50ID09IC0x
KQotICAgICAgICAgICAgbV9yZXBldGl0aW9uQ291bnQgPSAwOwotICAgICAgICBlbHNlIGlmICht
X3JlcGV0aXRpb25Db3VudCA9PSAwKQotICAgICAgICAgICAgbV9yZXBldGl0aW9uQ291bnQgPSBj
QW5pbWF0aW9uTG9vcE9uY2U7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICsrbV9yZXBldGl0
aW9uQ291bnQ7Ci0gICAgfQotCiAgICAgcmV0dXJuIG1fcmVwZXRpdGlvbkNvdW50OwogfQogCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDYwMzIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEdJRkltYWdlRGVjb2Rlcjo6R0lG
SW1hZ2VEZWNvZGVyKCkKICAgICA6IG1fYWxyZWFkeVNjYW5uZWRUaGlzRGF0YUZvckZyYW1lQ291
bnQodHJ1ZSkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Mb29wT25jZSkKKyAg
ICAsIG1fcmVwZXRpdGlvbkNvdW50KDApCiAgICAgLCBtX3JlYWRPZmZzZXQoMCkKIHsKIH0KQEAg
LTk3LDEwICs5Nyw5IEBAIGludCBHSUZJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCgpIGMK
ICAgICBpZiAobV9yZWFkZXIpIHsKICAgICAgICAgLy8gQWRkZWQgd3JpbmtsZTogSW1hZ2VTb3Vy
Y2U6OmNsZWFyKCkgbWF5IGRlc3Ryb3kgdGhlIHJlYWRlciwgbWFraW5nCiAgICAgICAgIC8vIHRo
ZSByZXN1bHQgZnJvbSB0aGUgcmVhZGVyIF9sZXNzXyBhdXRob3JpdGF0aXZlIG9uIGZ1dHVyZSBj
YWxscy4gIFRvCi0gICAgICAgIC8vIGRldGVjdCB0aGlzLCB0aGUgcmVhZGVyIHJldHVybnMgY0xv
b3BDb3VudE5vdFNlZW4gKC0yKSBpbnN0ZWFkIG9mCi0gICAgICAgIC8vIGNBbmltYXRpb25Mb29w
T25jZSAoLTEpIHdoZW4gaXRzIGN1cnJlbnQgaW5jYXJuYXRpb24gaGFzbid0IGFjdHVhbGx5Ci0g
ICAgICAgIC8vIHNlZW4gYSBsb29wIGNvdW50IHlldDsgaW4gdGhpcyBjYXNlIHdlIHJldHVybiBv
dXIgcHJldmlvdXNseS1jYWNoZWQKLSAgICAgICAgLy8gdmFsdWUuCisgICAgICAgIC8vIGRldGVj
dCB0aGlzLCB0aGUgcmVhZGVyIHJldHVybnMgY0xvb3BDb3VudE5vdFNlZW4gKC0yKSBpbnN0ZWFk
IG9mIDAKKyAgICAgICAgLy8gd2hlbiBpdHMgY3VycmVudCBpbmNhcm5hdGlvbiBoYXNuJ3QgYWN0
dWFsbHkgc2VlbiBhIGxvb3AgY291bnQgeWV0OworICAgICAgICAvLyBpbiB0aGlzIGNhc2Ugd2Ug
cmV0dXJuIG91ciBwcmV2aW91c2x5LWNhY2hlZCB2YWx1ZS4KICAgICAgICAgY29uc3QgaW50IHJl
cGV0aXRpb25Db3VudCA9IG1fcmVhZGVyLT5sb29wX2NvdW50OwogICAgICAgICBpZiAocmVwZXRp
dGlvbkNvdW50ICE9IGNMb29wQ291bnROb3RTZWVuKQogICAgICAgICAgICAgbV9yZXBldGl0aW9u
Q291bnQgPSByZXBldGl0aW9uQ291bnQ7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCShyZXZpc2lvbiA2MDMy
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg4LDYgKzY4OCwxMCBAQCBib29sIEdJRkltYWdlUmVh
ZGVyOjpyZWFkKGNvbnN0IHVuc2lnbmVkCiAgICAgICBpZiAobmV0c2NhcGVfZXh0ZW5zaW9uID09
IDEpIHsKICAgICAgICAgbG9vcF9jb3VudCA9IEdFVElOVDE2KHEgKyAxKTsKIAorICAgICAgICAv
KiBaZXJvIGxvb3AgY291bnQgaXMgaW5maW5pdGUgYW5pbWF0aW9uIGxvb3AgcmVxdWVzdCAqLwor
ICAgICAgICBpZiAobG9vcF9jb3VudCA9PSAwKQorICAgICAgICAgIGxvb3BfY291bnQgPSBjTG9v
cEluZmluaXRlOworCiAgICAgICAgIEdFVE4oMSwgZ2lmX25ldHNjYXBlX2V4dGVuc2lvbl9ibG9j
ayk7CiAgICAgICB9CiAgICAgICAvKiBXYWl0IGZvciBzcGVjaWZpZWQgIyBvZiBieXRlcyB0byBl
bnRlciBidWZmZXIgKi8KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlUmVhZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAkocmV2aXNpb24gNjAzMjMpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw5IEBACiAjZGVmaW5lIE1BWF9DT0xPUlMgICAgICAgICAgIDI1Ngog
I2RlZmluZSBNQVhfSE9MRF9TSVpFICAgICAgICAyNTYKIAorLy8gVGhlc2UgdmFsdWVzIHNob3Vs
ZCBtYXRjaCBjQW5pbWF0aW9uTG9vcEluZmluaXRlIGFuZCBjQW5pbWF0aW9uTm9uZSwKKy8vIHJl
c3BlY3RpdmVseSwgaW4gSW1hZ2VTb3VyY2UuaC4KK2NvbnN0IGludCBjTG9vcEluZmluaXRlID0g
LTE7CiBjb25zdCBpbnQgY0xvb3BDb3VudE5vdFNlZW4gPSAtMjsKIAogLyogZ2lmMi5oICAK
</data>
<flag name="review"
          id="41837"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57371</attachid>
            <date>2010-05-28 13:41:42 -0700</date>
            <delta_ts>2010-05-28 13:44:12 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>gif_patch</filename>
            <type>text/plain</type>
            <size>18770</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDM3NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDUtMjggIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTg1NworICAgICAgICBN
YWtlIEdJRnMgbG9vcCB0aGUgY29ycmVjdCBudW1iZXIgb2YgdGltZXMuICBQcmV2aW91c2x5LCBl
dmVyeW9uZSBsb29wZWQKKyAgICAgICAgb25lIHRpbWUgdG9vIGZldyBmb3Igbm9uLWluZmluaXRl
bHktbG9vcGluZyBHSUZzLgorCisgICAgICAgIE1vZGlmaWVkIGEgUXQgbWFudWFsIHRlc3QgdG8g
YmUgY29ycmVjdCBhbmQgbW92ZWQgaXQgdG8gdGhlIGdlbmVyYWwKKyAgICAgICAgbWFudWFsIHRl
c3QgZGlyZWN0b3J5LgorCisgICAgICAgICogbWFudWFsLXRlc3RzL2FuaW1hdGVkLWdpZi1sb29w
aW5nLmh0bWw6IENvcGllZCBmcm9tIFdlYkNvcmUvbWFudWFsLXRlc3RzL3F0L3F0LWdpZi10ZXN0
Lmh0bWwuCisgICAgICAgICogbWFudWFsLXRlc3RzL3F0L3F0LTEwbG9vcC1hbmltLmdpZjogUmVt
b3ZlZC4KKyAgICAgICAgKiBtYW51YWwtdGVzdHMvcXQvcXQtYW5pbS5naWY6IFJlbW92ZWQuCisg
ICAgICAgICogbWFudWFsLXRlc3RzL3F0L3F0LWdpZi10ZXN0Lmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogbWFudWFsLXRlc3RzL3F0L3F0LW5vYW5pbS5naWY6IFJlbW92ZWQuCisgICAgICAgICog
bWFudWFsLXRlc3RzL3Jlc291cmNlcy9hbmltYXRlZC0xMHguZ2lmOiBDb3BpZWQgZnJvbSBXZWJD
b3JlL21hbnVhbC10ZXN0cy9xdC9xdC0xMGxvb3AtYW5pbS5naWYgYW5kIG1vZGlmaWVkLgorICAg
ICAgICAqIG1hbnVhbC10ZXN0cy9yZXNvdXJjZXMvYW5pbWF0ZWQtaW5maW5pdGUuZ2lmOiBDb3Bp
ZWQgZnJvbSBXZWJDb3JlL21hbnVhbC10ZXN0cy9xdC9xdC1hbmltLmdpZi4KKyAgICAgICAgKiBt
YW51YWwtdGVzdHMvcmVzb3VyY2VzL25vbi1hbmltYXRlZC5naWY6IENvcGllZCBmcm9tIFdlYkNv
cmUvbWFudWFsLXRlc3RzL3F0L3F0LW5vYW5pbS5naWYuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJl
cGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aW50ZXJuYWxB
ZHZhbmNlQW5pbWF0aW9uKTogRm9yIGEgbG9vcCBjb3VudCBvZiBuLCBzaG93IGEgdG90YWwgb2Yg
biArIDEgYW5pbWF0aW9uIGN5Y2xlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyUXQ6OnJlcGV0aXRpb25Db3VudCk6IFJlbW92ZSB0cmFu
c2xhdGlvbiBjb2RlIG5vdyB0aGF0IFdlYkNvcmUgbWF0Y2hlcyBRdCdzIGludGVybmFsIGhhbmRs
aW5nIG9mIHRoZSBsb29wIGNvdW50LiAgUXQgaXRzZWxmIG1heSBzdGlsbCBoYXZlIGEgYnVnIGhl
cmUuCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3Vu
dCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVy
LmNwcDoKKyAgICAgICAgKEdJRkltYWdlUmVhZGVyOjpyZWFkKTogVHJhbnNsYXRlIGxvb3AgY291
bnQgMCB0byAibG9vcCBpbmZpbml0ZWx5IiAoYnkgcmVzdG9yaW5nIG9uZSBwaWVjZSBvZiB0aGUg
TW96aWxsYSBjb2RlIHdlJ2QgcmVtb3ZlZCkuCisKIDIwMTAtMDUtMjggIEJlbiBNdXJkb2NoICA8
YmVubUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRl
eDogV2ViQ29yZS9tYW51YWwtdGVzdHMvYW5pbWF0ZWQtZ2lmLWxvb3BpbmcuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL21hbnVhbC10ZXN0cy9hbmltYXRlZC1naWYtbG9vcGluZy5odG1sCShy
ZXZpc2lvbiA2MDMyMykJKGZyb20gV2ViQ29yZS9tYW51YWwtdGVzdHMvcXQvcXQtZ2lmLXRlc3Qu
aHRtbDo2MDMyMykKKysrIFdlYkNvcmUvbWFudWFsLXRlc3RzL2FuaW1hdGVkLWdpZi1sb29waW5n
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8Ym9keT4KKzxk
aXY+CisgICAgPGltZyBzcmM9InF0LWFuaW0uZ2lmIj4KKyAgICA8cD5UaGlzIHNob3VsZCBhbmlt
YXRlLjwvcD4KKzwvZGl2PgorPGRpdj4KKyAgICA8aW1nIHNyYz0icXQtbm9hbmltLmdpZiI+Cisg
ICAgPHA+VGhpcyBzaG91bGQgbm90IGFuaW1hdGUgYW5kIHlvdSBzaG91bGQgc2VlIGEgY3Jvc3Mu
PC9wPgorPC9kaXYKKzxkaXY+CisgICAgPGltZyBzcmM9InF0LTEwbG9vcC1hbmltLmdpZiI+Cisg
ICAgPHA+VGhpcyBhbmltYXRpb24gc2hvdWxkIGxvb3AgMTAgdGltZXMuPC9wPgorPC9kaXYKKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUvbWFudWFsLXRlc3RzL2FuaW1hdGVkLWdpZi1s
b29waW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvYW5pbWF0ZWQt
Z2lmLWxvb3BpbmcuaHRtbAkocmV2aXNpb24gNjAzMjMpCisrKyBXZWJDb3JlL21hbnVhbC10ZXN0
cy9hbmltYXRlZC1naWYtbG9vcGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE1
IEBACiA8aHRtbD4KIDxib2R5PgogPGRpdj4KLSAgICA8aW1nIHNyYz0icXQtYW5pbS5naWYiPgor
ICAgIDxpbWcgc3JjPSIuL3Jlc291cmNlcy9hbmltYXRlZC1pbmZpbml0ZS5naWYiPgogICAgIDxw
PlRoaXMgc2hvdWxkIGFuaW1hdGUuPC9wPgogPC9kaXY+CiA8ZGl2PgotICAgIDxpbWcgc3JjPSJx
dC1ub2FuaW0uZ2lmIj4KKyAgICA8aW1nIHNyYz0iLi9yZXNvdXJjZXMvbm9uLWFuaW1hdGVkLmdp
ZiI+CiAgICAgPHA+VGhpcyBzaG91bGQgbm90IGFuaW1hdGUgYW5kIHlvdSBzaG91bGQgc2VlIGEg
Y3Jvc3MuPC9wPgogPC9kaXYKIDxkaXY+Ci0gICAgPGltZyBzcmM9InF0LTEwbG9vcC1hbmltLmdp
ZiI+CisgICAgPGltZyBzcmM9Ii4vcmVzb3VyY2VzL2FuaW1hdGVkLTEweC5naWYiPgogICAgIDxw
PlRoaXMgYW5pbWF0aW9uIHNob3VsZCBsb29wIDEwIHRpbWVzLjwvcD4KIDwvZGl2CiA8L2JvZHk+
CkluZGV4OiBXZWJDb3JlL21hbnVhbC10ZXN0cy9xdC9xdC0xMGxvb3AtYW5pbS5naWYKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvcXQvcXQtMTBsb29wLWFuaW0uZ2lmCShyZXZp
c2lvbiA2MDMyMykKKysrIFdlYkNvcmUvbWFudWFsLXRlc3RzL3F0L3F0LTEwbG9vcC1hbmltLmdp
Zgkod29ya2luZyBjb3B5KQpAQCAtMSw2ICswLDAgQEAKLUdJRjg5YVAAUACRAgBbW1vOzs7/////
//8h/wtORVRTQ0FQRTIuMAMBCi0AACH5BAVkAAMALAAAAABQAFAAAAL+lI+py+0Po5y02ouz3rz7
D4biSJbm6QDqyibr9WLxMbvs/dWVriPzqzLEWgotIhDgCwotg0ekgKlc/G7I5tNJg15xW6W1SZRG
v1CszUyulrdsK2Oqji+jSe863b7Tz1l5rTeX56c3KPc2RnjFliS4yEVVGFaEWDhn1ufktrjUqAiI
AhoqOkpaanqKmqq6ytqqGfFJ8bc3EftgCwtHm1LZFWiXabR2Brx5S9VY1gI2ZOjjOAyBN1tZ7HlZ
97sr1ivc2xWseBjsfPydnPgjzq2NPb6sxZxOyYvFJZHomxcIbr/ND5AErkkDTRWs466VwoUMGzp8
CDFijoCrDvaBaBEcOoZjYSRhIrcuWq40kMKRISYvjkdpxablm9QOXcIGzaopq5kQh8uZ42LiYZdt
p7GRNg0hEylT0EqWRTd1BHR0GFKJVKtavYo1q9atXE/x3JrRITw4F/+hSmmJ3NJU1HxOrVjTbbmF
boSGFRgpbdq3BskCPEIR612Jg7saPow4seLFjBs7fpygAAAh+QQFZAADACwAAAAASQBGAAAC/pQv
EcANiqKctNqbnG4B+w8iy0Y+YaiUXDeNagmdRvq+rFjX9+fmNu7TeXrBF7Co2rWQvhtTSCE+S4fp
b2n9STmHbXKSFRojXpJSELaVb4p22XG2Os3lrqbzZki8R/iMDvO3gVezZ9bHJcjFp+jXqIGVaDco
4vbIwHZYpblnScZZQbSzNQotCi1COuQ5effpKJPh+rqK2aIq63Ymm2Cr2+v7CxwsPExcbHyMnKy8
zNzsPIz7LCwq/YtarXuN/aq9fdLtfWoazsNKzs17rr7O3u7e2faOIZVbG7/tVY9oIr12kf/sjb5L
kpTlGQiLyrI8/EJdSZYDYcIvxw6Wi1jMorhGIDF8aUTBRKJDKDIYUgKJMdsUkSYbqlw5skmwlmnG
eawZsiJOmclo7DzZjCZHfDhFGsxiNGhOeT5hJJUHNarUqVSrWm1XAAA7wsysYDAfPI5QWsJhR2nH
lDIYJ6QAyWnBDh+aOjpl8abPNwkMLA0igkDEUonUHCh4+tOAglcLBsIUivTJWGUXz05I8AnYVShp
PZw0WjVpp49gi1JFehfQiqGuauR0SfSEQL2vWtJrrBRwyLA4vl7e4tXyRBCPEyPJK5pzaM6oU6te
zbq169ewY8ueTbu27du4c+umfXr3a82ffatePLm0cBtTj1o9rvot1D5ymXNO3rewdCSSd17nDBzz
9hu9v4sfT768efCkzyuuA2az4vTSPaFDfGIpGBnGeeOjctF60MPa9N/hXW39vCNNdMKQBY8u+f2m
xjtv+EXCWP40BBRuMSHEVX5OrWEhgrRVVJI0A0ZGkjqSNJiaAieqc4wNaXh4ikNGxBYjhK0gcVBJ
WMQB2WoUQkjiFhkW8gYcNZoWjoxBvMidgkbSqOIrz+DoR3P4XCPleiukk5CArHniJY9FlMZIlwjB
c6BrZ36SSY9MLBHGmEGACVubeWQSzzZ57qELiK+12YIqxbxpJ4EXzJlmoQuW6Ruei2rpKHOQFqoJ
fuJBGik2k5LXphhkvNDpeUl4YaoW6qWq6qqsturqq7CeEAEAADsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBXZWJDb3JlL21hbnVhbC10ZXN0cy9xdC9xdC1hbmltLmdpZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL21hbnVhbC10ZXN0cy9xdC9xdC1hbmltLmdpZgkocmV2aXNpb24g
NjAzMjMpCisrKyBXZWJDb3JlL21hbnVhbC10ZXN0cy9xdC9xdC1hbmltLmdpZgkod29ya2luZyBj
b3B5KQpAQCAtMSwxMCArMCwwIEBACi1HSUY4OWFAAEAA54QAAAAAAQEBAgICAwMDBAQEBQUFBgYG
BwcHCAgICQkJCi0KLQotCwsLDAwMDQ0NDg4OEBAQERERExMTFBQUFhYWFxcXGBgYGRkZGhoaGxsb
HR0dHx8fICAgISEhIiIiIyMjJCQkJSUlJiYmJycnKioqLCwsLS0tLi4uMjIyMzMz6AMDNzc3PDw8
PT09QEBAQ0NDSEhISUlJTU1NUFBQUlJSVFRUV1dXWlpaXFxcXV1dXl5eYGBgYWFhY2NjZWVlZmZm
Z2dnaWlpbGxsbm5ucHBwcnJyc3NzdHR0eHh4enp6e3t7f39/gICAgYGBgoKChISEhoaGh4eHiYmJ
ioqKjY2Nj4+PlJSUl5eXmpqanJycnp6en5+foKCgpaWlqKioqampq6urra2tr6+vsbGxtLS0urq6
u7u7vb29vr6+v7+/wcHBw8PDxsbGyMjIy8vLzMzMz8/P0dHR1dXV19fX2dnZ2tra4ODg4uLi5OTk
5eXl5ubm6Ojo7Ozs7e3t7+/v8PDw8vLy8/Pz9PT0+fn5/v7+////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////If8LTkVUU0NBUEUyLjADAQAAACH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAAKLQD/
ACwAAAAAQABAAAAI/gAJCRxIsKDBgwgTEswjA4DDhxAdLlFIsaJFgYK8LIjIcYOWiyBDDtzDgyNH
GW9EqrQI54JJiBq09FlJM6GVlw8TPJlZsydBQTNwAgiAhKfPo3McCN2A56hTQl8KLQhl8vQoIBhC
C5Sp6pNOBqEo9HCt+UeIUAA4Ao1dOcgNCKEJzKxd6cfHWQotTeeGHGSmglABUfSKtPPirAE3gkH2
IXJAKNHEFwVdQXAWAWLIFAVlYXA2QBPMmcFoOAvggRzQCi3PdCBNIDBqhGpGkAYQ4vRrg3FUzKYQ
5jbuFrMZ7PRNEM8PqaSHGCV+JwjyszvuEB94R4cC0gJe0JkukE6N2QBc/szhjmcLB/An2PgWtAdN
kQngAWRQs37NEAjxAWwQ47uOFAz5AdBAFWq9hocPG+W3QBQFooYHEJTl18AReb3GhV/5IaDEcqDF
4UGACEzBIWbGCZCfCFkIcpsgbdAwQHwN8JCGiq/x0QUJBIDXgA1e5EEjanwcYQF4EhSBxh4/onaH
EeAZ8EMd3PUxRHwsbDfdHUNESJoIa3B3Rw8wEnilDvEt2OBtiyVIGgQUTieZlo6FQMWIoGnGGWkD
rEAGnZjRkYSaQhmwRIW+qcECeBBs6OYYo812gKLECQLGB+AdAAWfkPkXAXgKLUDqGx03JBCfctPR
8cJzpEXHHZhNascdIT7xJZDDeK+CVwEWhE43mwn0vTrQWQSUoJ6vv+JkQAzDEisQTg9IAaWyxXKE
QIrQEmSSAE4kWS1HAayQa7UBAQAh+QQBCi0A/wAsAAAAAEAAQAAACOEAUwgcSLCgwYH/EipcyLCh
w4cLD0qcmAKixYsQKWokiLGjx38VQW6c+LGkyYQjQ55c2XEjy5cXXcKc6VAmzZsiKeLEaXMnzJ4+
XwINenIo0ZIjj7JMKVCpSaZNnbaEGlWqRaoFrdbEmlVrRK5dveYEi1AsWYNmz3JMq7aq1rZu37YV
qxAu3bpn7zIEq3cv1r5+oQL+ynRw4KSG8SJOjHIx47E6HysmKbmxxsqWKVd2/JhzYs+GQYe+jNno
58iYIYdNrTm16ris0bomXHY2bdsNa+OOuLu379/AgwsfTrz4zYAAOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKSW5kZXg6IFdlYkNvcmUvbWFudWFsLXRlc3RzL3F0L3F0LWdpZi10ZXN0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvcXQvcXQtZ2lmLXRlc3QuaHRt
bAkocmV2aXNpb24gNjAzMjMpCisrKyBXZWJDb3JlL21hbnVhbC10ZXN0cy9xdC9xdC1naWYtdGVz
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICswLDAgQEAKLTxodG1sPgotPGJvZHk+Ci08
ZGl2PgotICAgIDxpbWcgc3JjPSJxdC1hbmltLmdpZiI+Ci0gICAgPHA+VGhpcyBzaG91bGQgYW5p
bWF0ZS48L3A+Ci08L2Rpdj4KLTxkaXY+Ci0gICAgPGltZyBzcmM9InF0LW5vYW5pbS5naWYiPgot
ICAgIDxwPlRoaXMgc2hvdWxkIG5vdCBhbmltYXRlIGFuZCB5b3Ugc2hvdWxkIHNlZSBhIGNyb3Nz
LjwvcD4KLTwvZGl2Ci08ZGl2PgotICAgIDxpbWcgc3JjPSJxdC0xMGxvb3AtYW5pbS5naWYiPgot
ICAgIDxwPlRoaXMgYW5pbWF0aW9uIHNob3VsZCBsb29wIDEwIHRpbWVzLjwvcD4KLTwvZGl2Ci08
L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBXZWJDb3JlL21hbnVhbC10ZXN0cy9xdC9xdC1ub2FuaW0u
Z2lmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWFudWFsLXRlc3RzL3F0L3F0LW5vYW5pbS5naWYJ
KHJldmlzaW9uIDYwMzIzKQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMvcXQvcXQtbm9hbmltLmdp
Zgkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi1HSUY4OWFAAEAA54QAAAAAAQEBAgIC
AwMDBAQEBQUFBgYGBwcHCAgICQkJCi0KLQotCwsLDAwMDQ0NDg4OEBAQERERExMTFBQUFhYWFxcX
GBgYGRkZGhoaGxsbHR0dHx8fICAgISEhIiIiIyMjJCQkJSUlJiYmJycnKioqLCwsLS0tLi4uMjIy
MzMz6AMDNzc3PDw8PT09QEBAQ0NDSEhISUlJTU1NUFBQUlJSVFRUV1dXWlpaXFxcXV1dXl5eYGBg
YWFhY2NjZWVlZmZmZ2dnaWlpbGxsbm5ucHBwcnJyc3NzdHR0eHh4enp6e3t7f39/gICAgYGBgoKC
hISEhoaGh4eHiYmJioqKjY2Nj4+PlJSUl5eXmpqanJycnp6en5+foKCgpaWlqKioqampq6urra2t
r6+vsbGxtLS0urq6u7u7vb29vr6+v7+/wcHBw8PDxsbGyMjIy8vLzMzMz8/P0dHR1dXV19fX2dnZ
2tra4ODg4uLi5OTk5eXl5ubm6Ojo7Ozs7e3t7+/v8PDw8vLy8/Pz9PT0+fn5/v7+////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////If4RQ3JlYXRlZCB3aXRoIEdJTVAAIfkEAAotAP8ALAAAAABA
AEAAAAj+AAkJHEiwoMGDCBMSzCMDgMOHEB0uUUixokWBgrwsiMhxg5aLIEMO3MODI0cZb0SqtAjn
gkmIGrT0WUkzoZWXDxM8mVmzJ0FBM3ACCICEp8+jcxwI3YDnqFNCXwotCGXy9CggGEILlKnqk04G
oSj0cK35R4hQADgCjV05yA0IoQnMrF3px8dZCi1N54YcZKaCUAFR9Iq08+KsATeCQfYhckAo0cQX
BV1BcBYBYsgUBWVhcDZAE8yZwWg4C+CBHNAKLc90IE0gMGqEakaQBhDi9GuDcVTMphDmNu4Wsxns
9E0Qzw+ppIcYJX4nCPKzO+4QH3hHhwLSAl7QmS6QTo3ZAFz+zOGOZwsH8CfY+Ba0B02RCeABZFCz
fs0QCPEBbBDju44UDPkB0EAVar2Ghw8b5bdAFAWihgcQlOXXwBF5vcaFX/khoMRyoMXhQYAITMEh
ZsYJkJ8IWQhymyBt0DBAfA3wkIaKr/HRBQkEgNeADV7kQSNqfBxhAXgSFIHGHj+idocR4BnwQx3c
9TFEfCxsN90dQ0RImghrcHdHDzASeKUO8S3Y4G2LJUgaBBROJ5mWjoVAxYigacYZaQOsQAadmNGR
hJpCGbBEhb6pwQJ4EGzo5hijzXaAosQJAsYH4B0ABZ+Q+RcBeAotQOobHTckEJ9y09HxwnOkRccd
mE1qxx0hPvElkMN4r4JXARaETjebCfS9OtBZBJSgnq+/4mRADMMSKxBOD0gBpbLFcoRAitASZJIA
TiRZLUcBrJBrtQEBACH5BAEKLQD/ACwAAAAAQABAAAAI4QBTCBxIsKDBgf8SKlzIsKHDhwsPSpyY
AqLFixApaiSIsaPHfxVBbpz4saTJhCNDnlzZcSPLlxddwpzpUCbNmyIp4sRpcyfMnj5fAg16cijR
kiOPskwpUKlJpk2dtoQaVapFqgWt1sSaVWtErl295gSLUCxZg2bPckyrtqrWtm7fthWrEC7dumfv
MgSrdy/Wvn6hAv7KdHDgpIbxIk6McjHjsTofKyYpubHGypYpV3b8mHNiz4ZBh76M2ejnyJghh02t
ObXquKzRuiZcdjZt2w1r4464u7fv38CDCx9OvPjNgAA7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogV2ViQ29yZS9tYW51YWwtdGVzdHMvcmVzb3VyY2VzL2FuaW1hdGVkLTEweC5n
aWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvcmVzb3VyY2VzL2FuaW1hdGVk
LTEweC5naWYJKHJldmlzaW9uIDYwMzIzKQkoZnJvbSBXZWJDb3JlL21hbnVhbC10ZXN0cy9xdC9x
dC0xMGxvb3AtYW5pbS5naWY6NjAzMjMpCisrKyBXZWJDb3JlL21hbnVhbC10ZXN0cy9yZXNvdXJj
ZXMvYW5pbWF0ZWQtMTB4LmdpZgkod29ya2luZyBjb3B5KQpJbmRleDogV2ViQ29yZS9tYW51YWwt
dGVzdHMvcmVzb3VyY2VzL2FuaW1hdGVkLTEweC5naWYKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9t
YW51YWwtdGVzdHMvcmVzb3VyY2VzL2FuaW1hdGVkLTEweC5naWYJKHJldmlzaW9uIDYwMzIzKQor
KysgV2ViQ29yZS9tYW51YWwtdGVzdHMvcmVzb3VyY2VzL2FuaW1hdGVkLTEweC5naWYJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw0IEBACi1HSUY4OWFQAFAAkQIAW1tbzs7O////////If8LTkVU
U0NBUEUyLjADAQotAAAh+QQFZAADACwAAAAAUABQAAAC/pSPqcvtD6OctNqLs968+w+G4kiW5ukA
6som6/Vi8TG77P3Vla4j86syxFoKK0dJRjg5YVAAUACRAgBbW1vOzs7///////8h/wtORVRTQ0FQ
RTIuMAMBCQAAIfkEBWQAAwAsAAAAAFAAUAAAAv6Uj6nL7Q+jnLTai7PevPsPhuJIlubpAOrKJuv1
YvExu+z91ZWuI/OrMsRaCiAiEOALCiCDR6SAqVz8bsjm00mDXnFbpbVJlEa/UKzNTK6Wt2wrY6qO
L6NJ7zrdvtPPWXmtN5fnpzco9zZGeMWWJLjIRVUYVoRYOGfW5+S2uNSoCIgCGio6SlpqeoqaqrrK
2qoZ8UnxtzcR+2ALC0ebUtkVaJdptHYGvHlL1VjWAjZk6OM4DIE3W1nseVn3uyvWK9zbFax4GOx8
/J2c+CPOrY09vqzFnE7Ji8UlkeibFwhuv80PkASuSQNNFazjrpXChQwbOnwIMWKOgKsO9oFoERw6
hmNhJGEity5arjSQwpEhJi+OR2nFpuWb1A5dwgbNqimrmRCHy5njYuJhl22nsZE2DSETKVPQSpZF
N3UEdHQYUolUq1q9ijWr1q1cT/HcmtEhPDgX/6FKaYnc0lTUfE6tWNNtuYVuhIYVGClt2rcGyQI8
QhHrXYmDuxo+jDix4sWMGzt+nKAAACH5BAVkAAMALAAAAABJAEYAAAL+lC8RwA2Kopy02pucbgH7
DyLLRj5hqJRcN41qCZ1G+r6sWNf35+Y27tN5esEXsKjatZC+G1NIIT5Lh+lvaf1JOYdtcpIVGiNe
klIQtpVvinbZcbY6zeWupvNmSLxH+IwO87eBV7Nn1sclyMWn6NeogZVoNyji9sjAdliluWdJxllB
tLM1CiAKSW5kZXg6IFdlYkNvcmUvbWFudWFsLXRlc3RzL3Jlc291cmNlcy9hbmltYXRlZC1pbmZp
bml0ZS5naWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvcmVzb3VyY2VzL2Fu
aW1hdGVkLWluZmluaXRlLmdpZgkocmV2aXNpb24gNjAzMjMpCShmcm9tIFdlYkNvcmUvbWFudWFs
LXRlc3RzL3F0L3F0LWFuaW0uZ2lmOjYwMzIzKQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMvcmVz
b3VyY2VzL2FuaW1hdGVkLWluZmluaXRlLmdpZgkod29ya2luZyBjb3B5KQpJbmRleDogV2ViQ29y
ZS9tYW51YWwtdGVzdHMvcmVzb3VyY2VzL25vbi1hbmltYXRlZC5naWYKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9tYW51YWwtdGVzdHMvcmVzb3VyY2VzL25vbi1hbmltYXRlZC5naWYJKHJldmlzaW9u
IDYwMzIzKQkoZnJvbSBXZWJDb3JlL21hbnVhbC10ZXN0cy9xdC9xdC1ub2FuaW0uZ2lmOjYwMzIz
KQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMvcmVzb3VyY2VzL25vbi1hbmltYXRlZC5naWYJKHdv
cmtpbmcgY29weSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCShyZXZpc2lvbiA2MDMyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgaW50IEJpdG1hcElt
YWdlOjpyZXBldGl0aW9uQ291bnQoYm9vbCBpbQogICAgICAgICAvLyBkZWNvZGVyIHdpbGwgZGVm
YXVsdCB0byBjQW5pbWF0aW9uTG9vcE9uY2UsIGFuZCB3ZSdsbCB0cnkgYW5kIHJlYWQKICAgICAg
ICAgLy8gdGhlIGNvdW50IGFnYWluIG9uY2UgdGhlIHdob2xlIGltYWdlIGlzIGRlY29kZWQuCiAg
ICAgICAgIG1fcmVwZXRpdGlvbkNvdW50ID0gbV9zb3VyY2UucmVwZXRpdGlvbkNvdW50KCk7Ci0g
ICAgICAgIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzID0gKGltYWdlS25vd25Ub0JlQ29tcGxldGUg
fHwgbV9yZXBldGl0aW9uQ291bnQgPT0gY0FuaW1hdGlvbk5vbmUpID8gQ2VydGFpbiA6IFVuY2Vy
dGFpbjsKKyAgICAgICAgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMgPSAoaW1hZ2VLbm93blRvQmVD
b21wbGV0ZSB8fCBtX3JlcGV0aXRpb25Db3VudCA9PSBjQW5pbWF0aW9uTm9uZSB8fCBtX3JlcGV0
aXRpb25Db3VudCA9PSBjQW5pbWF0aW9uTG9vcEluZmluaXRlKSA/IENlcnRhaW4gOiBVbmNlcnRh
aW47CiAgICAgfQogICAgIHJldHVybiBtX3JlcGV0aXRpb25Db3VudDsKIH0KQEAgLTQwNCw3ICs0
MDQsOSBAQCBib29sIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpCiAgICAgICAg
IC8vIEdldCB0aGUgcmVwZXRpdGlvbiBjb3VudCBhZ2Fpbi4gIElmIHdlIHdlcmVuJ3QgYWJsZSB0
byBnZXQgYQogICAgICAgICAvLyByZXBldGl0aW9uIGNvdW50IGJlZm9yZSwgd2Ugc2hvdWxkIGhh
dmUgZGVjb2RlZCB0aGUgd2hvbGUgaW1hZ2UgYnkKICAgICAgICAgLy8gbm93LCBzbyBpdCBzaG91
bGQgbm93IGJlIGF2YWlsYWJsZS4KLSAgICAgICAgaWYgKHJlcGV0aXRpb25Db3VudCh0cnVlKSAm
JiBtX3JlcGV0aXRpb25zQ29tcGxldGUgPj0gbV9yZXBldGl0aW9uQ291bnQpIHsKKyAgICAgICAg
Ly8gTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gc3BlY2lhbC1jYXNlIGNBbmltYXRpb25Mb29w
T25jZSBoZXJlCisgICAgICAgIC8vIGJlY2F1c2UgaXQgaXMgMCAoc2VlIGNvbW1lbnRzIG9uIGl0
cyBkZWNsYXJhdGlvbiBpbiBJbWFnZVNvdXJjZS5oKS4KKyAgICAgICAgaWYgKHJlcGV0aXRpb25D
b3VudCh0cnVlKSAhPSBjQW5pbWF0aW9uTG9vcEluZmluaXRlICYmIG1fcmVwZXRpdGlvbnNDb21w
bGV0ZSA+IG1fcmVwZXRpdGlvbkNvdW50KSB7CiAgICAgICAgICAgICBtX2FuaW1hdGlvbkZpbmlz
aGVkID0gdHJ1ZTsKICAgICAgICAgICAgIG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lID0gMDsKICAg
ICAgICAgICAgIC0tbV9jdXJyZW50RnJhbWU7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oCShyZXZpc2lvbiA2MDMyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsMjIgQEAgdHlw
ZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZQogI2VuZGlmCiAjZW5kaWYKIAot
Y29uc3QgaW50IGNBbmltYXRpb25Mb29wT25jZSA9IC0xOworLy8gUmlnaHQgbm93IEdJRnMgYXJl
IHRoZSBvbmx5IHJlY29nbml6ZWQgaW1hZ2UgZm9ybWF0IHRoYXQgc3VwcG9ydHMgYW5pbWF0aW9u
LgorLy8gVGhlIGFuaW1hdGlvbiBzeXN0ZW0gYW5kIHRoZSBjb25zdGFudHMgYmVsb3cgYXJlIGRl
c2lnbmVkIHdpdGggdGhpcyBpbiBtaW5kLgorLy8gR0lGcyBoYXZlIGFuIG9wdGlvbmFsIDE2LWJp
dCB1bnNpZ25lZCBsb29wIGNvdW50IHRoYXQgZGVzY3JpYmVzIGhvdyBhbgorLy8gYW5pbWF0ZWQg
R0lGIHNob3VsZCBiZSBjeWNsZWQuICBJZiB0aGUgbG9vcCBjb3VudCBpcyBhYnNlbnQsIHRoZSBh
bmltYXRpb24KKy8vIGN5Y2xlcyBvbmNlOyBpZiBpdCBpcyAwLCB0aGUgYW5pbWF0aW9uIGN5Y2xl
cyBpbmZpbml0ZWx5OyBvdGhlcndpc2UgdGhlCisvLyBhbmltYXRpb24gcGxheXMgbiArIDEgY3lj
bGVzICh3aGVyZSBuIGlzIHRoZSBzcGVjaWZpZWQgbG9vcCBjb3VudCkuICBJZiB0aGUKKy8vIEdJ
RiBkZWNvZGVyIGRlZmF1bHRzIHRvIGNBbmltYXRpb25Mb29wT25jZSBpbiB0aGUgYWJzZW5jZSBv
ZiBhbnkgbG9vcCBjb3VudAorLy8gYW5kIHRyYW5zbGF0ZXMgYW4gZXhwbGljaXQgIjAiIGxvb3Ag
Y291bnQgdG8gY0FuaW1hdGlvbkxvb3BJbmZpbml0ZSwgdGhlbiB3ZQorLy8gZ2V0IGEgY291cGxl
IG9mIG5pY2Ugc2lkZSBlZmZlY3RzOgorLy8gICAqIEJ5IG1ha2luZyBjQW5pbWF0aW9uTG9vcE9u
Y2UgYmUgMCwgd2UgYWxsb3cgdGhlIGFuaW1hdGlvbiBjeWNsaW5nIGNvZGUgaW4KKy8vICAgICBC
aXRtYXBJbWFnZS5jcHAgdG8gYXZvaWQgc3BlY2lhbC1jYXNpbmcgaXQsIGFuZCBzaW1wbHkgdHJl
YXQgYWxsCisvLyAgICAgbm9uLW5lZ2F0aXZlIGxvb3AgY291bnRzIGlkZW50aWNhbGx5LgorLy8g
ICAqIEJ5IG1ha2luZyB0aGUgb3RoZXIgdHdvIGNvbnN0YW50cyBuZWdhdGl2ZSwgd2UgYXZvaWQg
Y29uZmxpY3RzIHdpdGggYW55CisvLyAgICAgcmVhbCBsb29wIGNvdW50IHZhbHVlcy4KK2NvbnN0
IGludCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOworY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5m
aW5pdGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCiBjbGFzcyBJbWFn
ZVNvdXJjZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAJKHJldmlzaW9uIDYwMzIzKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjAyLDE0ICsyMDIsMTcgQEAgaW50IEltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQo
KQogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAg
IC8vIEEgcHJvcGVydHkgd2l0aCB2YWx1ZSAwIG1lYW5zIGxvb3AgZm9yZXZlci4KICAgICBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzKEFkb3B0Q0YsIENHSW1hZ2VTb3VyY2VD
b3B5UHJvcGVydGllcyhtX2RlY29kZXIsIGltYWdlU291cmNlT3B0aW9ucygpKSk7CiAgICAgaWYg
KHByb3BlcnRpZXMpIHsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGdpZlByb3BlcnRpZXMgPSAo
Q0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtD
R0ltYWdlUHJvcGVydHlHSUZEaWN0aW9uYXJ5KTsKICAgICAgICAgaWYgKGdpZlByb3BlcnRpZXMp
IHsKICAgICAgICAgICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25h
cnlHZXRWYWx1ZShnaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5R0lGTG9vcENvdW50KTsK
LSAgICAgICAgICAgIGlmIChudW0pCisgICAgICAgICAgICBpZiAobnVtKSB7CisgICAgICAgICAg
ICAgICAgLy8gQSBwcm9wZXJ0eSB3aXRoIHZhbHVlIDAgbWVhbnMgbG9vcCBmb3JldmVyLgogICAg
ICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmcmVz
dWx0KTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gY0FuaW1hdGlvbkxvb3BJbmZpbml0ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBjQW5pbWF0aW9uTm9uZTsgLy8gVHVybnMgb3V0
IHdlJ3JlIG5vdCBhIEdJRiBhZnRlciBhbGwsIHNvIHdlIGRvbid0IGFuaW1hdGUuCiAgICAgfQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5j
cHAJKHJldmlzaW9uIDYwMzIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZURlY29kZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSwyNCArMTE1LDggQEAgc2l6ZV90
IEltYWdlRGVjb2RlclF0OjpmcmFtZUNvdW50KCkKIAogaW50IEltYWdlRGVjb2RlclF0OjpyZXBl
dGl0aW9uQ291bnQoKSBjb25zdAogewotICAgIGlmIChtX3JlYWRlciAmJiBtX3JlYWRlci0+c3Vw
cG9ydHNBbmltYXRpb24oKSkgeworICAgIGlmIChtX3JlYWRlciAmJiBtX3JlYWRlci0+c3VwcG9y
dHNBbmltYXRpb24oKSkKICAgICAgICAgbV9yZXBldGl0aW9uQ291bnQgPSBtX3JlYWRlci0+bG9v
cENvdW50KCk7Ci0KLSAgICAgICAgLy8gUXQgYW5kIFdlYkNvcmUgaGF2ZSBhIGluY29tcGF0aWJs
ZSB1bmRlcnN0YW5kaW5nIG9mCi0gICAgICAgIC8vIHRoZSBsb29wIGNvdW50IGFuZCB3ZSBjYW4g
bm90IGNvbXBsZXRlbHkgbWFwIGV2ZXJ5dGhpbmcuCi0gICAgICAgIC8vICBRdCAgIHwgICBXZWJD
b3JlICAgICAgICAgIHwgZGVzY3JpcHRpb24KLSAgICAgICAgLy8gIC0xICAgfCAgICAgMCAgICAg
ICAgICAgICAgfCBpbmZpbml0ZSBhbmltYXRpb24KLSAgICAgICAgLy8gICAwICAgfCBjQW5pbWF0
aW9uTG9vcE9uY2UgfCBzaG93IGV2ZXJ5IGZyYW1lIG9uY2UKLSAgICAgICAgLy8gICBuICAgfCAg
ICAgbisxICAgICAgICAgICAgfCBRdCByZXR1cm5zIHRoZSAjIG9mIGl0ZXJhdGlvbnMgLSAxCi0g
ICAgICAgIC8vICBuL2EgIHwgY0FuaW1hdGlvbk5vbmUgICAgIHwgc2hvdyBvbmx5IHRoZSBmaXJz
dCBmcmFtZQotICAgICAgICBpZiAobV9yZXBldGl0aW9uQ291bnQgPT0gLTEpCi0gICAgICAgICAg
ICBtX3JlcGV0aXRpb25Db3VudCA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKG1fcmVwZXRpdGlvbkNv
dW50ID09IDApCi0gICAgICAgICAgICBtX3JlcGV0aXRpb25Db3VudCA9IGNBbmltYXRpb25Mb29w
T25jZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKyttX3JlcGV0aXRpb25Db3VudDsKLSAg
ICB9Ci0KICAgICByZXR1cm4gbV9yZXBldGl0aW9uQ291bnQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmNwcAkocmV2aXNpb24gNjAzMjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBA
IGludCBHSUZJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCgpIGMKICAgICAgICAgLy8gQWRk
ZWQgd3JpbmtsZTogSW1hZ2VTb3VyY2U6OmNsZWFyKCkgbWF5IGRlc3Ryb3kgdGhlIHJlYWRlciwg
bWFraW5nCiAgICAgICAgIC8vIHRoZSByZXN1bHQgZnJvbSB0aGUgcmVhZGVyIF9sZXNzXyBhdXRo
b3JpdGF0aXZlIG9uIGZ1dHVyZSBjYWxscy4gIFRvCiAgICAgICAgIC8vIGRldGVjdCB0aGlzLCB0
aGUgcmVhZGVyIHJldHVybnMgY0xvb3BDb3VudE5vdFNlZW4gKC0yKSBpbnN0ZWFkIG9mCi0gICAg
ICAgIC8vIGNBbmltYXRpb25Mb29wT25jZSAoLTEpIHdoZW4gaXRzIGN1cnJlbnQgaW5jYXJuYXRp
b24gaGFzbid0IGFjdHVhbGx5CisgICAgICAgIC8vIGNBbmltYXRpb25Mb29wT25jZSAoMCkgd2hl
biBpdHMgY3VycmVudCBpbmNhcm5hdGlvbiBoYXNuJ3QgYWN0dWFsbHkKICAgICAgICAgLy8gc2Vl
biBhIGxvb3AgY291bnQgeWV0OyBpbiB0aGlzIGNhc2Ugd2UgcmV0dXJuIG91ciBwcmV2aW91c2x5
LWNhY2hlZAogICAgICAgICAvLyB2YWx1ZS4KICAgICAgICAgY29uc3QgaW50IHJlcGV0aXRpb25D
b3VudCA9IG1fcmVhZGVyLT5sb29wX2NvdW50OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAkocmV2aXNpb24g
NjAzMjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAgbWFpbGluZyBhZGRyZXNz
LgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSAiR0lGSW1hZ2VEZWNvZGVyLmgiCisj
aW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKIAogdXNpbmcgV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVy
OwogCkBAIC02ODgsNiArNjg5LDEwIEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OnJlYWQoY29uc3Qg
dW5zaWduZWQKICAgICAgIGlmIChuZXRzY2FwZV9leHRlbnNpb24gPT0gMSkgewogICAgICAgICBs
b29wX2NvdW50ID0gR0VUSU5UMTYocSArIDEpOwogCisgICAgICAgIC8qIFplcm8gbG9vcCBjb3Vu
dCBpcyBpbmZpbml0ZSBhbmltYXRpb24gbG9vcCByZXF1ZXN0ICovCisgICAgICAgIGlmIChsb29w
X2NvdW50ID09IDApCisgICAgICAgICAgbG9vcF9jb3VudCA9IFdlYkNvcmU6OmNBbmltYXRpb25M
b29wSW5maW5pdGU7CisKICAgICAgICAgR0VUTigxLCBnaWZfbmV0c2NhcGVfZXh0ZW5zaW9uX2Js
b2NrKTsKICAgICAgIH0KICAgICAgIC8qIFdhaXQgZm9yIHNwZWNpZmllZCAjIG9mIGJ5dGVzIHRv
IGVudGVyIGJ1ZmZlciAqLwo=
</data>
<flag name="review"
          id="41936"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>