From de1149163da8d836f0cdb47cb294c41de590fbdd Mon Sep 17 00:00:00 2001 From: Robert O'Callahan Date: Fri, 8 Jul 2011 22:42:21 +1200 Subject: [PATCH 01/22] Bug 649924. Use image surfaces to implement canvases beyond the texture size limit. r=bas --- .../nsICanvasRenderingContextInternal.h | 5 ++++ .../canvas/src/nsCanvasRenderingContext2D.cpp | 30 +++++++++++++------ .../html/content/public/nsHTMLCanvasElement.h | 5 ++++ .../html/content/src/nsHTMLCanvasElement.cpp | 30 +++++++++++++++---- gfx/layers/Layers.h | 1 + gfx/layers/d3d10/LayerManagerD3D10.h | 9 ++++++ gfx/layers/d3d9/DeviceManagerD3D9.cpp | 2 ++ gfx/layers/d3d9/DeviceManagerD3D9.h | 4 +++ gfx/layers/d3d9/LayerManagerD3D9.h | 8 +++++ gfx/layers/opengl/LayerManagerOGL.h | 8 +++++ layout/generic/nsHTMLCanvasFrame.cpp | 3 ++ layout/reftests/canvas/reftest.list | 1 + layout/reftests/canvas/size-1-ref.html | 9 ++++++ layout/reftests/canvas/size-1.html | 12 ++++++++ 14 files changed, 113 insertions(+), 14 deletions(-) create mode 100644 layout/reftests/canvas/size-1-ref.html create mode 100644 layout/reftests/canvas/size-1.html diff --git a/content/canvas/public/nsICanvasRenderingContextInternal.h b/content/canvas/public/nsICanvasRenderingContextInternal.h index dd9823ded8a..8e281153b35 100644 --- a/content/canvas/public/nsICanvasRenderingContextInternal.h +++ b/content/canvas/public/nsICanvasRenderingContextInternal.h @@ -122,6 +122,11 @@ public: CanvasLayer *aOldLayer, LayerManager *aManager) = 0; + // Return true if the canvas should be forced to be "inactive" to ensure + // it can be drawn to the screen even if it's too large to be blitted by + // an accelerated CanvasLayer. + virtual PRBool ShouldForceInactiveLayer(LayerManager *aManager) { return PR_FALSE; } + virtual void MarkContextClean() = 0; // Redraw the dirty rectangle of this canvas. diff --git a/content/canvas/src/nsCanvasRenderingContext2D.cpp b/content/canvas/src/nsCanvasRenderingContext2D.cpp index c8e8ed17e5b..cd506303efa 100644 --- a/content/canvas/src/nsCanvasRenderingContext2D.cpp +++ b/content/canvas/src/nsCanvasRenderingContext2D.cpp @@ -349,10 +349,11 @@ public: NS_IMETHOD SetIsOpaque(PRBool isOpaque); NS_IMETHOD Reset(); - already_AddRefed GetCanvasLayer(nsDisplayListBuilder* aBuilder, - CanvasLayer *aOldLayer, - LayerManager *aManager); - void MarkContextClean(); + virtual already_AddRefed GetCanvasLayer(nsDisplayListBuilder* aBuilder, + CanvasLayer *aOldLayer, + LayerManager *aManager); + virtual PRBool ShouldForceInactiveLayer(LayerManager *aManager); + virtual void MarkContextClean(); NS_IMETHOD SetIsIPC(PRBool isIPC); // this rect is in canvas device space NS_IMETHOD Redraw(const gfxRect &r); @@ -1071,9 +1072,7 @@ nsCanvasRenderingContext2D::SetDimensions(PRInt32 width, PRInt32 height) gfxASurface::gfxImageFormat format = GetImageFormat(); - if (PR_GetEnv("MOZ_CANVAS_IMAGE_SURFACE")) { - surface = new gfxImageSurface(gfxIntSize(width, height), format); - } else { + if (!PR_GetEnv("MOZ_CANVAS_IMAGE_SURFACE")) { nsCOMPtr content = do_QueryInterface(static_cast(mCanvasElement)); nsIDocument* ownerDoc = nsnull; @@ -1093,8 +1092,15 @@ nsCanvasRenderingContext2D::SetDimensions(PRInt32 width, PRInt32 height) } } - if (surface && surface->CairoStatus() != 0) - surface = NULL; + if (!surface || surface->CairoStatus()) { + // If we couldn't create a surface of the type we want, fall back + // to an image surface. This lets us handle surface sizes that + // the underlying cairo backend might not handle. + surface = new gfxImageSurface(gfxIntSize(width, height), format); + if (!surface || surface->CairoStatus()) { + surface = nsnull; + } + } } if (surface) { if (gCanvasMemoryReporter == nsnull) { @@ -4017,6 +4023,12 @@ nsCanvasRenderingContext2D::GetCanvasLayer(nsDisplayListBuilder* aBuilder, return canvasLayer.forget(); } +PRBool +nsCanvasRenderingContext2D::ShouldForceInactiveLayer(LayerManager *aManager) +{ + return !aManager->CanUseCanvasLayerForSize(gfxIntSize(mWidth, mHeight)); +} + void nsCanvasRenderingContext2D::MarkContextClean() { diff --git a/content/html/content/public/nsHTMLCanvasElement.h b/content/html/content/public/nsHTMLCanvasElement.h index 84eb1ee90c9..0d166873815 100644 --- a/content/html/content/public/nsHTMLCanvasElement.h +++ b/content/html/content/public/nsHTMLCanvasElement.h @@ -170,6 +170,10 @@ public: already_AddRefed GetCanvasLayer(nsDisplayListBuilder* aBuilder, CanvasLayer *aOldLayer, LayerManager *aManager); + // Should return true if the canvas layer should always be marked inactive. + // We should return true here if we can't do accelerated compositing with + // a non-BasicCanvasLayer. + PRBool ShouldForceInactiveLayer(LayerManager *aManager); // Call this whenever we need future changes to the canvas // to trigger fresh invalidation requests. This needs to be called @@ -193,6 +197,7 @@ protected: const nsAString& aType, nsIDOMFile** aResult); nsresult GetContextHelper(const nsAString& aContextId, + PRBool aForceThebes, nsICanvasRenderingContextInternal **aContext); nsString mCurrentContextId; diff --git a/content/html/content/src/nsHTMLCanvasElement.cpp b/content/html/content/src/nsHTMLCanvasElement.cpp index 587dffaad31..109a3c5a1f9 100644 --- a/content/html/content/src/nsHTMLCanvasElement.cpp +++ b/content/html/content/src/nsHTMLCanvasElement.cpp @@ -380,11 +380,12 @@ nsHTMLCanvasElement::MozGetAsFileImpl(const nsAString& aName, nsresult nsHTMLCanvasElement::GetContextHelper(const nsAString& aContextId, + PRBool aForceThebes, nsICanvasRenderingContextInternal **aContext) { NS_ENSURE_ARG(aContext); - NS_LossyConvertUTF16toASCII ctxId(aContextId); + NS_ConvertUTF16toUTF8 ctxId(aContextId); // check that ctxId is clamped to A-Za-z0-9_- for (PRUint32 i = 0; i < ctxId.Length(); i++) { @@ -402,6 +403,10 @@ nsHTMLCanvasElement::GetContextHelper(const nsAString& aContextId, nsCString ctxString("@mozilla.org/content/canvas-rendering-context;1?id="); ctxString.Append(ctxId); + if (aForceThebes && ctxId.EqualsASCII("2d")) { + ctxString.AssignASCII("@mozilla.org/content/2dthebes-canvas-rendering-context;1"); + } + nsresult rv; nsCOMPtr ctx = do_CreateInstance(ctxString.get(), &rv); @@ -433,8 +438,10 @@ nsHTMLCanvasElement::GetContext(const nsAString& aContextId, { nsresult rv; - if (mCurrentContextId.IsEmpty()) { - rv = GetContextHelper(aContextId, getter_AddRefs(mCurrentContext)); + PRBool forceThebes = PR_FALSE; + + while (mCurrentContextId.IsEmpty()) { + rv = GetContextHelper(aContextId, forceThebes, getter_AddRefs(mCurrentContext)); NS_ENSURE_SUCCESS(rv, rv); if (!mCurrentContext) { return NS_OK; @@ -506,11 +513,18 @@ nsHTMLCanvasElement::GetContext(const nsAString& aContextId, rv = UpdateContext(contextProps); if (NS_FAILED(rv)) { mCurrentContext = nsnull; + if (!forceThebes) { + // Try again with a Thebes context + forceThebes = PR_TRUE; + continue; + } return rv; } mCurrentContextId.Assign(aContextId); - } else if (!mCurrentContextId.Equals(aContextId)) { + break; + } + if (!mCurrentContextId.Equals(aContextId)) { //XXX eventually allow for more than one active context on a given canvas return NS_OK; } @@ -535,7 +549,7 @@ nsHTMLCanvasElement::MozGetIPCContext(const nsAString& aContextId, nsresult rv; if (mCurrentContextId.IsEmpty()) { - rv = GetContextHelper(aContextId, getter_AddRefs(mCurrentContext)); + rv = GetContextHelper(aContextId, PR_FALSE, getter_AddRefs(mCurrentContext)); NS_ENSURE_SUCCESS(rv, rv); if (!mCurrentContext) { return NS_OK; @@ -700,6 +714,12 @@ nsHTMLCanvasElement::GetCanvasLayer(nsDisplayListBuilder* aBuilder, return mCurrentContext->GetCanvasLayer(aBuilder, aOldLayer, aManager); } +PRBool +nsHTMLCanvasElement::ShouldForceInactiveLayer(LayerManager *aManager) +{ + return !mCurrentContext || mCurrentContext->ShouldForceInactiveLayer(aManager); +} + void nsHTMLCanvasElement::MarkContextClean() { diff --git a/gfx/layers/Layers.h b/gfx/layers/Layers.h index 9c461b751c6..4bdf099480f 100644 --- a/gfx/layers/Layers.h +++ b/gfx/layers/Layers.h @@ -434,6 +434,7 @@ public: CreateDrawTarget(const mozilla::gfx::IntSize &aSize, mozilla::gfx::SurfaceFormat aFormat); + virtual bool CanUseCanvasLayerForSize(const gfxIntSize &aSize) { return PR_TRUE; } /** * Return the name of the layer manager's backend. diff --git a/gfx/layers/d3d10/LayerManagerD3D10.h b/gfx/layers/d3d10/LayerManagerD3D10.h index 26f421d351b..473604036e8 100644 --- a/gfx/layers/d3d10/LayerManagerD3D10.h +++ b/gfx/layers/d3d10/LayerManagerD3D10.h @@ -115,6 +115,15 @@ public: const CallbackInfo &GetCallbackInfo() { return mCurrentCallbackInfo; } + // D3D10 guarantees textures can be at least this size + enum { + MAX_TEXTURE_SIZE = 8192 + }; + virtual bool CanUseCanvasLayerForSize(const gfxIntSize &aSize) + { + return aSize <= gfxIntSize(MAX_TEXTURE_SIZE, MAX_TEXTURE_SIZE); + } + virtual already_AddRefed CreateThebesLayer(); virtual already_AddRefed CreateContainerLayer(); diff --git a/gfx/layers/d3d9/DeviceManagerD3D9.cpp b/gfx/layers/d3d9/DeviceManagerD3D9.cpp index 6821a6bbdb3..7d804c46c3e 100644 --- a/gfx/layers/d3d9/DeviceManagerD3D9.cpp +++ b/gfx/layers/d3d9/DeviceManagerD3D9.cpp @@ -181,6 +181,7 @@ SwapChainD3D9::Reset() DeviceManagerD3D9::DeviceManagerD3D9() : mDeviceResetCount(0) + , mMaxTextureSize(0) , mHasDynamicTextures(false) , mDeviceWasRemoved(false) { @@ -646,6 +647,7 @@ DeviceManagerD3D9::VerifyCaps() caps.MaxTextureWidth < 4096) { return false; } + mMaxTextureSize = NS_MIN(caps.MaxTextureHeight, caps.MaxTextureWidth); if ((caps.PixelShaderVersion & 0xffff) < 0x200 || (caps.VertexShaderVersion & 0xffff) < 0x200) { diff --git a/gfx/layers/d3d9/DeviceManagerD3D9.h b/gfx/layers/d3d9/DeviceManagerD3D9.h index 90855c41483..22f1eee829e 100644 --- a/gfx/layers/d3d9/DeviceManagerD3D9.h +++ b/gfx/layers/d3d9/DeviceManagerD3D9.h @@ -168,6 +168,8 @@ public: */ nsTArray mLayersWithResources; + PRInt32 GetMaxTextureSize() { return mMaxTextureSize; } + private: friend class SwapChainD3D9; @@ -238,6 +240,8 @@ private: PRUint32 mDeviceResetCount; + PRUint32 mMaxTextureSize; + /* If this device supports dynamic textures */ bool mHasDynamicTextures; diff --git a/gfx/layers/d3d9/LayerManagerD3D9.h b/gfx/layers/d3d9/LayerManagerD3D9.h index 38dfb7eb11c..a4b8c4b4c4e 100644 --- a/gfx/layers/d3d9/LayerManagerD3D9.h +++ b/gfx/layers/d3d9/LayerManagerD3D9.h @@ -141,6 +141,14 @@ public: void SetRoot(Layer* aLayer); + virtual bool CanUseCanvasLayerForSize(const gfxIntSize &aSize) + { + if (!mDeviceManager) + return false; + PRInt32 maxSize = mDeviceManager->GetMaxTextureSize(); + return aSize <= gfxIntSize(maxSize, maxSize); + } + virtual already_AddRefed CreateThebesLayer(); virtual already_AddRefed CreateContainerLayer(); diff --git a/gfx/layers/opengl/LayerManagerOGL.h b/gfx/layers/opengl/LayerManagerOGL.h index d9322374e9c..9afe1f5f1c2 100644 --- a/gfx/layers/opengl/LayerManagerOGL.h +++ b/gfx/layers/opengl/LayerManagerOGL.h @@ -138,6 +138,14 @@ public: virtual void SetRoot(Layer* aLayer) { mRoot = aLayer; } + virtual bool CanUseCanvasLayerForSize(const gfxIntSize &aSize) + { + if (!mGLContext) + return false; + PRInt32 maxSize = mGLContext->GetMaxTextureSize(); + return aSize <= gfxIntSize(maxSize, maxSize); + } + virtual already_AddRefed CreateThebesLayer(); virtual already_AddRefed CreateContainerLayer(); diff --git a/layout/generic/nsHTMLCanvasFrame.cpp b/layout/generic/nsHTMLCanvasFrame.cpp index 0c53129ee03..06ac6b1e4b0 100644 --- a/layout/generic/nsHTMLCanvasFrame.cpp +++ b/layout/generic/nsHTMLCanvasFrame.cpp @@ -106,6 +106,9 @@ public: virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder, LayerManager* aManager) { + if (CanvasElementFromContent(mFrame->GetContent())->ShouldForceInactiveLayer(aManager)) + return LAYER_INACTIVE; + // If compositing is cheap, just do that if (aManager->IsCompositingCheap()) return mozilla::LAYER_ACTIVE; diff --git a/layout/reftests/canvas/reftest.list b/layout/reftests/canvas/reftest.list index 4968d8d0776..51c1739cd90 100644 --- a/layout/reftests/canvas/reftest.list +++ b/layout/reftests/canvas/reftest.list @@ -1,4 +1,5 @@ == default-size.html default-size-ref.html +== size-1.html size-1-ref.html == image-rendering-test.html image-rendering-ref.html == image-shadow.html image-shadow-ref.html diff --git a/layout/reftests/canvas/size-1-ref.html b/layout/reftests/canvas/size-1-ref.html new file mode 100644 index 00000000000..1212b889275 --- /dev/null +++ b/layout/reftests/canvas/size-1-ref.html @@ -0,0 +1,9 @@ + + + +
+ + + diff --git a/layout/reftests/canvas/size-1.html b/layout/reftests/canvas/size-1.html new file mode 100644 index 00000000000..afca44ea633 --- /dev/null +++ b/layout/reftests/canvas/size-1.html @@ -0,0 +1,12 @@ + + + + + + + From b03c82c328231874878dfc0e6ca58876e314f201 Mon Sep 17 00:00:00 2001 From: Mounir Lamouri Date: Fri, 8 Jul 2011 14:56:44 +0200 Subject: [PATCH 02/22] Bug 665571 - Have DrawCellWithSnapping handles special NSZeroSize value in CellRenderSettings. r=mstange --- widget/src/cocoa/nsNativeThemeCocoa.mm | 66 ++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 10 deletions(-) diff --git a/widget/src/cocoa/nsNativeThemeCocoa.mm b/widget/src/cocoa/nsNativeThemeCocoa.mm index 54f33163441..0ce3ad3ff43 100644 --- a/widget/src/cocoa/nsNativeThemeCocoa.mm +++ b/widget/src/cocoa/nsNativeThemeCocoa.mm @@ -280,6 +280,15 @@ static int EnumSizeForCocoaSize(NSControlSize cocoaControlSize) { return regularControlSize; } +static NSControlSize CocoaSizeForEnum(PRInt32 enumControlSize) { + if (enumControlSize == miniControlSize) + return NSMiniControlSize; + else if (enumControlSize == smallControlSize) + return NSSmallControlSize; + else + return NSRegularControlSize; +} + static void InflateControlRect(NSRect* rect, NSControlSize cocoaControlSize, const float marginSet[][3][4]) { if (!marginSet) @@ -556,6 +565,49 @@ struct CellRenderSettings { float margins[1][3][4]; }; +/* + * This is a helper method that returns the required NSControlSize given a size + * and the size of the three controls plus a tolerance. + * size - The width or the height of the element to draw. + * sizes - An array with the all the width/height of the element for its + * different sizes. + * tolerance - The tolerance as passed to DrawCellWithSnapping. + * NOTE: returns NSRegularControlSize if all values in 'sizes' are zero. + */ +static NSControlSize FindControlSize(CGFloat size, CGFloat* sizes, CGFloat tolerance) +{ + for (PRUint32 i = miniControlSize; i <= regularControlSize; ++i) { + if (sizes[i] == 0) { + continue; + } + + CGFloat next = 0; + // Find next value. + for (PRUint32 j = i+1; j <= regularControlSize; ++j) { + if (sizes[j] != 0) { + next = sizes[j]; + break; + } + } + + // If it's the latest value, we pick it. + if (next == 0) { + return CocoaSizeForEnum(i); + } + + if (size <= sizes[i] + tolerance && size < next) { + return CocoaSizeForEnum(i); + } + } + + // If we are here, that means sizes[] was an array with only empty values + // or the algorithm above is wrong. + // The former can happen but the later would be wrong. + NS_ASSERTION(sizes[0] == 0 && sizes[1] == 0 && sizes[2] == 0, + "We found no control! We shouldn't be there!"); + return CocoaSizeForEnum(regularControlSize); +} + /* * Draw the given NSCell into the given cgContext with a nice control size. * @@ -583,18 +635,12 @@ static void DrawCellWithSnapping(NSCell *cell, const NSSize smallSize = sizes[EnumSizeForCocoaSize(NSSmallControlSize)]; const NSSize regularSize = sizes[EnumSizeForCocoaSize(NSRegularControlSize)]; - NSControlSize controlSizeX = NSRegularControlSize, controlSizeY = NSRegularControlSize; HIRect drawRect = destRect; - if (rectWidth <= miniSize.width + snapTolerance && rectWidth < smallSize.width) - controlSizeX = NSMiniControlSize; - else if(rectWidth <= smallSize.width + snapTolerance && rectWidth < regularSize.width) - controlSizeX = NSSmallControlSize; - - if (rectHeight <= miniSize.height + snapTolerance && rectHeight < smallSize.height) - controlSizeY = NSMiniControlSize; - else if(rectHeight <= smallSize.height + snapTolerance && rectHeight < regularSize.height) - controlSizeY = NSSmallControlSize; + CGFloat controlWidths[3] = { miniSize.width, smallSize.width, regularSize.width }; + NSControlSize controlSizeX = FindControlSize(rectWidth, controlWidths, snapTolerance); + CGFloat controlHeights[3] = { miniSize.height, smallSize.height, regularSize.height }; + NSControlSize controlSizeY = FindControlSize(rectHeight, controlHeights, snapTolerance); NSControlSize controlSize = NSRegularControlSize; int sizeIndex = 0; From 83f4467febeb617f37fa8555c343d0bc89447baa Mon Sep 17 00:00:00 2001 From: Jonathan Watt Date: Fri, 8 Jul 2011 14:20:14 +0100 Subject: [PATCH 03/22] Bug 664130 - Rename GetHittestMask to GetHitTestFlags to avoid confusion about masking. r=longsonr. --- layout/svg/base/src/nsSVGGeometryFrame.cpp | 30 +++++++++---------- layout/svg/base/src/nsSVGGeometryFrame.h | 15 +++++++--- layout/svg/base/src/nsSVGGlyphFrame.cpp | 8 ++--- layout/svg/base/src/nsSVGImageFrame.cpp | 16 +++++----- .../svg/base/src/nsSVGPathGeometryFrame.cpp | 14 ++++----- 5 files changed, 45 insertions(+), 38 deletions(-) diff --git a/layout/svg/base/src/nsSVGGeometryFrame.cpp b/layout/svg/base/src/nsSVGGeometryFrame.cpp index 4c750f21821..fea076829ea 100644 --- a/layout/svg/base/src/nsSVGGeometryFrame.cpp +++ b/layout/svg/base/src/nsSVGGeometryFrame.cpp @@ -338,9 +338,9 @@ nsSVGGeometryFrame::SetupCairoStroke(gfxContext *aContext) } PRUint16 -nsSVGGeometryFrame::GetHittestMask() +nsSVGGeometryFrame::GetHitTestFlags() { - PRUint16 mask = 0; + PRUint16 flags = 0; switch(GetStyleVisibility()->mPointerEvents) { case NS_STYLE_POINTER_EVENTS_NONE: @@ -349,49 +349,49 @@ nsSVGGeometryFrame::GetHittestMask() case NS_STYLE_POINTER_EVENTS_VISIBLEPAINTED: if (GetStyleVisibility()->IsVisible()) { if (GetStyleSVG()->mFill.mType != eStyleSVGPaintType_None) - mask |= HITTEST_MASK_FILL; + flags |= SVG_HIT_TEST_FILL; if (GetStyleSVG()->mStroke.mType != eStyleSVGPaintType_None) - mask |= HITTEST_MASK_STROKE; + flags |= SVG_HIT_TEST_STROKE; if (GetStyleSVG()->mStrokeOpacity > 0) - mask |= HITTEST_MASK_CHECK_MRECT; + flags |= SVG_HIT_TEST_CHECK_MRECT; } break; case NS_STYLE_POINTER_EVENTS_VISIBLEFILL: if (GetStyleVisibility()->IsVisible()) { - mask |= HITTEST_MASK_FILL; + flags |= SVG_HIT_TEST_FILL; } break; case NS_STYLE_POINTER_EVENTS_VISIBLESTROKE: if (GetStyleVisibility()->IsVisible()) { - mask |= HITTEST_MASK_STROKE; + flags |= SVG_HIT_TEST_STROKE; } break; case NS_STYLE_POINTER_EVENTS_VISIBLE: if (GetStyleVisibility()->IsVisible()) { - mask |= HITTEST_MASK_FILL | HITTEST_MASK_STROKE; + flags |= SVG_HIT_TEST_FILL | SVG_HIT_TEST_STROKE; } break; case NS_STYLE_POINTER_EVENTS_PAINTED: if (GetStyleSVG()->mFill.mType != eStyleSVGPaintType_None) - mask |= HITTEST_MASK_FILL; + flags |= SVG_HIT_TEST_FILL; if (GetStyleSVG()->mStroke.mType != eStyleSVGPaintType_None) - mask |= HITTEST_MASK_STROKE; + flags |= SVG_HIT_TEST_STROKE; if (GetStyleSVG()->mStrokeOpacity) - mask |= HITTEST_MASK_CHECK_MRECT; + flags |= SVG_HIT_TEST_CHECK_MRECT; break; case NS_STYLE_POINTER_EVENTS_FILL: - mask |= HITTEST_MASK_FILL; + flags |= SVG_HIT_TEST_FILL; break; case NS_STYLE_POINTER_EVENTS_STROKE: - mask |= HITTEST_MASK_STROKE; + flags |= SVG_HIT_TEST_STROKE; break; case NS_STYLE_POINTER_EVENTS_ALL: - mask |= HITTEST_MASK_FILL | HITTEST_MASK_STROKE; + flags |= SVG_HIT_TEST_FILL | SVG_HIT_TEST_STROKE; break; default: NS_ERROR("not reached"); break; } - return mask; + return flags; } diff --git a/layout/svg/base/src/nsSVGGeometryFrame.h b/layout/svg/base/src/nsSVGGeometryFrame.h index e828d0c5bb4..e02b2be8185 100644 --- a/layout/svg/base/src/nsSVGGeometryFrame.h +++ b/layout/svg/base/src/nsSVGGeometryFrame.h @@ -46,9 +46,9 @@ class gfxContext; typedef nsFrame nsSVGGeometryFrameBase; -#define HITTEST_MASK_FILL 0x01 -#define HITTEST_MASK_STROKE 0x02 -#define HITTEST_MASK_CHECK_MRECT 0x04 +#define SVG_HIT_TEST_FILL 0x01 +#define SVG_HIT_TEST_STROKE 0x02 +#define SVG_HIT_TEST_CHECK_MRECT 0x04 /* nsSVGGeometryFrame is a base class for SVG objects that directly * have geometry (circle, ellipse, line, polyline, polygon, path, and @@ -106,7 +106,14 @@ public: protected: nsSVGPaintServerFrame *GetPaintServer(const nsStyleSVGPaint *aPaint, const FramePropertyDescriptor *aProperty); - virtual PRUint16 GetHittestMask(); + + /** + * This function returns a set of bit flags indicating which parts of the + * element (fill, stroke, bounds) should intercept pointer events. It takes + * into account the type of element and the value of the 'pointer-events' + * property on the element. + */ + virtual PRUint16 GetHitTestFlags(); private: nsresult GetStrokeDashArray(double **arr, PRUint32 *count); diff --git a/layout/svg/base/src/nsSVGGlyphFrame.cpp b/layout/svg/base/src/nsSVGGlyphFrame.cpp index 9b8dadf8b93..b1309ea2afe 100644 --- a/layout/svg/base/src/nsSVGGlyphFrame.cpp +++ b/layout/svg/base/src/nsSVGGlyphFrame.cpp @@ -415,8 +415,8 @@ nsSVGGlyphFrame::PaintSVG(nsSVGRenderState *aContext, NS_IMETHODIMP_(nsIFrame*) nsSVGGlyphFrame::GetFrameForPoint(const nsPoint &aPoint) { - PRUint16 mask = GetHittestMask(); - if (!mask) { + PRUint16 hitTestFlags = GetHitTestFlags(); + if (!hitTestFlags) { return nsnull; } @@ -431,7 +431,7 @@ nsSVGGlyphFrame::GetFrameForPoint(const nsPoint &aPoint) // // http://www.w3.org/TR/SVG11/interact.html#PointerEventsProperty // - // Currently we just test the character cells if GetHittestMask says we're + // Currently we just test the character cells if GetHitTestFlags says we're // supposed to be testing either the fill OR the stroke: PRInt32 i; @@ -448,7 +448,7 @@ nsSVGGlyphFrame::GetFrameForPoint(const nsPoint &aPoint) PresContext()->AppUnitsToGfxUnits(aPoint.y))); PRBool isHit = PR_FALSE; - if (mask & HITTEST_MASK_FILL || mask & HITTEST_MASK_STROKE) { + if (hitTestFlags & SVG_HIT_TEST_FILL || hitTestFlags & SVG_HIT_TEST_STROKE) { isHit = context->PointInFill(userSpacePoint); } diff --git a/layout/svg/base/src/nsSVGImageFrame.cpp b/layout/svg/base/src/nsSVGImageFrame.cpp index db080fd589b..348a204bea4 100644 --- a/layout/svg/base/src/nsSVGImageFrame.cpp +++ b/layout/svg/base/src/nsSVGImageFrame.cpp @@ -91,7 +91,7 @@ public: // nsSVGPathGeometryFrame methods: NS_IMETHOD UpdateCoveredRegion(); - virtual PRUint16 GetHittestMask(); + virtual PRUint16 GetHitTestFlags(); // nsIFrame interface: NS_IMETHOD AttributeChanged(PRInt32 aNameSpaceID, @@ -460,9 +460,9 @@ nsSVGImageFrame::UpdateCoveredRegion() } PRUint16 -nsSVGImageFrame::GetHittestMask() +nsSVGImageFrame::GetHitTestFlags() { - PRUint16 mask = 0; + PRUint16 flags = 0; switch(GetStyleVisibility()->mPointerEvents) { case NS_STYLE_POINTER_EVENTS_NONE: @@ -471,31 +471,31 @@ nsSVGImageFrame::GetHittestMask() case NS_STYLE_POINTER_EVENTS_AUTO: if (GetStyleVisibility()->IsVisible()) { /* XXX: should check pixel transparency */ - mask |= HITTEST_MASK_FILL; + flags |= SVG_HIT_TEST_FILL; } break; case NS_STYLE_POINTER_EVENTS_VISIBLEFILL: case NS_STYLE_POINTER_EVENTS_VISIBLESTROKE: case NS_STYLE_POINTER_EVENTS_VISIBLE: if (GetStyleVisibility()->IsVisible()) { - mask |= HITTEST_MASK_FILL; + flags |= SVG_HIT_TEST_FILL; } break; case NS_STYLE_POINTER_EVENTS_PAINTED: /* XXX: should check pixel transparency */ - mask |= HITTEST_MASK_FILL; + flags |= SVG_HIT_TEST_FILL; break; case NS_STYLE_POINTER_EVENTS_FILL: case NS_STYLE_POINTER_EVENTS_STROKE: case NS_STYLE_POINTER_EVENTS_ALL: - mask |= HITTEST_MASK_FILL; + flags |= SVG_HIT_TEST_FILL; break; default: NS_ERROR("not reached"); break; } - return mask; + return flags; } //---------------------------------------------------------------------- diff --git a/layout/svg/base/src/nsSVGPathGeometryFrame.cpp b/layout/svg/base/src/nsSVGPathGeometryFrame.cpp index 30dade7050e..5566e504b13 100644 --- a/layout/svg/base/src/nsSVGPathGeometryFrame.cpp +++ b/layout/svg/base/src/nsSVGPathGeometryFrame.cpp @@ -153,14 +153,14 @@ nsSVGPathGeometryFrame::PaintSVG(nsSVGRenderState *aContext, NS_IMETHODIMP_(nsIFrame*) nsSVGPathGeometryFrame::GetFrameForPoint(const nsPoint &aPoint) { - PRUint16 fillRule, mask; + PRUint16 fillRule, hitTestFlags; if (GetStateBits() & NS_STATE_SVG_CLIPPATH_CHILD) { - mask = HITTEST_MASK_FILL; + hitTestFlags = SVG_HIT_TEST_FILL; fillRule = GetClipRule(); } else { - mask = GetHittestMask(); - if (!mask || ((mask & HITTEST_MASK_CHECK_MRECT) && - !mRect.Contains(aPoint))) + hitTestFlags = GetHitTestFlags(); + if (!hitTestFlags || ((hitTestFlags & SVG_HIT_TEST_CHECK_MRECT) && + !mRect.Contains(aPoint))) return nsnull; fillRule = GetStyleSVG()->mFillRule; } @@ -180,9 +180,9 @@ nsSVGPathGeometryFrame::GetFrameForPoint(const nsPoint &aPoint) else context->SetFillRule(gfxContext::FILL_RULE_WINDING); - if (mask & HITTEST_MASK_FILL) + if (hitTestFlags & SVG_HIT_TEST_FILL) isHit = context->PointInFill(userSpacePoint); - if (!isHit && (mask & HITTEST_MASK_STROKE)) { + if (!isHit && (hitTestFlags & SVG_HIT_TEST_STROKE)) { SetupCairoStrokeHitGeometry(context); isHit = context->PointInStroke(userSpacePoint); } From 47b3838d1aa1349ba8f3fe99e9452a547e196974 Mon Sep 17 00:00:00 2001 From: Joel Maher Date: Fri, 8 Jul 2011 11:00:41 -0400 Subject: [PATCH 04/22] Bug 668594 - while running reftest style tests, we seem to have a memory leak and fennec hangs. r=bc, a=test-only --- js/src/tests/e4x/GC/jstests.list | 4 ++-- js/src/tests/e4x/Regress/jstests.list | 10 +++++----- js/src/tests/e4x/XML/jstests.list | 2 +- js/src/tests/ecma_5/Function/jstests.list | 2 +- js/src/tests/js1_5/Array/jstests.list | 4 ++-- js/src/tests/js1_5/Exceptions/jstests.list | 2 +- js/src/tests/js1_5/Function/jstests.list | 8 ++++---- js/src/tests/js1_5/GC/jstests.list | 4 ++-- js/src/tests/js1_5/Regress/jstests.list | 10 +++++----- js/src/tests/js1_5/extensions/jstests.list | 16 ++++++++-------- js/src/tests/js1_6/extensions/jstests.list | 4 ++-- js/src/tests/js1_7/GC/jstests.list | 2 +- js/src/tests/js1_7/extensions/jstests.list | 2 +- js/src/tests/js1_7/regress/jstests.list | 2 +- js/src/tests/js1_8/extensions/jstests.list | 2 +- js/src/tests/js1_8/regress/jstests.list | 6 +++--- js/src/tests/js1_8_1/extensions/jstests.list | 2 +- js/src/tests/js1_8_1/regress/jstests.list | 18 +++++++++--------- js/src/tests/js1_8_5/extensions/jstests.list | 2 +- js/src/tests/js1_8_5/regress/jstests.list | 4 ++-- 20 files changed, 53 insertions(+), 53 deletions(-) diff --git a/js/src/tests/e4x/GC/jstests.list b/js/src/tests/e4x/GC/jstests.list index 53875198efc..d37c98e6070 100644 --- a/js/src/tests/e4x/GC/jstests.list +++ b/js/src/tests/e4x/GC/jstests.list @@ -1,6 +1,6 @@ url-prefix ../../jsreftest.html?test=e4x/GC/ -script regress-280844-1.js -script regress-280844-2.js +skip-if(Android) script regress-280844-1.js +skip-if(Android) script regress-280844-2.js skip-if(!xulRuntime.shell) script regress-292455.js # does not always dismiss alert script regress-313952-01.js script regress-313952-02.js diff --git a/js/src/tests/e4x/Regress/jstests.list b/js/src/tests/e4x/Regress/jstests.list index 92957a1fe8f..fb0d88678c4 100644 --- a/js/src/tests/e4x/Regress/jstests.list +++ b/js/src/tests/e4x/Regress/jstests.list @@ -80,17 +80,17 @@ script regress-375406.js script regress-378492.js script regress-380833.js script regress-383255.js -silentfail script regress-394941.js +skip-if(Android) silentfail script regress-394941.js script regress-407323.js script regress-426520.js script regress-453915.js -silentfail script regress-458679-01.js -silentfail script regress-458679-02.js +skip-if(Android) silentfail script regress-458679-01.js +skip-if(Android) silentfail script regress-458679-02.js script regress-460180.js script regress-465063.js script regress-470619.js -script regress-473709.js -script regress-474319.js +skip-if(Android) script regress-473709.js +skip-if(Android) script regress-474319.js script regress-477053.js script regress-561031.js script regress-587434.js diff --git a/js/src/tests/e4x/XML/jstests.list b/js/src/tests/e4x/XML/jstests.list index 3b11f7dee1a..f31cf5deb2b 100644 --- a/js/src/tests/e4x/XML/jstests.list +++ b/js/src/tests/e4x/XML/jstests.list @@ -48,7 +48,7 @@ script 13.4.4.7.js script 13.4.4.8.js script 13.4.4.9.js script regress-291930.js -silentfail script regress-324422-1.js +skip-if(Android) silentfail script regress-324422-1.js skip script regress-324422-2.js # slow skip script regress-324688.js # bug 528404 - disable due to random timeouts script regress-336921.js diff --git a/js/src/tests/ecma_5/Function/jstests.list b/js/src/tests/ecma_5/Function/jstests.list index 242cbb91ec4..bcdf66666b3 100644 --- a/js/src/tests/ecma_5/Function/jstests.list +++ b/js/src/tests/ecma_5/Function/jstests.list @@ -9,5 +9,5 @@ script function-bind.js script function-call.js script redefine-arguments-length.js script builtin-no-prototype.js -script Function-arguments-gc.js +skip-if(Android) script Function-arguments-gc.js script builtin-no-construct.js diff --git a/js/src/tests/js1_5/Array/jstests.list b/js/src/tests/js1_5/Array/jstests.list index a8ec9f9eaa7..52f795e0906 100644 --- a/js/src/tests/js1_5/Array/jstests.list +++ b/js/src/tests/js1_5/Array/jstests.list @@ -5,7 +5,7 @@ random script regress-101964.js # bogus perf test (bug 467263) script regress-107138.js fails-if(!xulRuntime.shell) script regress-108440.js # bug - NS_ERROR_DOM_NOT_SUPPORTED_ERR line 74 script regress-154338.js -skip-if(xulRuntime.XPCOMABI.match(/x86_64/)) script regress-157652.js # No test results +skip-if(xulRuntime.XPCOMABI.match(/x86_64/)||Android) script regress-157652.js # No test results script regress-178722.js script regress-255555.js script regress-299644.js @@ -14,7 +14,7 @@ script regress-310351.js script regress-311515.js script regress-313153.js script regress-315509-01.js -skip-if(xulRuntime.XPCOMABI.match(/x86_64/)) script regress-330812.js # No test results +skip-if(xulRuntime.XPCOMABI.match(/x86_64/)||Android) script regress-330812.js # No test results script regress-345961.js script regress-348810.js script regress-350256-01.js diff --git a/js/src/tests/js1_5/Exceptions/jstests.list b/js/src/tests/js1_5/Exceptions/jstests.list index da97baee101..b4b577c8033 100644 --- a/js/src/tests/js1_5/Exceptions/jstests.list +++ b/js/src/tests/js1_5/Exceptions/jstests.list @@ -12,5 +12,5 @@ script regress-332472.js script regress-333728.js script regress-342359.js script regress-347674.js -script regress-350650-n.js +skip-if(Android) script regress-350650-n.js script regress-350837.js diff --git a/js/src/tests/js1_5/Function/jstests.list b/js/src/tests/js1_5/Function/jstests.list index 5149c28ed66..1b7f81d4194 100644 --- a/js/src/tests/js1_5/Function/jstests.list +++ b/js/src/tests/js1_5/Function/jstests.list @@ -7,9 +7,9 @@ script regress-178389.js script regress-222029-001.js script regress-222029-002.js script regress-292215.js -#silentfail script regress-338001.js # disabled pending bug 657444 -#silentfail script regress-338121-01.js # disabled pending bug 657444 -#silentfail script regress-338121-02.js # disabled pending bug 657444 -#silentfail script regress-338121-03.js # disabled pending bug 657444 +#skip-if(Android) silentfail script regress-338001.js # disabled pending bug 657444 +#skip-if(Android) silentfail script regress-338121-01.js # disabled pending bug 657444 +#skip-if(Android) silentfail script regress-338121-02.js # disabled pending bug 657444 +#skip-if(Android) silentfail script regress-338121-03.js # disabled pending bug 657444 script regress-344052.js script regress-364023.js diff --git a/js/src/tests/js1_5/GC/jstests.list b/js/src/tests/js1_5/GC/jstests.list index 05d4a4eaaeb..8795b371b14 100644 --- a/js/src/tests/js1_5/GC/jstests.list +++ b/js/src/tests/js1_5/GC/jstests.list @@ -17,10 +17,10 @@ skip script regress-338653.js # slow, killed on x86_64 script regress-341877-01.js script regress-341877-02.js skip script regress-346794.js # slow, killed -script regress-348532.js +skip-if(Android) script regress-348532.js script regress-352606.js skip script regress-383269-01.js # unreliable - based on GC timing skip script regress-383269-02.js # unreliable - based on GC timing script regress-390078.js script regress-418128.js -script regress-440558.js +skip-if(Android) script regress-440558.js diff --git a/js/src/tests/js1_5/Regress/jstests.list b/js/src/tests/js1_5/Regress/jstests.list index e7829e48ed1..768ca17ce13 100644 --- a/js/src/tests/js1_5/Regress/jstests.list +++ b/js/src/tests/js1_5/Regress/jstests.list @@ -91,7 +91,7 @@ script regress-275378.js script regress-276103.js script regress-278873.js script regress-280769-1.js -silentfail script regress-280769-2.js +skip-if(Android) silentfail script regress-280769-2.js script regress-280769-3.js script regress-280769-4.js script regress-280769-5.js @@ -111,7 +111,7 @@ script regress-295052.js script regress-295666.js script regress-299209.js script regress-299641.js -skip-if(!xulRuntime.shell) script regress-303213.js # bug 524731 +skip-if(!xulRuntime.shell||Android) script regress-303213.js # bug 524731 script regress-306633.js script regress-306727.js script regress-306794.js @@ -125,7 +125,7 @@ script regress-311071.js script regress-311629.js script regress-312260.js script regress-31255.js -script regress-312588.js +skip-if(Android) script regress-312588.js random script regress-313967-01.js # BigO random script regress-313967-02.js # BigO skip-if(xulRuntime.OS=="WINNT"&&isDebugBuild) slow script regress-314401.js @@ -151,8 +151,8 @@ script regress-328012.js script regress-328664.js script regress-328897.js script regress-329383.js -script regress-329530.js -script regress-330352.js +skip-if(Android) script regress-329530.js +skip-if(Android) script regress-330352.js script regress-330951.js script regress-334807-01.js script regress-334807-02.js diff --git a/js/src/tests/js1_5/extensions/jstests.list b/js/src/tests/js1_5/extensions/jstests.list index d963ae120eb..a2aca2e875f 100644 --- a/js/src/tests/js1_5/extensions/jstests.list +++ b/js/src/tests/js1_5/extensions/jstests.list @@ -44,9 +44,9 @@ script regress-328556.js skip script regress-330569.js # Yarr doesn't bail on complex regexps. script regress-333541.js skip script regress-335700.js # bug xxx - reftest hang, BigO -skip-if(!xulRuntime.shell) slow script regress-336409-1.js # no results reported. +skip-if(!xulRuntime.shell||Android) slow script regress-336409-1.js # no results reported. skip-if(!xulRuntime.shell&&((Android||(isDebugBuild&&xulRuntime.OS=="Linux")||xulRuntime.XPCOMABI.match(/x86_64/)))) silentfail script regress-336409-2.js # can fail silently due to out of memory, bug 615011 - timeouts on slow debug Linux -skip-if(!xulRuntime.shell) silentfail script regress-336410-1.js # can fail silently due to out of memory +skip-if(!xulRuntime.shell||Android) silentfail script regress-336410-1.js # can fail silently due to out of memory skip-if(!xulRuntime.shell&&((isDebugBuild&&xulRuntime.OS=="Linux")||Android||xulRuntime.XPCOMABI.match(/x86_64/)||xulRuntime.OS=="WINNT")) silentfail script regress-336410-2.js # can fail silently due to out of memory, bug 621348 - timeouts on slow debug Linux script regress-338804-01.js script regress-338804-02.js @@ -152,11 +152,11 @@ script regress-394967.js script regress-396326.js skip script regress-406572.js script regress-407019.js -script regress-407501.js +skip-if(Android) script regress-407501.js skip-if(!xulRuntime.shell) slow script regress-407720.js script regress-412926.js -script regress-414755.js -script regress-416354.js +skip-if(Android) script regress-414755.js +skip-if(Android) script regress-416354.js script regress-416460.js script regress-416834.js skip script regress-418730.js # obsolete test @@ -184,14 +184,14 @@ skip script regress-437288-01.js # obsolete test script regress-44009.js script regress-443569.js script regress-446386.js -script regress-452168.js +skip-if(Android) script regress-452168.js script regress-452178.js script regress-452329.js script regress-452338.js script regress-452565.js script regress-453249.js script regress-454040.js -script regress-454142.js +skip-if(Android) script regress-454142.js script regress-454704.js script regress-455380.js script regress-455408.js @@ -205,7 +205,7 @@ script regress-465276.js script regress-469625.js script regress-469761.js script regress-472599.js -script regress-472787.js +skip-if(Android) script regress-472787.js script regress-476447.js script regress-479487.js script regress-479551.js diff --git a/js/src/tests/js1_6/extensions/jstests.list b/js/src/tests/js1_6/extensions/jstests.list index 7ba406bac46..9edc018ee15 100644 --- a/js/src/tests/js1_6/extensions/jstests.list +++ b/js/src/tests/js1_6/extensions/jstests.list @@ -6,8 +6,8 @@ script regress-414098.js fails-if(!xulRuntime.shell) script regress-455464-01.js # bug - NS_ERROR_DOM_NOT_SUPPORTED_ERR line 1 fails-if(!xulRuntime.shell) script regress-455464-02.js # bug - NS_ERROR_DOM_NOT_SUPPORTED_ERR line 49 fails-if(!xulRuntime.shell) script regress-455464-03.js # bug - NS_ERROR_DOM_NOT_SUPPORTED_ERR line 1 -fails-if(!xulRuntime.shell&&!isDebugBuild) skip-if(!xulRuntime.shell&&isDebugBuild) script regress-455464-04.js # bug xxx - hangs reftests in debug, ### bug xxx - NS_ERROR_DOM_NOT_SUPPORTED_ERR in opt -skip-if(!xulRuntime.shell) slow script regress-456826.js # bug 504632 +fails-if(!xulRuntime.shell&&!isDebugBuild) skip-if((!xulRuntime.shell&&isDebugBuild)||Android) script regress-455464-04.js # bug xxx - hangs reftests in debug, ### bug xxx - NS_ERROR_DOM_NOT_SUPPORTED_ERR in opt +skip-if(!xulRuntime.shell||Android) slow script regress-456826.js # bug 504632 script regress-457521.js script regress-465443.js script regress-470310.js diff --git a/js/src/tests/js1_7/GC/jstests.list b/js/src/tests/js1_7/GC/jstests.list index 45014f5125f..0f1247c77fe 100644 --- a/js/src/tests/js1_7/GC/jstests.list +++ b/js/src/tests/js1_7/GC/jstests.list @@ -1,3 +1,3 @@ url-prefix ../../jsreftest.html?test=js1_7/GC/ script regress-341675.js -script regress-381374.js +skip-if(Android) script regress-381374.js diff --git a/js/src/tests/js1_7/extensions/jstests.list b/js/src/tests/js1_7/extensions/jstests.list index 6a8753f7437..200de49581e 100644 --- a/js/src/tests/js1_7/extensions/jstests.list +++ b/js/src/tests/js1_7/extensions/jstests.list @@ -63,7 +63,7 @@ script regress-470300-02.js script regress-473282.js script regress-474771-01.js script regress-474771-02.js -script regress-476257.js +skip-if(Android) script regress-476257.js script regress-477048.js script regress-589112.js script regress-590813.js diff --git a/js/src/tests/js1_7/regress/jstests.list b/js/src/tests/js1_7/regress/jstests.list index e224cb4d514..f3c005eef57 100644 --- a/js/src/tests/js1_7/regress/jstests.list +++ b/js/src/tests/js1_7/regress/jstests.list @@ -65,4 +65,4 @@ script regress-470223.js script regress-470388-01.js script regress-470388-02.js script regress-470388-03.js -script regress-474771.js +skip-if(Android) script regress-474771.js diff --git a/js/src/tests/js1_8/extensions/jstests.list b/js/src/tests/js1_8/extensions/jstests.list index 2baac131711..d5cbee130bf 100644 --- a/js/src/tests/js1_8/extensions/jstests.list +++ b/js/src/tests/js1_8/extensions/jstests.list @@ -36,7 +36,7 @@ skip-if(!xulRuntime.shell) slow script regress-476414-01.js skip-if(!xulRuntime.shell) slow script regress-476414-02.js fails-if(!xulRuntime.shell) script regress-476427.js # NS_ERROR_DOM_NOT_SUPPORTED_ERR script regress-476653.js -script regress-476869.js +skip-if(Android) script regress-476869.js script regress-476871-02.js skip script regress-479252.js skip script regress-479381.js diff --git a/js/src/tests/js1_8/regress/jstests.list b/js/src/tests/js1_8/regress/jstests.list index c2560c8f7d9..948ca0fb1aa 100644 --- a/js/src/tests/js1_8/regress/jstests.list +++ b/js/src/tests/js1_8/regress/jstests.list @@ -26,7 +26,7 @@ script regress-463783.js script regress-464092-01.js script regress-464092-02.js script regress-464096.js -script regress-464418.js +skip-if(Android) script regress-464418.js script regress-464978.js script regress-465220.js script regress-465234.js @@ -64,7 +64,7 @@ script regress-468711.js script regress-469547.js script regress-469625-02.js script regress-469625-03.js -script regress-471373.js # bug xxx No test results reported +skip-if(Android) script regress-471373.js # bug xxx No test results reported script regress-471660.js script regress-472450-01.js script regress-472450-02.js @@ -72,7 +72,7 @@ script regress-472528-01.js script regress-472528-02.js script regress-472703.js script regress-474769.js -script regress-474771.js +skip-if(Android) script regress-474771.js script regress-474935.js script regress-476655.js script regress-477234.js diff --git a/js/src/tests/js1_8_1/extensions/jstests.list b/js/src/tests/js1_8_1/extensions/jstests.list index 99180a72c2c..fa8eecde2a2 100644 --- a/js/src/tests/js1_8_1/extensions/jstests.list +++ b/js/src/tests/js1_8_1/extensions/jstests.list @@ -9,7 +9,7 @@ script regress-452498-224.js script regress-466905-04.js skip script regress-466905-05.js # no-op in browser, fails in shell - see bug 554793 script regress-477158.js -script regress-477187.js +skip-if(Android) script regress-477187.js script regress-520572.js script new-parenthesization.js fails-if(Android) script strict-warning.js diff --git a/js/src/tests/js1_8_1/regress/jstests.list b/js/src/tests/js1_8_1/regress/jstests.list index 814e82446f0..552ae12e029 100644 --- a/js/src/tests/js1_8_1/regress/jstests.list +++ b/js/src/tests/js1_8_1/regress/jstests.list @@ -8,7 +8,7 @@ script regress-452498-039.js script regress-452498-040.js script regress-452498-050.js script regress-452498-051.js -script regress-452498-052-a.js +skip-if(Android) script regress-452498-052-a.js script regress-452498-052.js script regress-452498-053.js script regress-452498-054.js @@ -28,7 +28,7 @@ script regress-452498-082.js script regress-452498-091.js script regress-452498-092.js script regress-452498-098.js -script regress-452498-099-a.js +skip-if(Android) script regress-452498-099-a.js script regress-452498-099.js script regress-452498-101.js script regress-452498-102.js @@ -50,7 +50,7 @@ script regress-452498-123.js script regress-452498-129.js script regress-452498-130.js script regress-452498-131.js -script regress-452498-135-a.js +skip-if(Android) script regress-452498-135-a.js script regress-452498-135.js script regress-452498-138.js script regress-452498-139.js @@ -68,11 +68,11 @@ script regress-452498-191.js script regress-452498-192.js script regress-466905-01.js script regress-466905-02.js -script regress-479430-01.js -script regress-479430-02.js -script regress-479430-03.js -script regress-479430-04.js -script regress-479430-05.js +skip-if(Android) script regress-479430-01.js +skip-if(Android) script regress-479430-02.js +skip-if(Android) script regress-479430-03.js +skip-if(Android) script regress-479430-04.js +skip-if(Android) script regress-479430-05.js script regress-495773.js script regress-495907.js script regress-496922.js @@ -81,7 +81,7 @@ script regress-507295.js script regress-507424.js script regress-509354.js script regress-515885.js -skip-if(isDebugBuild&&!xulRuntime.shell) script regress-524743.js # hang +skip-if((isDebugBuild&&!xulRuntime.shell)||Android) script regress-524743.js # hang script regress-522123.js script regress-524264.js script regress-530879.js diff --git a/js/src/tests/js1_8_5/extensions/jstests.list b/js/src/tests/js1_8_5/extensions/jstests.list index d6c6322cfaa..e8a2bab44b0 100644 --- a/js/src/tests/js1_8_5/extensions/jstests.list +++ b/js/src/tests/js1_8_5/extensions/jstests.list @@ -9,7 +9,7 @@ skip-if(!xulRuntime.shell) script worker-fib.js skip-if(!xulRuntime.shell) script worker-init.js skip-if(!xulRuntime.shell) script worker-simple.js skip-if(!xulRuntime.shell) script worker-terminate.js -skip-if(!xulRuntime.shell) script worker-timeout.js +skip-if(!xulRuntime.shell||Android) script worker-timeout.js script regress-558541.js script scripted-proxies.js script watch-undefined-setter.js diff --git a/js/src/tests/js1_8_5/regress/jstests.list b/js/src/tests/js1_8_5/regress/jstests.list index 32ade10b1f3..ecb2ecfcc2f 100644 --- a/js/src/tests/js1_8_5/regress/jstests.list +++ b/js/src/tests/js1_8_5/regress/jstests.list @@ -29,7 +29,7 @@ script regress-559438.js script regress-560101.js script regress-560998-1.js script regress-560998-2.js -script regress-563210.js +skip-if(Android) script regress-563210.js script regress-563221.js script regress-566549.js script regress-566914.js @@ -84,7 +84,7 @@ skip-if(!xulRuntime.shell) script regress-618576.js # uses evalcx fails-if(!xulRuntime.shell) script regress-618652.js script regress-619003-1.js script regress-619003-2.js -script regress-620376-1.js +skip-if(Android) script regress-620376-1.js script regress-620376-2.js script regress-621814.js script regress-620750.js From 2a58256350546069edc8a153b6bf88be49cc4e1c Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Fri, 8 Jul 2011 14:04:25 -0400 Subject: [PATCH 05/22] Bug 649924 followup. Mark now-passing tests as passing. --- layout/reftests/bugs/reftest.list | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index f4e31b8019a..aa3c3567c38 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -1545,7 +1545,7 @@ random-if(!winWidget) == 574907-2.html 574907-2-ref.html random-if(!winWidget) fails-if(winWidget&&!d2d) random-if(winWidget&&d2d) != 574907-3.html 574907-3-notref.html == 577838-1.html 577838-1-ref.html == 577838-2.html 577838-2-ref.html -fails-if(Android) random-if(layersGPUAccelerated) fails-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) fails-if(/Mac\x20OS\x20X\x2010\.5/.test(http.oscpu)) == 579323-1.html 579323-1-ref.html # bug 623450 for WinXP and bug 627560 for OSX 10.5 +fails-if(Android) random-if(layersGPUAccelerated) == 579323-1.html 579323-1-ref.html == 579349-1.html 579349-1-ref.html == 579655-1.html 579655-1-ref.html fails-if(Android) == 579808-1.html 579808-1-ref.html @@ -1622,7 +1622,7 @@ fails-if(Android) == 625409-1.html 625409-1-ref.html == 630835-1.html about:blank == 631352-1.html 631352-1-ref.html fails-if(Android) == 632423-1.html 632423-1-ref.html -skip-if(Android) fails-if(winWidget) == 632781-verybig.html 632781-ref.html # large canvas elements are not drawn on Windows, see bug 633936 +skip-if(Android) == 632781-verybig.html 632781-ref.html == 632781-normalsize.html 632781-ref.html == 633344-1.html 633344-1-ref.html fails-if(Android) == 634232-1.html 634232-1-ref.html From 28e2eac582001cc014efebf1bc7f484269c5a021 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Fri, 8 Jul 2011 14:04:25 -0400 Subject: [PATCH 06/22] Bug 669158. Don't try to unclamp the dummy timeout. r=jst --- dom/base/nsGlobalWindow.cpp | 13 ++++++++++++- dom/base/nsGlobalWindow.h | 6 ++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index 0dbef676d1d..347afe26b28 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -9089,6 +9089,8 @@ nsGlobalWindow::RunTimeout(nsTimeout *aTimeout) dummy_timeout.AddRef(); last_insertion_point = mTimeoutInsertionPoint; + // If we ever start setting mTimeoutInsertionPoint to a non-dummy timeout, + // the logic in ResetTimersForNonBackgroundWindow will need to change. mTimeoutInsertionPoint = &dummy_timeout; for (timeout = FirstTimeout(); @@ -9426,7 +9428,16 @@ nsresult nsGlobalWindow::ResetTimersForNonBackgroundWindow() TimeStamp now = TimeStamp::Now(); - for (nsTimeout *timeout = FirstTimeout(); IsTimeout(timeout); ) { + // If mTimeoutInsertionPoint is non-null, we're in the middle of firing + // timers and the timers we're planning to fire all come before + // mTimeoutInsertionPoint; mTimeoutInsertionPoint itself is a dummy timeout + // with an mWhen that may be semi-bogus. In that case, we don't need to do + // anything with mTimeoutInsertionPoint or anything before it, so should + // start at the timer after mTimeoutInsertionPoint, if there is one. + // Otherwise, start at the beginning of the list. + for (nsTimeout *timeout = mTimeoutInsertionPoint ? + mTimeoutInsertionPoint->Next() : FirstTimeout(); + IsTimeout(timeout); ) { // It's important that this check be <= so that we guarantee that // taking NS_MAX with |now| won't make a quantity equal to // timeout->mWhen below. diff --git a/dom/base/nsGlobalWindow.h b/dom/base/nsGlobalWindow.h index a1d0017cc7e..4892e780a0b 100644 --- a/dom/base/nsGlobalWindow.h +++ b/dom/base/nsGlobalWindow.h @@ -914,8 +914,14 @@ protected: // These member variable are used only on inner windows. nsRefPtr mListenerManager; + // mTimeouts is generally sorted by mWhen, unless mTimeoutInsertionPoint is + // non-null. In that case, the dummy timeout pointed to by + // mTimeoutInsertionPoint may have a later mWhen than some of the timeouts + // that come after it. PRCList mTimeouts; // If mTimeoutInsertionPoint is non-null, insertions should happen after it. + // This is a dummy timeout at the moment; if that ever changes, the logic in + // ResetTimersForNonBackgroundWindow needs to change. nsTimeout* mTimeoutInsertionPoint; PRUint32 mTimeoutPublicIdCounter; PRUint32 mTimeoutFiringDepth; From 90e0eca2c12002cd93c3abe74be23e020c2e151c Mon Sep 17 00:00:00 2001 From: Kyle Huey Date: Fri, 8 Jul 2011 14:30:36 -0700 Subject: [PATCH 07/22] Bug 665964: If the nsISHistoryListener vetoes navigation, reset mRequestedIndex to make it clear that the navigation has been cancelled. r=bz --- docshell/shistory/src/nsSHistory.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/docshell/shistory/src/nsSHistory.cpp b/docshell/shistory/src/nsSHistory.cpp index b391407daa4..d8b43c330dd 100644 --- a/docshell/shistory/src/nsSHistory.cpp +++ b/docshell/shistory/src/nsSHistory.cpp @@ -1496,6 +1496,7 @@ nsSHistory::LoadEntry(PRInt32 aIndex, long aLoadType, PRUint32 aHistCmd) if (!canNavigate) { // If the listener asked us not to proceed with // the operation, simply return. + mRequestedIndex = -1; return NS_OK; // XXX Maybe I can return some other error code? } From c3bda7b882c01555847efad2fe4c02a98b3258d3 Mon Sep 17 00:00:00 2001 From: Bas Schouten Date: Fri, 8 Jul 2011 18:49:35 +0000 Subject: [PATCH 08/22] Bug 666097 - Fix radial gradient drawing in Azure. r=jrmuizel * * * Part 2: Adjust tests to properly confirm passing. r=jrmuizel --- .../src/nsCanvasRenderingContext2DAzure.cpp | 115 +- .../test_2d.gradient.radial.cone.top.html | 42 +- content/canvas/test/test_canvas.html | 63 +- gfx/2d/2D.h | 21 +- gfx/2d/DrawTargetD2D.cpp | 212 +- gfx/2d/DrawTargetD2D.h | 12 +- gfx/2d/HelpersD2D.h | 23 + gfx/2d/ShadersD2D.fx | 118 + gfx/2d/ShadersD2D.h | 6492 +++++++++++------ 9 files changed, 4641 insertions(+), 2457 deletions(-) diff --git a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp index 9f043d70495..b8fa71535a0 100644 --- a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp +++ b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp @@ -194,79 +194,6 @@ public: NS_DECL_ISUPPORTS -protected: - nsCanvasGradientAzure(Type aType) : mType(aType) - {} - - nsTArray mRawStops; - RefPtr mStops; - Type mType; -}; - -class nsCanvasRadialGradientAzure : public nsCanvasGradientAzure -{ -public: - nsCanvasRadialGradientAzure(const Point &aBeginOrigin, Float aBeginRadius, - const Point &aEndOrigin, Float aEndRadius) - : nsCanvasGradientAzure(RADIAL) - , mCenter(aEndOrigin) - , mRadius(aEndRadius) - { - mOffsetStart = aBeginRadius / mRadius; - - mOffsetRatio = 1 - mOffsetStart; - mOrigin = ((mCenter * aBeginRadius) - (aBeginOrigin * mRadius)) / - (aBeginRadius - mRadius); - } - - - /* nsIDOMCanvasGradient */ - NS_IMETHOD AddColorStop (float offset, - const nsAString& colorstr) - { - if (!FloatValidate(offset) || offset < 0.0 || offset > 1.0) { - return NS_ERROR_DOM_INDEX_SIZE_ERR; - } - - nscolor color; - nsCSSParser parser; - nsresult rv = parser.ParseColorString(nsString(colorstr), - nsnull, 0, &color); - if (NS_FAILED(rv)) { - return NS_ERROR_DOM_SYNTAX_ERR; - } - - mStops = nsnull; - - GradientStop newStop; - - newStop.offset = offset * mOffsetRatio + mOffsetStart; - newStop.color = Color::FromABGR(color); - - mRawStops.AppendElement(newStop); - - return NS_OK; - } - - // XXX - Temporary gradient code, this will be fixed soon as per bug 666097 - Point mCenter; - Float mRadius; - Point mOrigin; - - Float mOffsetStart; - Float mOffsetRatio; -}; - -class nsCanvasLinearGradientAzure : public nsCanvasGradientAzure -{ -public: - nsCanvasLinearGradientAzure(const Point &aBegin, const Point &aEnd) - : nsCanvasGradientAzure(LINEAR) - , mBegin(aBegin) - , mEnd(aEnd) - { - } - /* nsIDOMCanvasGradient */ NS_IMETHOD AddColorStop (float offset, const nsAString& colorstr) @@ -295,6 +222,44 @@ public: return NS_OK; } +protected: + nsCanvasGradientAzure(Type aType) : mType(aType) + {} + + nsTArray mRawStops; + RefPtr mStops; + Type mType; +}; + +class nsCanvasRadialGradientAzure : public nsCanvasGradientAzure +{ +public: + nsCanvasRadialGradientAzure(const Point &aBeginOrigin, Float aBeginRadius, + const Point &aEndOrigin, Float aEndRadius) + : nsCanvasGradientAzure(RADIAL) + , mCenter1(aBeginOrigin) + , mCenter2(aEndOrigin) + , mRadius1(aBeginRadius) + , mRadius2(aEndRadius) + { + } + + Point mCenter1; + Point mCenter2; + Float mRadius1; + Float mRadius2; +}; + +class nsCanvasLinearGradientAzure : public nsCanvasGradientAzure +{ +public: + nsCanvasLinearGradientAzure(const Point &aBegin, const Point &aEnd) + : nsCanvasGradientAzure(LINEAR) + , mBegin(aBegin) + , mEnd(aEnd) + { + } + protected: friend class nsCanvasRenderingContext2DAzure; @@ -827,8 +792,8 @@ protected: static_cast(state.gradientStyles[aStyle].get()); mPattern = new (mRadialGradientPattern.addr()) - RadialGradientPattern(gradient->mCenter, gradient->mOrigin, gradient->mRadius, - gradient->GetGradientStopsForTarget(aRT)); + RadialGradientPattern(gradient->mCenter1, gradient->mCenter2, gradient->mRadius1, + gradient->mRadius2, gradient->GetGradientStopsForTarget(aRT)); } else if (state.patternStyles[aStyle]) { if (aCtx->mCanvasElement) { CanvasUtils::DoDrawImageSecurityCheck(aCtx->HTMLCanvasElement(), diff --git a/content/canvas/test/test_2d.gradient.radial.cone.top.html b/content/canvas/test/test_2d.gradient.radial.cone.top.html index 48525c458b9..e76ddb81e01 100644 --- a/content/canvas/test/test_2d.gradient.radial.cone.top.html +++ b/content/canvas/test/test_2d.gradient.radial.cone.top.html @@ -6,17 +6,6 @@

FAIL (fallback content)

@@ -6570,29 +6557,15 @@ g.addColorStop(1, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); - -if (IsAzureEnabled()) { - // XXX - See Bug 666097. - todo_isPixel(ctx, 1, 1, 0, 255, 0, 255, 0); - todo_isPixel(ctx, 50, 1, 0, 255, 0, 255, 0); - todo_isPixel(ctx, 98, 1, 0, 255, 0, 255, 0); - todo_isPixel(ctx, 1, 25, 0, 255, 0, 255, 0); - todo_isPixel(ctx, 50, 25, 0, 255, 0, 255, 0); - todo_isPixel(ctx, 98, 25, 0, 255, 0, 255, 0); - todo_isPixel(ctx, 1, 48, 0, 255, 0, 255, 0); - todo_isPixel(ctx, 50, 48, 0, 255, 0, 255, 0); - todo_isPixel(ctx, 98, 48, 0, 255, 0, 255, 0); -} else { - isPixel(ctx, 1, 1, 0, 255, 0, 255, 0); - isPixel(ctx, 50, 1, 0, 255, 0, 255, 0); - isPixel(ctx, 98, 1, 0, 255, 0, 255, 0); - isPixel(ctx, 1, 25, 0, 255, 0, 255, 0); - isPixel(ctx, 50, 25, 0, 255, 0, 255, 0); - isPixel(ctx, 98, 25, 0, 255, 0, 255, 0); - isPixel(ctx, 1, 48, 0, 255, 0, 255, 0); - isPixel(ctx, 50, 48, 0, 255, 0, 255, 0); - isPixel(ctx, 98, 48, 0, 255, 0, 255, 0); -} +isPixel(ctx, 1, 1, 0, 255, 0, 255, 0); +isPixel(ctx, 50, 1, 0, 255, 0, 255, 0); +isPixel(ctx, 98, 1, 0, 255, 0, 255, 0); +isPixel(ctx, 1, 25, 0, 255, 0, 255, 0); +isPixel(ctx, 50, 25, 0, 255, 0, 255, 0); +isPixel(ctx, 98, 25, 0, 255, 0, 255, 0); +isPixel(ctx, 1, 48, 0, 255, 0, 255, 0); +isPixel(ctx, 50, 48, 0, 255, 0, 255, 0); +isPixel(ctx, 98, 48, 0, 255, 0, 255, 0); } diff --git a/gfx/2d/2D.h b/gfx/2d/2D.h index 2275228d3f0..49f7d81bf74 100644 --- a/gfx/2d/2D.h +++ b/gfx/2d/2D.h @@ -246,22 +246,25 @@ public: * aStops GradientStops object for this gradient, this should match the * backend type of the draw target this pattern will be used with. */ - RadialGradientPattern(const Point &aCenter, - const Point &aOrigin, - Float aRadius, + RadialGradientPattern(const Point &aCenter1, + const Point &aCenter2, + Float aRadius1, + Float aRadius2, GradientStops *aStops) - : mCenter(aCenter) - , mOrigin(aOrigin) - , mRadius(aRadius) + : mCenter1(aCenter1) + , mCenter2(aCenter2) + , mRadius1(aRadius1) + , mRadius2(aRadius2) , mStops(aStops) { } virtual PatternType GetType() const { return PATTERN_RADIAL_GRADIENT; } - Point mCenter; - Point mOrigin; - Float mRadius; + Point mCenter1; + Point mCenter2; + Float mRadius1; + Float mRadius2; RefPtr mStops; }; diff --git a/gfx/2d/DrawTargetD2D.cpp b/gfx/2d/DrawTargetD2D.cpp index acbb6a14c58..0ca96bc879d 100644 --- a/gfx/2d/DrawTargetD2D.cpp +++ b/gfx/2d/DrawTargetD2D.cpp @@ -229,7 +229,7 @@ DrawTargetD2D::DrawSurface(SourceSurface *aSurface, { RefPtr bitmap; - ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp); + ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, ColorPattern(Color())); PrepareForDrawing(rt); @@ -279,7 +279,7 @@ DrawTargetD2D::DrawSurface(SourceSurface *aSurface, rt->DrawBitmap(bitmap, D2DRect(aDest), aOptions.mAlpha, D2DFilter(aSurfOptions.mFilter), D2DRect(srcRect)); - FinalizeRTForOperator(aOptions.mCompositionOp, aDest); + FinalizeRTForOperation(aOptions.mCompositionOp, ColorPattern(Color()), aDest); } void @@ -693,7 +693,7 @@ DrawTargetD2D::FillRect(const Rect &aRect, const Pattern &aPattern, const DrawOptions &aOptions) { - ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp); + ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern); PrepareForDrawing(rt); @@ -703,7 +703,7 @@ DrawTargetD2D::FillRect(const Rect &aRect, rt->FillRectangle(D2DRect(aRect), brush); } - FinalizeRTForOperator(aOptions.mCompositionOp, aRect); + FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, aRect); } void @@ -712,7 +712,7 @@ DrawTargetD2D::StrokeRect(const Rect &aRect, const StrokeOptions &aStrokeOptions, const DrawOptions &aOptions) { - ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp); + ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern); PrepareForDrawing(rt); @@ -724,7 +724,7 @@ DrawTargetD2D::StrokeRect(const Rect &aRect, rt->DrawRectangle(D2DRect(aRect), brush, aStrokeOptions.mLineWidth, strokeStyle); } - FinalizeRTForOperator(aOptions.mCompositionOp, aRect); + FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, aRect); } void @@ -734,7 +734,7 @@ DrawTargetD2D::StrokeLine(const Point &aStart, const StrokeOptions &aStrokeOptions, const DrawOptions &aOptions) { - ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp); + ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern); PrepareForDrawing(rt); @@ -746,7 +746,7 @@ DrawTargetD2D::StrokeLine(const Point &aStart, rt->DrawLine(D2DPoint(aStart), D2DPoint(aEnd), brush, aStrokeOptions.mLineWidth, strokeStyle); } - FinalizeRTForOperator(aOptions.mCompositionOp, Rect(0, 0, Float(mSize.width), Float(mSize.height))); + FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, Rect(0, 0, Float(mSize.width), Float(mSize.height))); } void @@ -762,7 +762,7 @@ DrawTargetD2D::Stroke(const Path *aPath, const PathD2D *d2dPath = static_cast(aPath); - ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp); + ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern); PrepareForDrawing(rt); @@ -774,7 +774,7 @@ DrawTargetD2D::Stroke(const Path *aPath, rt->DrawGeometry(d2dPath->mGeometry, brush, aStrokeOptions.mLineWidth, strokeStyle); } - FinalizeRTForOperator(aOptions.mCompositionOp, Rect(0, 0, Float(mSize.width), Float(mSize.height))); + FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, Rect(0, 0, Float(mSize.width), Float(mSize.height))); } void @@ -789,7 +789,7 @@ DrawTargetD2D::Fill(const Path *aPath, const PathD2D *d2dPath = static_cast(aPath); - ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp); + ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern); PrepareForDrawing(rt); @@ -805,7 +805,7 @@ DrawTargetD2D::Fill(const Path *aPath, d2dPath->mGeometry->GetBounds(D2D1::IdentityMatrix(), &d2dbounds); bounds = ToRect(d2dbounds); } - FinalizeRTForOperator(aOptions.mCompositionOp, bounds); + FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, bounds); } void @@ -821,7 +821,7 @@ DrawTargetD2D::FillGlyphs(ScaledFont *aFont, ScaledFontDWrite *font = static_cast(aFont); - ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp); + ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern); PrepareForDrawing(rt); @@ -857,7 +857,7 @@ DrawTargetD2D::FillGlyphs(ScaledFont *aFont, rt->DrawGlyphRun(D2D1::Point2F(), &glyphRun, brush); } - FinalizeRTForOperator(aOptions.mCompositionOp, Rect(0, 0, (Float)mSize.width, (Float)mSize.height)); + FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, Rect(0, 0, (Float)mSize.width, (Float)mSize.height)); } void @@ -986,13 +986,13 @@ DrawTargetD2D::CreatePathBuilder(FillRule aFillRule) const } TemporaryRef -DrawTargetD2D::CreateGradientStops(GradientStop *aStops, uint32_t aNumStops) const +DrawTargetD2D::CreateGradientStops(GradientStop *rawStops, uint32_t aNumStops) const { D2D1_GRADIENT_STOP *stops = new D2D1_GRADIENT_STOP[aNumStops]; for (uint32_t i = 0; i < aNumStops; i++) { - stops[i].position = aStops[i].offset; - stops[i].color = D2DColor(aStops[i].color); + stops[i].position = rawStops[i].offset; + stops[i].color = D2DColor(rawStops[i].color); } RefPtr stopCollection; @@ -1290,9 +1290,9 @@ DrawTargetD2D::GetBlendStateForOperator(CompositionOp aOperator) * drawing operation other than OVER is required. */ ID2D1RenderTarget* -DrawTargetD2D::GetRTForOperator(CompositionOp aOperator) +DrawTargetD2D::GetRTForOperation(CompositionOp aOperator, const Pattern &aPattern) { - if (aOperator == OP_OVER) { + if (aOperator == OP_OVER && !IsPatternSupportedByD2D(aPattern)) { return mRT; } @@ -1331,9 +1331,9 @@ DrawTargetD2D::GetRTForOperator(CompositionOp aOperator) * to the surface. */ void -DrawTargetD2D::FinalizeRTForOperator(CompositionOp aOperator, const Rect &aBounds) +DrawTargetD2D::FinalizeRTForOperation(CompositionOp aOperator, const Pattern &aPattern, const Rect &aBounds) { - if (aOperator == OP_OVER) { + if (aOperator == OP_OVER && !IsPatternSupportedByD2D(aPattern)) { return; } @@ -1377,13 +1377,26 @@ DrawTargetD2D::FinalizeRTForOperator(CompositionOp aOperator, const Rect &aBound viewport.TopLeftY = 0; mDevice->RSSetViewports(1, &viewport); - mPrivateData->mEffect->GetVariableByName("tex")->AsShaderResource()->SetResource(mSRView); mPrivateData->mEffect->GetVariableByName("QuadDesc")->AsVector()-> SetFloatVector(ShaderConstantRectD3D10(-1.0f, 1.0f, 2.0f, -2.0f)); - mPrivateData->mEffect->GetVariableByName("TexCoords")->AsVector()-> - SetFloatVector(ShaderConstantRectD3D10(0, 0, 1.0f, 1.0f)); - mPrivateData->mEffect->GetTechniqueByName("SampleTexture")->GetPassByIndex(0)->Apply(0); + if (!IsPatternSupportedByD2D(aPattern)) { + mPrivateData->mEffect->GetVariableByName("TexCoords")->AsVector()-> + SetFloatVector(ShaderConstantRectD3D10(0, 0, 1.0f, 1.0f)); + mPrivateData->mEffect->GetVariableByName("tex")->AsShaderResource()->SetResource(mSRView); + mPrivateData->mEffect->GetTechniqueByName("SampleTexture")->GetPassByIndex(0)->Apply(0); + } else if (aPattern.GetType() == PATTERN_RADIAL_GRADIENT) { + const RadialGradientPattern *pat = static_cast(&aPattern); + + if (pat->mCenter1 == pat->mCenter2 && pat->mRadius1 == pat->mRadius2) { + // Draw nothing! + return; + } + + mPrivateData->mEffect->GetVariableByName("mask")->AsShaderResource()->SetResource(mSRView); + + SetupEffectForRadialGradient(pat); + } mDevice->OMSetBlendState(GetBlendStateForOperator(aOperator), NULL, 0xffffffff); @@ -1504,6 +1517,12 @@ DrawTargetD2D::PopAllClips() TemporaryRef DrawTargetD2D::CreateBrushForPattern(const Pattern &aPattern, Float aAlpha) { + if (IsPatternSupportedByD2D(aPattern)) { + RefPtr colBrush; + mRT->CreateSolidColorBrush(D2D1::ColorF(1.0f, 1.0f, 1.0f, 1.0f), byRef(colBrush)); + return colBrush; + } + if (aPattern.GetType() == PATTERN_COLOR) { RefPtr colBrush; Color color = static_cast(&aPattern)->mColor; @@ -1542,13 +1561,15 @@ DrawTargetD2D::CreateBrushForPattern(const Pattern &aPattern, Float aAlpha) return NULL; } - mRT->CreateRadialGradientBrush(D2D1::RadialGradientBrushProperties(D2DPoint(pat->mCenter), - D2DPoint(pat->mOrigin - pat->mCenter), - pat->mRadius, - pat->mRadius), - D2D1::BrushProperties(aAlpha), - stops->mStopCollection, - byRef(gradBrush)); + // This will not be a complex radial gradient brush. + mRT->CreateRadialGradientBrush( + D2D1::RadialGradientBrushProperties(D2DPoint(pat->mCenter1), + D2D1::Point2F(), + pat->mRadius2, pat->mRadius2), + D2D1::BrushProperties(aAlpha), + stops->mStopCollection, + byRef(gradBrush)); + return gradBrush; } else if (aPattern.GetType() == PATTERN_SURFACE) { RefPtr bmBrush; @@ -1687,6 +1708,133 @@ DrawTargetD2D::CreateStrokeStyleForOptions(const StrokeOptions &aStrokeOptions) return style; } +TemporaryRef +DrawTargetD2D::CreateGradientTexture(const GradientStopsD2D *aStops) +{ + CD3D10_TEXTURE1D_DESC desc(DXGI_FORMAT_B8G8R8A8_UNORM, 4096, 1, 1); + + std::vector rawStops; + rawStops.resize(aStops->mStopCollection->GetGradientStopCount()); + aStops->mStopCollection->GetGradientStops(&rawStops.front(), rawStops.size()); + + std::vector textureData; + textureData.resize(4096 * 4); + unsigned char *texData = &textureData.front(); + + float prevColorPos = 0; + float nextColorPos = 1.0f; + D2D1_COLOR_F prevColor = rawStops[0].color; + D2D1_COLOR_F nextColor = prevColor; + + if (rawStops.size() >= 2) { + nextColor = rawStops[1].color; + nextColorPos = rawStops[1].position; + } + + uint32_t stopPosition = 2; + + // Not the most optimized way but this will do for now. + for (int i = 0; i < 4096; i++) { + // The 4095 seems a little counter intuitive, but we want the gradient + // color at offset 0 at the first pixel, and at offset 1.0f at the last + // pixel. + float pos = float(i) / 4095; + + if (pos > nextColorPos) { + prevColor = nextColor; + prevColorPos = nextColorPos; + if (rawStops.size() > stopPosition) { + nextColor = rawStops[stopPosition].color; + nextColorPos = rawStops[stopPosition++].position; + } else { + nextColorPos = 1.0f; + } + } + + float interp = (pos - prevColorPos) / (nextColorPos - prevColorPos); + + Color newColor(prevColor.r + (nextColor.r - prevColor.r) * interp, + prevColor.g + (nextColor.g - prevColor.g) * interp, + prevColor.b + (nextColor.b - prevColor.b) * interp, + prevColor.a + (nextColor.a - prevColor.a) * interp); + + texData[i * 4] = (char)(255.0f * newColor.b); + texData[i * 4 + 1] = (char)(255.0f * newColor.g); + texData[i * 4 + 2] = (char)(255.0f * newColor.r); + texData[i * 4 + 3] = (char)(255.0f * newColor.a); + } + + D3D10_SUBRESOURCE_DATA data; + data.pSysMem = &textureData.front(); + + RefPtr tex; + mDevice->CreateTexture1D(&desc, &data, byRef(tex)); + + return tex; +} + +void +DrawTargetD2D::SetupEffectForRadialGradient(const RadialGradientPattern *aPattern) +{ + mPrivateData->mEffect->GetTechniqueByName("SampleRadialGradient")->GetPassByIndex(0)->Apply(0); + mPrivateData->mEffect->GetVariableByName("MaskTexCoords")->AsVector()-> + SetFloatVector(ShaderConstantRectD3D10(0, 0, 1.0f, 1.0f)); + + float dimensions[] = { float(mSize.width), float(mSize.height), 0, 0 }; + mPrivateData->mEffect->GetVariableByName("dimensions")->AsVector()-> + SetFloatVector(dimensions); + + const GradientStopsD2D *stops = + static_cast(aPattern->mStops.get()); + + RefPtr tex = CreateGradientTexture(stops); + + RefPtr srView; + mDevice->CreateShaderResourceView(tex, NULL, byRef(srView)); + + mPrivateData->mEffect->GetVariableByName("tex")->AsShaderResource()->SetResource(srView); + + Point dc = aPattern->mCenter2 - aPattern->mCenter1; + float dr = aPattern->mRadius2 - aPattern->mRadius1; + + float diffv[] = { dc.x, dc.y, dr, 0 }; + mPrivateData->mEffect->GetVariableByName("diff")->AsVector()-> + SetFloatVector(diffv); + + float center1[] = { aPattern->mCenter1.x, aPattern->mCenter1.y, dr, 0 }; + mPrivateData->mEffect->GetVariableByName("center1")->AsVector()-> + SetFloatVector(center1); + + mPrivateData->mEffect->GetVariableByName("radius1")->AsScalar()-> + SetFloat(aPattern->mRadius1); + mPrivateData->mEffect->GetVariableByName("sq_radius1")->AsScalar()-> + SetFloat(pow(aPattern->mRadius1, 2)); + + Matrix invTransform = mTransform; + + if (!invTransform.Invert()) { + // Bail if the matrix is singular. + return; + } + float matrix[] = { invTransform._11, invTransform._12, 0, 0, + invTransform._21, invTransform._22, 0, 0, + invTransform._31, invTransform._32, 1.0f, 0, + 0, 0, 0, 1.0f }; + + mPrivateData->mEffect->GetVariableByName("DeviceSpaceToUserSpace")-> + AsMatrix()->SetMatrix(matrix); + + float A = dc.x * dc.x + dc.y * dc.y - dr * dr; + if (A == 0) { + mPrivateData->mEffect->GetTechniqueByName("SampleRadialGradient")-> + GetPassByIndex(1)->Apply(0); + } else { + mPrivateData->mEffect->GetVariableByName("A")->AsScalar()->SetFloat(A); + mPrivateData->mEffect->GetTechniqueByName("SampleRadialGradient")-> + GetPassByIndex(0)->Apply(0); + } +} + ID2D1Factory* DrawTargetD2D::factory() { diff --git a/gfx/2d/DrawTargetD2D.h b/gfx/2d/DrawTargetD2D.h index 10639f66d90..8b8e941706d 100644 --- a/gfx/2d/DrawTargetD2D.h +++ b/gfx/2d/DrawTargetD2D.h @@ -50,6 +50,7 @@ namespace mozilla { namespace gfx { class SourceSurfaceD2DTarget; +class GradientStopsD2D; struct PrivateD3D10DataD2D { @@ -154,9 +155,8 @@ private: void MarkChanged(); ID3D10BlendState *GetBlendStateForOperator(CompositionOp aOperator); - ID2D1RenderTarget *GetRTForOperator(CompositionOp aOperator); - void FinalizeRTForOperator(CompositionOp aOperator, const Rect &aBounds); - void EnsureViews(); + ID2D1RenderTarget *GetRTForOperation(CompositionOp aOperator, const Pattern &aPattern); + void FinalizeRTForOperation(CompositionOp aOperator, const Pattern &aPattern, const Rect &aBounds); void EnsureViews(); void PopAllClips(); TemporaryRef CreateRTForTexture(ID3D10Texture2D *aTexture); @@ -165,6 +165,12 @@ private: TemporaryRef CreateBrushForPattern(const Pattern &aPattern, Float aAlpha = 1.0f); TemporaryRef CreateStrokeStyleForOptions(const StrokeOptions &aStrokeOptions); + TemporaryRef CreateGradientTexture(const GradientStopsD2D *aStops); + + void SetupEffectForRadialGradient(const RadialGradientPattern *aPattern); + + static const uint32_t test = 4; + IntSize mSize; RefPtr mDevice; diff --git a/gfx/2d/HelpersD2D.h b/gfx/2d/HelpersD2D.h index a1c1a0a5d97..c3f013d7eea 100644 --- a/gfx/2d/HelpersD2D.h +++ b/gfx/2d/HelpersD2D.h @@ -151,6 +151,29 @@ static inline int BytesPerPixel(SurfaceFormat aFormat) } } +static bool IsPatternSupportedByD2D(const Pattern &aPattern) +{ + if (aPattern.GetType() != PATTERN_RADIAL_GRADIENT) { + return false; + } + + const RadialGradientPattern *pat = + static_cast(&aPattern); + + if (pat->mRadius1 != 0) { + return true; + } + + Point diff = pat->mCenter2 - pat->mCenter1; + + if (sqrt(diff.x * diff.x + diff.y * diff.y) >= pat->mRadius2) { + // Inner point lies outside the circle. + return true; + } + + return false; +} + /** * This structure is used to pass rectangles to our shader constant. We can use * this for passing rectangular areas to SetVertexShaderConstant. In the format diff --git a/gfx/2d/ShadersD2D.fx b/gfx/2d/ShadersD2D.fx index 6ed1857f958..03fe105eab3 100644 --- a/gfx/2d/ShadersD2D.fx +++ b/gfx/2d/ShadersD2D.fx @@ -24,6 +24,18 @@ cbuffer cb1 float4 ShadowColor; } +cbuffer cb2 +{ + float3x3 DeviceSpaceToUserSpace; + float2 dimensions; + // Precalculate as much as we can! + float3 diff; + float2 center1; + float A; + float radius1; + float sq_radius1; +} + struct VS_OUTPUT { float4 Position : SV_Position; @@ -31,6 +43,13 @@ struct VS_OUTPUT float2 MaskTexCoord : TEXCOORD1; }; +struct VS_RADIAL_OUTPUT +{ + float4 Position : SV_Position; + float2 MaskTexCoord : TEXCOORD0; + float2 PixelCoord : TEXCOORD1; +}; + Texture2D tex; Texture2D mask; @@ -94,6 +113,25 @@ VS_OUTPUT SampleTextureVS(float3 pos : POSITION) return Output; } +VS_RADIAL_OUTPUT SampleRadialVS(float3 pos : POSITION) +{ + VS_RADIAL_OUTPUT Output; + Output.Position.w = 1.0f; + Output.Position.x = pos.x * QuadDesc.z + QuadDesc.x; + Output.Position.y = pos.y * QuadDesc.w + QuadDesc.y; + Output.Position.z = 0; + Output.MaskTexCoord.x = pos.x * MaskTexCoords.z + MaskTexCoords.x; + Output.MaskTexCoord.y = pos.y * MaskTexCoords.w + MaskTexCoords.y; + + // For the radial gradient pixel shader we need to pass in the pixel's + // coordinates in user space for the color to be correctly determined. + + Output.PixelCoord.x = ((Output.Position.x + 1.0f) / 2.0f) * dimensions.x; + Output.PixelCoord.y = ((1.0f - Output.Position.y) / 2.0f) * dimensions.y; + Output.PixelCoord.xy = mul(float3(Output.PixelCoord.x, Output.PixelCoord.y, 1.0f), DeviceSpaceToUserSpace).xy; + return Output; +} + float4 SampleTexturePS( VS_OUTPUT In) : SV_Target { return tex.Sample(sSampler, In.TexCoord); @@ -104,6 +142,68 @@ float4 SampleMaskTexturePS( VS_OUTPUT In) : SV_Target return tex.Sample(sSampler, In.TexCoord) * mask.Sample(sMaskSampler, In.MaskTexCoord).a; }; +float4 SampleRadialGradientPS( VS_RADIAL_OUTPUT In) : SV_Target +{ + // Radial gradient painting is defined as the set of circles whose centers + // are described by C(t) = (C2 - C1) * t + C1; with radii + // R(t) = (R2 - R1) * t + R1; for R(t) > 0. This shader solves the + // quadratic equation that arises when calculating t for pixel (x, y). + // + // A more extensive derrivation can be found in the pixman radial gradient + // code. + + float2 p = In.PixelCoord; + float3 dp = float3(p - center1, radius1); + + // dpx * dcx + dpy * dcy + r * dr + float B = dot(dp, diff); + + float C = pow(dp.x, 2) + pow(dp.y, 2) - sq_radius1; + + float det = pow(B, 2) - A * C; + + if (det < 0) { + return float4(0, 0, 0, 0); + } + + float sqrt_det = sqrt(abs(det)); + + float2 t = (B + float2(sqrt_det, -sqrt_det)) / A; + + float2 isValid = step(float2(-radius1, -radius1), t * diff.z); + + if (max(isValid.x, isValid.y) <= 0) { + return float4(0, 0, 0, 0); + } + + float upper_t = lerp(t.y, t.x, isValid.x); + + // Multiply the output color by the input mask for the operation. + return tex.Sample(sSampler, float2(upper_t, 0.5)) * mask.Sample(sMaskSampler, In.MaskTexCoord).a; +}; + +float4 SampleRadialGradientA0PS( VS_RADIAL_OUTPUT In) : SV_Target +{ + // This simpler shader is used for the degenerate case where A is 0, + // i.e. we're actually solving a linear equation. + + float2 p = In.PixelCoord; + float3 dp = float3(p - center1, radius1); + + // dpx * dcx + dpy * dcy + r * dr + float B = dot(dp, diff); + + float C = pow(dp.x, 2) + pow(dp.y, 2) - pow(radius1, 2); + + float t = 0.5 * C / B; + + if (-radius1 >= t * diff.z) { + return float4(0, 0, 0, 0); + } + + return tex.Sample(sSampler, float2(t, 0.5)) * mask.Sample(sMaskSampler, In.MaskTexCoord).a; +}; + float4 SampleShadowHPS( VS_OUTPUT In) : SV_Target { float outputStrength = 0; @@ -166,6 +266,24 @@ technique10 SampleTexture } } +technique10 SampleRadialGradient +{ + pass P0 + { + SetRasterizerState(TextureRast); + SetVertexShader(CompileShader(vs_4_0_level_9_3, SampleRadialVS())); + SetGeometryShader(NULL); + SetPixelShader(CompileShader(ps_4_0_level_9_3, SampleRadialGradientPS())); + } + pass P1 + { + SetRasterizerState(TextureRast); + SetVertexShader(CompileShader(vs_4_0_level_9_3, SampleRadialVS())); + SetGeometryShader(NULL); + SetPixelShader(CompileShader(ps_4_0_level_9_3, SampleRadialGradientA0PS())); + } +} + technique10 SampleMaskedTexture { pass P0 diff --git a/gfx/2d/ShadersD2D.h b/gfx/2d/ShadersD2D.h index 0fb81d755c6..233abed38b8 100644 --- a/gfx/2d/ShadersD2D.h +++ b/gfx/2d/ShadersD2D.h @@ -3,7 +3,7 @@ // FX Version: fx_4_0 // Child effect (requires effect pool): false // -// 2 local buffer(s) +// 3 local buffer(s) // cbuffer cb0 { @@ -20,6 +20,17 @@ cbuffer cb1 float4 ShadowColor; // Offset: 144, size: 16 } +cbuffer cb2 +{ + float3x3 DeviceSpaceToUserSpace; // Offset: 0, size: 44 + float2 dimensions; // Offset: 48, size: 8 + float3 diff; // Offset: 64, size: 12 + float2 center1; // Offset: 80, size: 8 + float A; // Offset: 88, size: 4 + float radius1; // Offset: 92, size: 4 + float sq_radius1; // Offset: 96, size: 4 +} + // // 8 local object(s) // @@ -70,7 +81,7 @@ BlendState ShadowBlendV }; // -// 3 technique(s) +// 4 technique(s) // technique10 SampleTexture { @@ -219,6 +230,517 @@ technique10 SampleTexture } +technique10 SampleRadialGradient +{ + pass P0 + { + RasterizerState = TextureRast; + VertexShader = asm { + // + // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 + // + // + // Buffer Definitions: + // + // cbuffer cb0 + // { + // + // float4 QuadDesc; // Offset: 0 Size: 16 + // float4 TexCoords; // Offset: 16 Size: 16 [unused] + // float4 MaskTexCoords; // Offset: 32 Size: 16 + // + // } + // + // cbuffer cb2 + // { + // + // float3x3 DeviceSpaceToUserSpace; // Offset: 0 Size: 44 + // float2 dimensions; // Offset: 48 Size: 8 + // float3 diff; // Offset: 64 Size: 12 [unused] + // float2 center1; // Offset: 80 Size: 8 [unused] + // float A; // Offset: 88 Size: 4 [unused] + // float radius1; // Offset: 92 Size: 4 [unused] + // float sq_radius1; // Offset: 96 Size: 4 [unused] + // + // } + // + // + // Resource Bindings: + // + // Name Type Format Dim Slot Elements + // ------------------------------ ---------- ------- ----------- ---- -------- + // cb0 cbuffer NA NA 0 1 + // cb2 cbuffer NA NA 1 1 + // + // + // + // Input signature: + // + // Name Index Mask Register SysValue Format Used + // -------------------- ----- ------ -------- -------- ------ ------ + // POSITION 0 xyz 0 NONE float xy + // + // + // Output signature: + // + // Name Index Mask Register SysValue Format Used + // -------------------- ----- ------ -------- -------- ------ ------ + // SV_Position 0 xyzw 0 POS float xyzw + // TEXCOORD 0 xy 1 NONE float xy + // TEXCOORD 1 zw 1 NONE float zw + // + // + // Constant buffer to DX9 shader constant mappings: + // + // Target Reg Buffer Start Reg # of Regs Data Conversion + // ---------- ------- --------- --------- ---------------------- + // c1 cb0 0 1 ( FLT, FLT, FLT, FLT) + // c2 cb0 2 1 ( FLT, FLT, FLT, FLT) + // c3 cb1 0 2 ( FLT, FLT, FLT, FLT) + // c5 cb1 3 1 ( FLT, FLT, FLT, FLT) + // + // + // Runtime generated constant mappings: + // + // Target Reg Constant Description + // ---------- -------------------------------------------------- + // c0 Vertex Shader position offset + // + // + // Level9 shader bytecode: + // + vs_2_x + def c6, 1, 0.5, 0, 0 + dcl_texcoord v0 + mad oT0.xy, v0, c2.zwzw, c2 + mad r0.xy, v0, c1.zwzw, c1 + add r0.z, r0.x, c6.x + mul r0.z, r0.z, c5.x + mul r1.x, r0.z, c6.y + add r0.z, -r0.y, c6.x + add oPos.xy, r0, c0 + mul r0.x, r0.z, c5.y + mul r1.y, r0.x, c6.y + mov r1.z, c6.x + dp3 oT0.w, r1, c3 + dp3 oT0.z, r1, c4 + mov oPos.zw, c6.xyzx + + // approximately 13 instruction slots used + vs_4_0 + dcl_constantbuffer cb0[3], immediateIndexed + dcl_constantbuffer cb1[4], immediateIndexed + dcl_input v0.xy + dcl_output_siv o0.xyzw, position + dcl_output o1.xy + dcl_output o1.zw + dcl_temps 2 + mov o0.zw, l(0,0,0,1.000000) + mad r0.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx + mov o0.xy, r0.xyxx + add r0.x, r0.x, l(1.000000) + add r0.y, -r0.y, l(1.000000) + mul r0.xy, r0.xyxx, cb1[3].xyxx + mul r1.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r1.z, l(1.000000) + dp3 o1.z, r1.xyzx, cb1[0].xyzx + dp3 o1.w, r1.xyzx, cb1[1].xyzx + mad o1.xy, v0.xyxx, cb0[2].zwzz, cb0[2].xyxx + ret + // Approximately 12 instruction slots used + + }; + GeometryShader = NULL; + PixelShader = asm { + // + // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 + // + // + // Buffer Definitions: + // + // cbuffer cb2 + // { + // + // float3x3 DeviceSpaceToUserSpace; // Offset: 0 Size: 44 [unused] + // float2 dimensions; // Offset: 48 Size: 8 [unused] + // float3 diff; // Offset: 64 Size: 12 + // float2 center1; // Offset: 80 Size: 8 + // float A; // Offset: 88 Size: 4 + // float radius1; // Offset: 92 Size: 4 + // float sq_radius1; // Offset: 96 Size: 4 + // + // } + // + // + // Resource Bindings: + // + // Name Type Format Dim Slot Elements + // ------------------------------ ---------- ------- ----------- ---- -------- + // sSampler sampler NA NA 0 1 + // sMaskSampler sampler NA NA 1 1 + // tex texture float4 2d 0 1 + // mask texture float4 2d 1 1 + // cb2 cbuffer NA NA 0 1 + // + // + // + // Input signature: + // + // Name Index Mask Register SysValue Format Used + // -------------------- ----- ------ -------- -------- ------ ------ + // SV_Position 0 xyzw 0 POS float + // TEXCOORD 0 xy 1 NONE float xy + // TEXCOORD 1 zw 1 NONE float zw + // + // + // Output signature: + // + // Name Index Mask Register SysValue Format Used + // -------------------- ----- ------ -------- -------- ------ ------ + // SV_Target 0 xyzw 0 TARGET float xyzw + // + // + // Constant buffer to DX9 shader constant mappings: + // + // Target Reg Buffer Start Reg # of Regs Data Conversion + // ---------- ------- --------- --------- ---------------------- + // c0 cb0 4 3 ( FLT, FLT, FLT, FLT) + // + // + // Sampler/Resource to DX9 shader sampler mappings: + // + // Target Sampler Source Sampler Source Resource + // -------------- --------------- ---------------- + // s0 s0 t0 + // s1 s1 t1 + // + // + // Level9 shader bytecode: + // + ps_2_x + def c3, 0.5, 0, 0, 0 + def c4, 1, -1, 0, -0 + dcl t0 + dcl_2d s0 + dcl_2d s1 + add r0.xy, t0.wzzw, -c1 + dp2add r0.w, r0, r0, -c2.x + mul r0.w, r0.w, c1.z + mov r0.z, c1.w + dp3 r0.x, r0, c0 + mad r0.y, r0.x, r0.x, -r0.w + abs r0.z, r0.y + rsq r0.z, r0.z + rcp r1.x, r0.z + mov r1.yz, -r1.x + add r0.xzw, r0.x, r1.xyyz + rcp r1.x, c1.z + mul r0.xzw, r0, r1.x + mov r1.w, c1.w + mad r1.xyz, r0.xzww, c0.z, r1.w + cmp r2.x, r1.x, r0.x, r0.w + cmp r0.xzw, r1.xyyz, c4.xyxy, c4.zyzw + mov r2.y, c3.x + texld r1, t0, s1 + texld r2, r2, s0 + mul r1, r1.w, r2 + add r0.w, r0.w, r0.x + cmp r0.x, r0.w, r0.x, r0.z + cmp r1, -r0.x, c4.z, r1 + cmp r0, r0.y, r1, c4.z + mov oC0, r0 + + // approximately 27 instruction slots used (2 texture, 25 arithmetic) + ps_4_0 + dcl_constantbuffer cb0[7], immediateIndexed + dcl_sampler s0, mode_default + dcl_sampler s1, mode_default + dcl_resource_texture2d (float,float,float,float) t0 + dcl_resource_texture2d (float,float,float,float) t1 + dcl_input_ps linear v1.xy + dcl_input_ps linear v1.zw + dcl_output o0.xyzw + dcl_temps 3 + add r0.xy, v1.zwzz, -cb0[5].xyxx + mov r0.z, cb0[5].w + dp3 r0.z, r0.xyzx, cb0[4].xyzx + dp2 r0.x, r0.xyxx, r0.xyxx + add r0.x, r0.x, -cb0[6].x + mul r0.x, r0.x, cb0[5].z + mad r0.x, r0.z, r0.z, -r0.x + lt r0.y, r0.x, l(0.000000) + sqrt r1.x, |r0.x| + mov r1.y, -r1.x + add r0.xz, r0.zzzz, r1.xxyx + div r0.xz, r0.xxzx, cb0[5].zzzz + mul r1.xy, r0.xzxx, cb0[4].zzzz + ge r1.xy, r1.xyxx, -cb0[5].wwww + and r1.xy, r1.xyxx, l(0x3f800000, 0x3f800000, 0, 0) + add r0.x, -r0.z, r0.x + mad r2.x, r1.x, r0.x, r0.z + mov r2.y, l(0.500000) + sample r2.xyzw, r2.xyxx, t0.xyzw, s0 + if_nz r0.y + mov o0.xyzw, l(0,0,0,0) + ret + endif + max r0.x, r1.y, r1.x + ge r0.x, l(0.000000), r0.x + if_nz r0.x + mov o0.xyzw, l(0,0,0,0) + ret + endif + sample r0.xyzw, v1.xyxx, t1.xyzw, s1 + mul o0.xyzw, r0.wwww, r2.xyzw + ret + // Approximately 32 instruction slots used + + }; + } + + pass P1 + { + RasterizerState = TextureRast; + VertexShader = asm { + // + // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 + // + // + // Buffer Definitions: + // + // cbuffer cb0 + // { + // + // float4 QuadDesc; // Offset: 0 Size: 16 + // float4 TexCoords; // Offset: 16 Size: 16 [unused] + // float4 MaskTexCoords; // Offset: 32 Size: 16 + // + // } + // + // cbuffer cb2 + // { + // + // float3x3 DeviceSpaceToUserSpace; // Offset: 0 Size: 44 + // float2 dimensions; // Offset: 48 Size: 8 + // float3 diff; // Offset: 64 Size: 12 [unused] + // float2 center1; // Offset: 80 Size: 8 [unused] + // float A; // Offset: 88 Size: 4 [unused] + // float radius1; // Offset: 92 Size: 4 [unused] + // float sq_radius1; // Offset: 96 Size: 4 [unused] + // + // } + // + // + // Resource Bindings: + // + // Name Type Format Dim Slot Elements + // ------------------------------ ---------- ------- ----------- ---- -------- + // cb0 cbuffer NA NA 0 1 + // cb2 cbuffer NA NA 1 1 + // + // + // + // Input signature: + // + // Name Index Mask Register SysValue Format Used + // -------------------- ----- ------ -------- -------- ------ ------ + // POSITION 0 xyz 0 NONE float xy + // + // + // Output signature: + // + // Name Index Mask Register SysValue Format Used + // -------------------- ----- ------ -------- -------- ------ ------ + // SV_Position 0 xyzw 0 POS float xyzw + // TEXCOORD 0 xy 1 NONE float xy + // TEXCOORD 1 zw 1 NONE float zw + // + // + // Constant buffer to DX9 shader constant mappings: + // + // Target Reg Buffer Start Reg # of Regs Data Conversion + // ---------- ------- --------- --------- ---------------------- + // c1 cb0 0 1 ( FLT, FLT, FLT, FLT) + // c2 cb0 2 1 ( FLT, FLT, FLT, FLT) + // c3 cb1 0 2 ( FLT, FLT, FLT, FLT) + // c5 cb1 3 1 ( FLT, FLT, FLT, FLT) + // + // + // Runtime generated constant mappings: + // + // Target Reg Constant Description + // ---------- -------------------------------------------------- + // c0 Vertex Shader position offset + // + // + // Level9 shader bytecode: + // + vs_2_x + def c6, 1, 0.5, 0, 0 + dcl_texcoord v0 + mad oT0.xy, v0, c2.zwzw, c2 + mad r0.xy, v0, c1.zwzw, c1 + add r0.z, r0.x, c6.x + mul r0.z, r0.z, c5.x + mul r1.x, r0.z, c6.y + add r0.z, -r0.y, c6.x + add oPos.xy, r0, c0 + mul r0.x, r0.z, c5.y + mul r1.y, r0.x, c6.y + mov r1.z, c6.x + dp3 oT0.w, r1, c3 + dp3 oT0.z, r1, c4 + mov oPos.zw, c6.xyzx + + // approximately 13 instruction slots used + vs_4_0 + dcl_constantbuffer cb0[3], immediateIndexed + dcl_constantbuffer cb1[4], immediateIndexed + dcl_input v0.xy + dcl_output_siv o0.xyzw, position + dcl_output o1.xy + dcl_output o1.zw + dcl_temps 2 + mov o0.zw, l(0,0,0,1.000000) + mad r0.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx + mov o0.xy, r0.xyxx + add r0.x, r0.x, l(1.000000) + add r0.y, -r0.y, l(1.000000) + mul r0.xy, r0.xyxx, cb1[3].xyxx + mul r1.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r1.z, l(1.000000) + dp3 o1.z, r1.xyzx, cb1[0].xyzx + dp3 o1.w, r1.xyzx, cb1[1].xyzx + mad o1.xy, v0.xyxx, cb0[2].zwzz, cb0[2].xyxx + ret + // Approximately 12 instruction slots used + + }; + GeometryShader = NULL; + PixelShader = asm { + // + // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 + // + // + // Buffer Definitions: + // + // cbuffer cb2 + // { + // + // float3x3 DeviceSpaceToUserSpace; // Offset: 0 Size: 44 [unused] + // float2 dimensions; // Offset: 48 Size: 8 [unused] + // float3 diff; // Offset: 64 Size: 12 + // float2 center1; // Offset: 80 Size: 8 + // float A; // Offset: 88 Size: 4 [unused] + // float radius1; // Offset: 92 Size: 4 + // float sq_radius1; // Offset: 96 Size: 4 [unused] + // + // } + // + // + // Resource Bindings: + // + // Name Type Format Dim Slot Elements + // ------------------------------ ---------- ------- ----------- ---- -------- + // sSampler sampler NA NA 0 1 + // sMaskSampler sampler NA NA 1 1 + // tex texture float4 2d 0 1 + // mask texture float4 2d 1 1 + // cb2 cbuffer NA NA 0 1 + // + // + // + // Input signature: + // + // Name Index Mask Register SysValue Format Used + // -------------------- ----- ------ -------- -------- ------ ------ + // SV_Position 0 xyzw 0 POS float + // TEXCOORD 0 xy 1 NONE float xy + // TEXCOORD 1 zw 1 NONE float zw + // + // + // Output signature: + // + // Name Index Mask Register SysValue Format Used + // -------------------- ----- ------ -------- -------- ------ ------ + // SV_Target 0 xyzw 0 TARGET float xyzw + // + // + // Constant buffer to DX9 shader constant mappings: + // + // Target Reg Buffer Start Reg # of Regs Data Conversion + // ---------- ------- --------- --------- ---------------------- + // c0 cb0 4 2 ( FLT, FLT, FLT, FLT) + // + // + // Sampler/Resource to DX9 shader sampler mappings: + // + // Target Sampler Source Sampler Source Resource + // -------------- --------------- ---------------- + // s0 s0 t0 + // s1 s1 t1 + // + // + // Level9 shader bytecode: + // + ps_2_x + def c2, 0.5, 0, 0, 0 + dcl t0 + dcl_2d s0 + dcl_2d s1 + mul r0.w, c1.w, c1.w + add r0.xy, t0.wzzw, -c1 + dp2add r0.w, r0, r0, -r0.w + mul r0.w, r0.w, c2.x + mov r0.z, c1.w + dp3 r0.x, r0, c0 + rcp r0.x, r0.x + mul r0.x, r0.x, r0.w + mov r0.y, c2.x + texld r1, t0, s1 + texld r2, r0, s0 + mov r0.w, c1.w + mad r0.x, r0.x, -c0.z, -r0.w + mul r1, r1.w, r2 + cmp r0, r0.x, c2.y, r1 + mov oC0, r0 + + // approximately 17 instruction slots used (2 texture, 15 arithmetic) + ps_4_0 + dcl_constantbuffer cb0[6], immediateIndexed + dcl_sampler s0, mode_default + dcl_sampler s1, mode_default + dcl_resource_texture2d (float,float,float,float) t0 + dcl_resource_texture2d (float,float,float,float) t1 + dcl_input_ps linear v1.xy + dcl_input_ps linear v1.zw + dcl_output o0.xyzw + dcl_temps 2 + add r0.xy, v1.zwzz, -cb0[5].xyxx + mov r0.z, cb0[5].w + dp3 r0.z, r0.xyzx, cb0[4].xyzx + dp2 r0.x, r0.xyxx, r0.xyxx + mad r0.x, -cb0[5].w, cb0[5].w, r0.x + mul r0.x, r0.x, l(0.500000) + div r0.x, r0.x, r0.z + mul r0.z, r0.x, cb0[4].z + ge r0.z, -cb0[5].w, r0.z + mov r0.y, l(0.500000) + sample r1.xyzw, r0.xyxx, t0.xyzw, s0 + if_nz r0.z + mov o0.xyzw, l(0,0,0,0) + ret + endif + sample r0.xyzw, v1.xyxx, t1.xyzw, s1 + mul o0.xyzw, r0.wwww, r1.xyzw + ret + // Approximately 18 instruction slots used + + }; + } + +} + technique10 SampleMaskedTexture { pass P0 @@ -1095,26 +1617,26 @@ technique10 SampleTextureWithShadow const BYTE d2deffect[] = { - 68, 88, 66, 67, 244, 198, - 222, 61, 43, 19, 42, 56, - 130, 197, 151, 242, 151, 57, - 208, 42, 1, 0, 0, 0, - 175, 67, 0, 0, 1, 0, + 68, 88, 66, 67, 85, 69, + 6, 83, 35, 167, 246, 209, + 147, 86, 117, 76, 228, 140, + 253, 202, 1, 0, 0, 0, + 169, 101, 0, 0, 1, 0, 0, 0, 36, 0, 0, 0, - 70, 88, 49, 48, 131, 67, + 70, 88, 49, 48, 125, 101, 0, 0, 1, 16, 255, 254, - 2, 0, 0, 0, 7, 0, + 3, 0, 0, 0, 14, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 203, 61, + 4, 0, 0, 0, 69, 94, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, - 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 14, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 99, 98, 48, 0, 102, 108, 111, 97, 116, 52, 0, 8, 0, 0, @@ -1141,145 +1663,516 @@ const BYTE d2deffect[] = 87, 101, 105, 103, 104, 116, 115, 0, 83, 104, 97, 100, 111, 119, 67, 111, 108, 111, - 114, 0, 84, 101, 120, 116, - 117, 114, 101, 50, 68, 0, - 158, 0, 0, 0, 2, 0, + 114, 0, 99, 98, 50, 0, + 102, 108, 111, 97, 116, 51, + 120, 51, 0, 162, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 0, 44, 0, 0, + 0, 48, 0, 0, 0, 36, + 0, 0, 0, 11, 91, 0, + 0, 68, 101, 118, 105, 99, + 101, 83, 112, 97, 99, 101, + 84, 111, 85, 115, 101, 114, + 83, 112, 97, 99, 101, 0, + 102, 108, 111, 97, 116, 50, + 0, 222, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 16, + 0, 0, 0, 8, 0, 0, + 0, 10, 17, 0, 0, 100, + 105, 109, 101, 110, 115, 105, + 111, 110, 115, 0, 102, 108, + 111, 97, 116, 51, 0, 12, + 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 12, + 0, 0, 0, 16, 0, 0, + 0, 12, 0, 0, 0, 10, + 25, 0, 0, 100, 105, 102, + 102, 0, 99, 101, 110, 116, + 101, 114, 49, 0, 102, 108, + 111, 97, 116, 0, 60, 1, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 16, 0, 0, 0, + 4, 0, 0, 0, 9, 9, + 0, 0, 65, 0, 114, 97, + 100, 105, 117, 115, 49, 0, + 115, 113, 95, 114, 97, 100, + 105, 117, 115, 49, 0, 84, + 101, 120, 116, 117, 114, 101, + 50, 68, 0, 115, 1, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 116, 101, - 120, 0, 109, 97, 115, 107, - 0, 83, 97, 109, 112, 108, - 101, 114, 83, 116, 97, 116, - 101, 0, 205, 0, 0, 0, - 2, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 0, 0, + 0, 116, 101, 120, 0, 109, + 97, 115, 107, 0, 83, 97, + 109, 112, 108, 101, 114, 83, + 116, 97, 116, 101, 0, 162, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 21, + 0, 0, 0, 115, 83, 97, + 109, 112, 108, 101, 114, 0, + 1, 0, 0, 0, 2, 0, 0, 0, 21, 0, 0, 0, - 115, 83, 97, 109, 112, 108, - 101, 114, 0, 1, 0, 0, - 0, 2, 0, 0, 0, 21, - 0, 0, 0, 1, 0, 0, - 0, 2, 0, 0, 0, 3, - 0, 0, 0, 1, 0, 0, - 0, 2, 0, 0, 0, 3, - 0, 0, 0, 115, 77, 97, - 115, 107, 83, 97, 109, 112, - 108, 101, 114, 0, 1, 0, - 0, 0, 2, 0, 0, 0, - 21, 0, 0, 0, 1, 0, - 0, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 1, 0, - 0, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 115, 83, - 104, 97, 100, 111, 119, 83, + 1, 0, 0, 0, 2, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 3, 0, 0, 0, + 115, 77, 97, 115, 107, 83, 97, 109, 112, 108, 101, 114, 0, 1, 0, 0, 0, 2, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 2, - 0, 0, 0, 4, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 2, - 0, 0, 0, 4, 0, 0, - 0, 4, 0, 0, 0, 1, + 0, 0, 0, 3, 0, 0, + 0, 115, 83, 104, 97, 100, + 111, 119, 83, 97, 109, 112, + 108, 101, 114, 0, 1, 0, + 0, 0, 2, 0, 0, 0, + 21, 0, 0, 0, 1, 0, + 0, 0, 2, 0, 0, 0, + 4, 0, 0, 0, 1, 0, + 0, 0, 2, 0, 0, 0, + 4, 0, 0, 0, 4, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, - 0, 82, 97, 115, 116, 101, - 114, 105, 122, 101, 114, 83, - 116, 97, 116, 101, 0, 171, - 1, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, - 0, 0, 0, 84, 101, 120, - 116, 117, 114, 101, 82, 97, - 115, 116, 0, 1, 0, 0, - 0, 2, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 2, 0, 0, 0, 1, - 0, 0, 0, 66, 108, 101, - 110, 100, 83, 116, 97, 116, - 101, 0, 251, 1, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 82, 97, + 115, 116, 101, 114, 105, 122, + 101, 114, 83, 116, 97, 116, + 101, 0, 128, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 84, 101, 120, 116, 117, 114, + 101, 82, 97, 115, 116, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 1, 0, 0, 0, + 66, 108, 101, 110, 100, 83, + 116, 97, 116, 101, 0, 208, + 2, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, + 0, 0, 0, 83, 104, 97, + 100, 111, 119, 66, 108, 101, + 110, 100, 72, 0, 1, 0, 0, 0, 2, 0, 0, 0, - 83, 104, 97, 100, 111, 119, - 66, 108, 101, 110, 100, 72, - 0, 1, 0, 0, 0, 2, + 0, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 15, 0, 0, 0, 83, 104, + 97, 100, 111, 119, 66, 108, + 101, 110, 100, 86, 0, 1, + 0, 0, 0, 2, 0, 0, + 0, 1, 0, 0, 0, 1, + 0, 0, 0, 2, 0, 0, + 0, 2, 0, 0, 0, 1, + 0, 0, 0, 2, 0, 0, + 0, 6, 0, 0, 0, 1, + 0, 0, 0, 2, 0, 0, + 0, 1, 0, 0, 0, 1, + 0, 0, 0, 2, 0, 0, + 0, 2, 0, 0, 0, 1, + 0, 0, 0, 2, 0, 0, + 0, 6, 0, 0, 0, 1, + 0, 0, 0, 2, 0, 0, + 0, 1, 0, 0, 0, 1, + 0, 0, 0, 3, 0, 0, + 0, 15, 0, 0, 0, 83, + 97, 109, 112, 108, 101, 84, + 101, 120, 116, 117, 114, 101, + 0, 80, 48, 0, 36, 4, + 0, 0, 68, 88, 66, 67, + 116, 139, 68, 62, 73, 113, + 92, 4, 72, 76, 225, 161, + 30, 132, 222, 233, 1, 0, + 0, 0, 36, 4, 0, 0, + 6, 0, 0, 0, 56, 0, + 0, 0, 248, 0, 0, 0, + 244, 1, 0, 0, 112, 2, + 0, 0, 128, 3, 0, 0, + 180, 3, 0, 0, 65, 111, + 110, 57, 184, 0, 0, 0, + 184, 0, 0, 0, 0, 2, + 254, 255, 132, 0, 0, 0, + 52, 0, 0, 0, 1, 0, + 36, 0, 0, 0, 48, 0, + 0, 0, 48, 0, 0, 0, + 36, 0, 1, 0, 48, 0, + 0, 0, 0, 0, 3, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, + 254, 255, 81, 0, 0, 5, + 4, 0, 15, 160, 0, 0, + 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 3, - 0, 0, 0, 15, 0, 0, - 0, 83, 104, 97, 100, 111, - 119, 66, 108, 101, 110, 100, - 86, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 2, 0, - 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 6, 0, - 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 2, 0, - 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 6, 0, - 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 15, 0, - 0, 0, 83, 97, 109, 112, - 108, 101, 84, 101, 120, 116, - 117, 114, 101, 0, 80, 48, - 0, 36, 4, 0, 0, 68, - 88, 66, 67, 116, 139, 68, - 62, 73, 113, 92, 4, 72, - 76, 225, 161, 30, 132, 222, - 233, 1, 0, 0, 0, 36, - 4, 0, 0, 6, 0, 0, - 0, 56, 0, 0, 0, 248, - 0, 0, 0, 244, 1, 0, - 0, 112, 2, 0, 0, 128, - 3, 0, 0, 180, 3, 0, - 0, 65, 111, 110, 57, 184, - 0, 0, 0, 184, 0, 0, - 0, 0, 2, 254, 255, 132, - 0, 0, 0, 52, 0, 0, - 0, 1, 0, 36, 0, 0, - 0, 48, 0, 0, 0, 48, - 0, 0, 0, 36, 0, 1, - 0, 48, 0, 0, 0, 0, - 0, 3, 0, 1, 0, 0, + 0, 0, 31, 0, 0, 2, + 5, 0, 0, 128, 0, 0, + 15, 144, 4, 0, 0, 4, + 0, 0, 3, 224, 0, 0, + 228, 144, 2, 0, 238, 160, + 2, 0, 228, 160, 4, 0, + 0, 4, 0, 0, 12, 224, + 0, 0, 20, 144, 3, 0, + 180, 160, 3, 0, 20, 160, + 4, 0, 0, 4, 0, 0, + 3, 128, 0, 0, 228, 144, + 1, 0, 238, 160, 1, 0, + 228, 160, 2, 0, 0, 3, + 0, 0, 3, 192, 0, 0, + 228, 128, 0, 0, 228, 160, + 1, 0, 0, 2, 0, 0, + 12, 192, 4, 0, 68, 160, + 255, 255, 0, 0, 83, 72, + 68, 82, 244, 0, 0, 0, + 64, 0, 1, 0, 61, 0, + 0, 0, 89, 0, 0, 4, + 70, 142, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 95, 0, 0, 3, 50, 16, + 16, 0, 0, 0, 0, 0, + 103, 0, 0, 4, 242, 32, + 16, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 50, 32, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 194, 32, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 50, 32, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 230, 138, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 2, 254, 255, 81, - 0, 0, 5, 4, 0, 15, - 160, 0, 0, 0, 0, 0, - 0, 128, 63, 0, 0, 0, - 0, 0, 0, 0, 0, 31, - 0, 0, 2, 5, 0, 0, - 128, 0, 0, 15, 144, 4, - 0, 0, 4, 0, 0, 3, - 224, 0, 0, 228, 144, 2, - 0, 238, 160, 2, 0, 228, - 160, 4, 0, 0, 4, 0, - 0, 12, 224, 0, 0, 20, - 144, 3, 0, 180, 160, 3, - 0, 20, 160, 4, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 32, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 11, + 50, 32, 16, 0, 1, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 194, 32, 16, 0, + 1, 0, 0, 0, 6, 20, + 16, 0, 0, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 116, 0, 0, 0, + 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 82, 68, 69, 70, + 8, 1, 0, 0, 1, 0, + 0, 0, 64, 0, 0, 0, + 1, 0, 0, 0, 28, 0, + 0, 0, 0, 4, 254, 255, + 0, 1, 0, 0, 212, 0, + 0, 0, 60, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 99, 98, + 48, 0, 60, 0, 0, 0, + 3, 0, 0, 0, 88, 0, + 0, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 160, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, + 172, 0, 0, 0, 0, 0, + 0, 0, 188, 0, 0, 0, + 16, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, + 172, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, + 32, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, + 172, 0, 0, 0, 0, 0, + 0, 0, 81, 117, 97, 100, + 68, 101, 115, 99, 0, 171, + 171, 171, 1, 0, 3, 0, + 1, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 84, 101, 120, 67, 111, 111, + 114, 100, 115, 0, 77, 97, + 115, 107, 84, 101, 120, 67, + 111, 111, 114, 100, 115, 0, + 77, 105, 99, 114, 111, 115, + 111, 102, 116, 32, 40, 82, + 41, 32, 72, 76, 83, 76, + 32, 83, 104, 97, 100, 101, + 114, 32, 67, 111, 109, 112, + 105, 108, 101, 114, 32, 57, + 46, 50, 57, 46, 57, 53, + 50, 46, 51, 49, 49, 49, + 0, 171, 171, 171, 73, 83, + 71, 78, 44, 0, 0, 0, + 1, 0, 0, 0, 8, 0, + 0, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 7, 3, + 0, 0, 80, 79, 83, 73, + 84, 73, 79, 78, 0, 171, + 171, 171, 79, 83, 71, 78, + 104, 0, 0, 0, 3, 0, + 0, 0, 8, 0, 0, 0, + 80, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 12, 0, 0, + 92, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 12, 3, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 154, 3, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 212, 2, 0, 0, + 68, 88, 66, 67, 22, 206, + 82, 103, 196, 235, 84, 233, + 156, 39, 210, 152, 32, 145, + 169, 162, 1, 0, 0, 0, + 212, 2, 0, 0, 6, 0, + 0, 0, 56, 0, 0, 0, + 164, 0, 0, 0, 16, 1, + 0, 0, 140, 1, 0, 0, + 48, 2, 0, 0, 160, 2, + 0, 0, 65, 111, 110, 57, + 100, 0, 0, 0, 100, 0, + 0, 0, 0, 2, 255, 255, + 60, 0, 0, 0, 40, 0, + 0, 0, 0, 0, 40, 0, + 0, 0, 40, 0, 0, 0, + 40, 0, 1, 0, 36, 0, + 0, 0, 40, 0, 0, 0, + 0, 0, 1, 2, 255, 255, + 31, 0, 0, 2, 0, 0, + 0, 128, 0, 0, 15, 176, + 31, 0, 0, 2, 0, 0, + 0, 144, 0, 8, 15, 160, + 66, 0, 0, 3, 0, 0, + 15, 128, 0, 0, 228, 176, + 0, 8, 228, 160, 1, 0, + 0, 2, 0, 8, 15, 128, + 0, 0, 228, 128, 255, 255, + 0, 0, 83, 72, 68, 82, + 100, 0, 0, 0, 64, 0, + 0, 0, 25, 0, 0, 0, + 90, 0, 0, 3, 0, 96, + 16, 0, 0, 0, 0, 0, + 88, 24, 0, 4, 0, 112, + 16, 0, 0, 0, 0, 0, + 85, 85, 0, 0, 98, 16, + 0, 3, 50, 16, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 9, 242, 32, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 62, 0, + 0, 1, 83, 84, 65, 84, + 116, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 82, 68, 69, 70, 156, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, + 0, 0, 28, 0, 0, 0, + 0, 4, 255, 255, 0, 1, + 0, 0, 105, 0, 0, 0, + 92, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 101, 0, 0, 0, + 2, 0, 0, 0, 5, 0, + 0, 0, 4, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 1, 0, 0, 0, + 12, 0, 0, 0, 115, 83, + 97, 109, 112, 108, 101, 114, + 0, 116, 101, 120, 0, 77, + 105, 99, 114, 111, 115, 111, + 102, 116, 32, 40, 82, 41, + 32, 72, 76, 83, 76, 32, + 83, 104, 97, 100, 101, 114, + 32, 67, 111, 109, 112, 105, + 108, 101, 114, 32, 57, 46, + 50, 57, 46, 57, 53, 50, + 46, 51, 49, 49, 49, 0, + 171, 171, 73, 83, 71, 78, + 104, 0, 0, 0, 3, 0, + 0, 0, 8, 0, 0, 0, + 80, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 92, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 12, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 97, 114, 103, 101, + 116, 0, 171, 171, 214, 7, + 0, 0, 0, 0, 0, 0, + 83, 97, 109, 112, 108, 101, + 82, 97, 100, 105, 97, 108, + 71, 114, 97, 100, 105, 101, + 110, 116, 0, 4, 7, 0, + 0, 68, 88, 66, 67, 171, + 7, 14, 215, 173, 41, 24, + 247, 237, 1, 38, 39, 209, + 221, 241, 232, 1, 0, 0, + 0, 4, 7, 0, 0, 6, + 0, 0, 0, 56, 0, 0, + 0, 148, 1, 0, 0, 104, + 3, 0, 0, 228, 3, 0, + 0, 96, 6, 0, 0, 148, + 6, 0, 0, 65, 111, 110, + 57, 84, 1, 0, 0, 84, + 1, 0, 0, 0, 2, 254, + 255, 252, 0, 0, 0, 88, + 0, 0, 0, 4, 0, 36, + 0, 0, 0, 84, 0, 0, + 0, 84, 0, 0, 0, 36, + 0, 1, 0, 84, 0, 0, + 0, 0, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, + 0, 2, 0, 1, 0, 2, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 2, 0, 3, + 0, 0, 0, 0, 0, 1, + 0, 3, 0, 1, 0, 5, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 2, 254, + 255, 81, 0, 0, 5, 6, + 0, 15, 160, 0, 0, 128, + 63, 0, 0, 0, 63, 0, + 0, 0, 0, 0, 0, 0, + 0, 31, 0, 0, 2, 5, + 0, 0, 128, 0, 0, 15, + 144, 4, 0, 0, 4, 0, + 0, 3, 224, 0, 0, 228, + 144, 2, 0, 238, 160, 2, + 0, 228, 160, 4, 0, 0, 4, 0, 0, 3, 128, 0, 0, 228, 144, 1, 0, 238, 160, 1, 0, 228, 160, 2, - 0, 0, 3, 0, 0, 3, - 192, 0, 0, 228, 128, 0, - 0, 228, 160, 1, 0, 0, - 2, 0, 0, 12, 192, 4, - 0, 68, 160, 255, 255, 0, - 0, 83, 72, 68, 82, 244, - 0, 0, 0, 64, 0, 1, - 0, 61, 0, 0, 0, 89, + 0, 0, 3, 0, 0, 4, + 128, 0, 0, 0, 128, 6, + 0, 0, 160, 5, 0, 0, + 3, 0, 0, 4, 128, 0, + 0, 170, 128, 5, 0, 0, + 160, 5, 0, 0, 3, 1, + 0, 1, 128, 0, 0, 170, + 128, 6, 0, 85, 160, 2, + 0, 0, 3, 0, 0, 4, + 128, 0, 0, 85, 129, 6, + 0, 0, 160, 2, 0, 0, + 3, 0, 0, 3, 192, 0, + 0, 228, 128, 0, 0, 228, + 160, 5, 0, 0, 3, 0, + 0, 1, 128, 0, 0, 170, + 128, 5, 0, 85, 160, 5, + 0, 0, 3, 1, 0, 2, + 128, 0, 0, 0, 128, 6, + 0, 85, 160, 1, 0, 0, + 2, 1, 0, 4, 128, 6, + 0, 0, 160, 8, 0, 0, + 3, 0, 0, 8, 224, 1, + 0, 228, 128, 3, 0, 228, + 160, 8, 0, 0, 3, 0, + 0, 4, 224, 1, 0, 228, + 128, 4, 0, 228, 160, 1, + 0, 0, 2, 0, 0, 12, + 192, 6, 0, 36, 160, 255, + 255, 0, 0, 83, 72, 68, + 82, 204, 1, 0, 0, 64, + 0, 1, 0, 115, 0, 0, + 0, 89, 0, 0, 4, 70, + 142, 32, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 89, 0, 0, 4, 70, 142, 32, - 0, 0, 0, 0, 0, 3, + 0, 1, 0, 0, 0, 4, 0, 0, 0, 95, 0, 0, 3, 50, 16, 16, 0, 0, 0, 0, 0, 103, 0, 0, @@ -1289,101 +2182,195 @@ const BYTE d2deffect[] = 32, 16, 0, 1, 0, 0, 0, 101, 0, 0, 3, 194, 32, 16, 0, 1, 0, 0, - 0, 50, 0, 0, 11, 50, - 32, 16, 0, 0, 0, 0, - 0, 70, 16, 16, 0, 0, - 0, 0, 0, 230, 138, 32, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 70, 128, 32, - 0, 0, 0, 0, 0, 0, + 0, 104, 0, 0, 2, 2, 0, 0, 0, 54, 0, 0, 8, 194, 32, 16, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 50, - 0, 0, 11, 50, 32, 16, - 0, 1, 0, 0, 0, 70, + 0, 0, 11, 50, 0, 16, + 0, 0, 0, 0, 0, 70, 16, 16, 0, 0, 0, 0, 0, 230, 138, 32, 0, 0, - 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 70, 128, 32, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 50, 0, 0, 11, 194, + 0, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 5, 50, + 32, 16, 0, 0, 0, 0, + 0, 70, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 0, + 7, 18, 0, 16, 0, 0, + 0, 0, 0, 10, 0, 16, + 0, 0, 0, 0, 0, 1, + 64, 0, 0, 0, 0, 128, + 63, 0, 0, 0, 8, 34, + 0, 16, 0, 0, 0, 0, + 0, 26, 0, 16, 128, 65, + 0, 0, 0, 0, 0, 0, + 0, 1, 64, 0, 0, 0, + 0, 128, 63, 56, 0, 0, + 8, 50, 0, 16, 0, 0, + 0, 0, 0, 70, 0, 16, + 0, 0, 0, 0, 0, 70, + 128, 32, 0, 1, 0, 0, + 0, 3, 0, 0, 0, 56, + 0, 0, 10, 50, 0, 16, + 0, 1, 0, 0, 0, 70, + 0, 16, 0, 0, 0, 0, + 0, 2, 64, 0, 0, 0, + 0, 0, 63, 0, 0, 0, + 63, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 0, + 5, 66, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, + 0, 0, 0, 128, 63, 16, + 0, 0, 8, 66, 32, 16, + 0, 1, 0, 0, 0, 70, + 2, 16, 0, 1, 0, 0, + 0, 70, 130, 32, 0, 1, + 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 8, 130, 32, 16, 0, 1, 0, 0, - 0, 6, 20, 16, 0, 0, - 0, 0, 0, 166, 142, 32, - 0, 0, 0, 0, 0, 2, - 0, 0, 0, 6, 132, 32, - 0, 0, 0, 0, 0, 2, - 0, 0, 0, 62, 0, 0, - 1, 83, 84, 65, 84, 116, - 0, 0, 0, 5, 0, 0, + 0, 70, 2, 16, 0, 1, + 0, 0, 0, 70, 130, 32, + 0, 1, 0, 0, 0, 1, + 0, 0, 0, 50, 0, 0, + 11, 50, 32, 16, 0, 1, + 0, 0, 0, 70, 16, 16, + 0, 0, 0, 0, 0, 230, + 138, 32, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 70, + 128, 32, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 62, + 0, 0, 1, 83, 84, 65, + 84, 116, 0, 0, 0, 12, + 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 4, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 82, - 68, 69, 70, 8, 1, 0, - 0, 1, 0, 0, 0, 64, 0, 0, 0, 1, 0, 0, - 0, 28, 0, 0, 0, 0, - 4, 254, 255, 0, 1, 0, - 0, 212, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 82, 68, 69, 70, 116, + 2, 0, 0, 2, 0, 0, + 0, 100, 0, 0, 0, 2, + 0, 0, 0, 28, 0, 0, + 0, 0, 4, 254, 255, 0, + 1, 0, 0, 67, 2, 0, + 0, 92, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 0, 96, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 99, + 98, 48, 0, 99, 98, 50, + 0, 92, 0, 0, 0, 3, + 0, 0, 0, 148, 0, 0, + 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 99, 98, 48, 0, 60, - 0, 0, 0, 3, 0, 0, - 0, 88, 0, 0, 0, 48, + 0, 96, 0, 0, 0, 7, + 0, 0, 0, 16, 1, 0, + 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 160, - 0, 0, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 2, - 0, 0, 0, 172, 0, 0, - 0, 0, 0, 0, 0, 188, + 0, 220, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, - 0, 16, 0, 0, 0, 2, - 0, 0, 0, 172, 0, 0, - 0, 0, 0, 0, 0, 198, - 0, 0, 0, 32, 0, 0, - 0, 16, 0, 0, 0, 2, - 0, 0, 0, 172, 0, 0, - 0, 0, 0, 0, 0, 81, - 117, 97, 100, 68, 101, 115, - 99, 0, 171, 171, 171, 1, - 0, 3, 0, 1, 0, 4, + 0, 2, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 101, 120, - 67, 111, 111, 114, 100, 115, - 0, 77, 97, 115, 107, 84, + 0, 248, 0, 0, 0, 16, + 0, 0, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 232, + 0, 0, 0, 0, 0, 0, + 0, 2, 1, 0, 0, 32, + 0, 0, 0, 16, 0, 0, + 0, 2, 0, 0, 0, 232, + 0, 0, 0, 0, 0, 0, + 0, 81, 117, 97, 100, 68, + 101, 115, 99, 0, 171, 171, + 171, 1, 0, 3, 0, 1, + 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 84, 101, 120, 67, 111, 111, 114, - 100, 115, 0, 77, 105, 99, - 114, 111, 115, 111, 102, 116, - 32, 40, 82, 41, 32, 72, - 76, 83, 76, 32, 83, 104, - 97, 100, 101, 114, 32, 67, - 111, 109, 112, 105, 108, 101, - 114, 32, 57, 46, 50, 57, - 46, 57, 53, 50, 46, 51, - 49, 49, 49, 0, 171, 171, - 171, 73, 83, 71, 78, 44, + 100, 115, 0, 77, 97, 115, + 107, 84, 101, 120, 67, 111, + 111, 114, 100, 115, 0, 184, + 1, 0, 0, 0, 0, 0, + 0, 44, 0, 0, 0, 2, + 0, 0, 0, 208, 1, 0, + 0, 0, 0, 0, 0, 224, + 1, 0, 0, 48, 0, 0, + 0, 8, 0, 0, 0, 2, + 0, 0, 0, 236, 1, 0, + 0, 0, 0, 0, 0, 252, + 1, 0, 0, 64, 0, 0, + 0, 12, 0, 0, 0, 0, + 0, 0, 0, 4, 2, 0, + 0, 0, 0, 0, 0, 20, + 2, 0, 0, 80, 0, 0, + 0, 8, 0, 0, 0, 0, + 0, 0, 0, 236, 1, 0, + 0, 0, 0, 0, 0, 28, + 2, 0, 0, 88, 0, 0, + 0, 4, 0, 0, 0, 0, + 0, 0, 0, 32, 2, 0, + 0, 0, 0, 0, 0, 48, + 2, 0, 0, 92, 0, 0, + 0, 4, 0, 0, 0, 0, + 0, 0, 0, 32, 2, 0, + 0, 0, 0, 0, 0, 56, + 2, 0, 0, 96, 0, 0, + 0, 4, 0, 0, 0, 0, + 0, 0, 0, 32, 2, 0, + 0, 0, 0, 0, 0, 68, + 101, 118, 105, 99, 101, 83, + 112, 97, 99, 101, 84, 111, + 85, 115, 101, 114, 83, 112, + 97, 99, 101, 0, 171, 3, + 0, 3, 0, 3, 0, 3, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 100, 105, 109, + 101, 110, 115, 105, 111, 110, + 115, 0, 171, 1, 0, 3, + 0, 1, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 100, 105, 102, 102, 0, + 171, 171, 171, 1, 0, 3, + 0, 1, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 99, 101, 110, 116, 101, + 114, 49, 0, 65, 0, 171, + 171, 0, 0, 3, 0, 1, + 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 114, + 97, 100, 105, 117, 115, 49, + 0, 115, 113, 95, 114, 97, + 100, 105, 117, 115, 49, 0, + 77, 105, 99, 114, 111, 115, + 111, 102, 116, 32, 40, 82, + 41, 32, 72, 76, 83, 76, + 32, 83, 104, 97, 100, 101, + 114, 32, 67, 111, 109, 112, + 105, 108, 101, 114, 32, 57, + 46, 50, 57, 46, 57, 53, + 50, 46, 51, 49, 49, 49, + 0, 73, 83, 71, 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, @@ -1410,445 +2397,389 @@ const BYTE d2deffect[] = 80, 111, 115, 105, 116, 105, 111, 110, 0, 84, 69, 88, 67, 79, 79, 82, 68, 0, - 171, 171, 171, 197, 2, 0, + 171, 171, 171, 203, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 212, - 2, 0, 0, 68, 88, 66, - 67, 22, 206, 82, 103, 196, - 235, 84, 233, 156, 39, 210, - 152, 32, 145, 169, 162, 1, - 0, 0, 0, 212, 2, 0, + 0, 0, 0, 0, 0, 176, + 9, 0, 0, 68, 88, 66, + 67, 240, 161, 162, 174, 38, + 162, 195, 139, 184, 115, 158, + 154, 113, 22, 188, 37, 1, + 0, 0, 0, 176, 9, 0, 0, 6, 0, 0, 0, 56, - 0, 0, 0, 164, 0, 0, - 0, 16, 1, 0, 0, 140, - 1, 0, 0, 48, 2, 0, - 0, 160, 2, 0, 0, 65, - 111, 110, 57, 100, 0, 0, - 0, 100, 0, 0, 0, 0, - 2, 255, 255, 60, 0, 0, - 0, 40, 0, 0, 0, 0, - 0, 40, 0, 0, 0, 40, - 0, 0, 0, 40, 0, 1, - 0, 36, 0, 0, 0, 40, + 0, 0, 0, 112, 2, 0, + 0, 44, 6, 0, 0, 168, + 6, 0, 0, 12, 9, 0, + 0, 124, 9, 0, 0, 65, + 111, 110, 57, 48, 2, 0, + 0, 48, 2, 0, 0, 0, + 2, 255, 255, 248, 1, 0, + 0, 56, 0, 0, 0, 1, + 0, 44, 0, 0, 0, 56, + 0, 0, 0, 56, 0, 2, + 0, 36, 0, 0, 0, 56, 0, 0, 0, 0, 0, 1, - 2, 255, 255, 31, 0, 0, - 2, 0, 0, 0, 128, 0, - 0, 15, 176, 31, 0, 0, - 2, 0, 0, 0, 144, 0, - 8, 15, 160, 66, 0, 0, - 3, 0, 0, 15, 128, 0, - 0, 228, 176, 0, 8, 228, - 160, 1, 0, 0, 2, 0, - 8, 15, 128, 0, 0, 228, - 128, 255, 255, 0, 0, 83, - 72, 68, 82, 100, 0, 0, - 0, 64, 0, 0, 0, 25, - 0, 0, 0, 90, 0, 0, - 3, 0, 96, 16, 0, 0, - 0, 0, 0, 88, 24, 0, - 4, 0, 112, 16, 0, 0, - 0, 0, 0, 85, 85, 0, - 0, 98, 16, 0, 3, 50, - 16, 16, 0, 1, 0, 0, - 0, 101, 0, 0, 3, 242, - 32, 16, 0, 0, 0, 0, - 0, 69, 0, 0, 9, 242, - 32, 16, 0, 0, 0, 0, - 0, 70, 16, 16, 0, 1, - 0, 0, 0, 70, 126, 16, - 0, 0, 0, 0, 0, 0, - 96, 16, 0, 0, 0, 0, - 0, 62, 0, 0, 1, 83, - 84, 65, 84, 116, 0, 0, - 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 68, 69, - 70, 156, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 2, 0, 0, 0, 28, - 0, 0, 0, 0, 4, 255, - 255, 0, 1, 0, 0, 105, - 0, 0, 0, 92, 0, 0, + 1, 1, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 101, - 0, 0, 0, 2, 0, 0, - 0, 5, 0, 0, 0, 4, - 0, 0, 0, 255, 255, 255, - 255, 0, 0, 0, 0, 1, - 0, 0, 0, 12, 0, 0, - 0, 115, 83, 97, 109, 112, - 108, 101, 114, 0, 116, 101, - 120, 0, 77, 105, 99, 114, - 111, 115, 111, 102, 116, 32, - 40, 82, 41, 32, 72, 76, - 83, 76, 32, 83, 104, 97, - 100, 101, 114, 32, 67, 111, - 109, 112, 105, 108, 101, 114, - 32, 57, 46, 50, 57, 46, - 57, 53, 50, 46, 51, 49, - 49, 49, 0, 171, 171, 73, - 83, 71, 78, 104, 0, 0, - 0, 3, 0, 0, 0, 8, - 0, 0, 0, 80, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 15, - 0, 0, 0, 92, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 1, 0, 0, 0, 3, - 3, 0, 0, 92, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 1, 0, 0, 0, 12, - 0, 0, 0, 83, 86, 95, - 80, 111, 115, 105, 116, 105, - 111, 110, 0, 84, 69, 88, - 67, 79, 79, 82, 68, 0, - 171, 171, 171, 79, 83, 71, - 78, 44, 0, 0, 0, 1, - 0, 0, 0, 8, 0, 0, - 0, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, - 0, 83, 86, 95, 84, 97, - 114, 103, 101, 116, 0, 171, - 171, 1, 7, 0, 0, 0, - 0, 0, 0, 83, 97, 109, - 112, 108, 101, 77, 97, 115, - 107, 101, 100, 84, 101, 120, - 116, 117, 114, 101, 0, 36, - 4, 0, 0, 68, 88, 66, - 67, 116, 139, 68, 62, 73, - 113, 92, 4, 72, 76, 225, - 161, 30, 132, 222, 233, 1, - 0, 0, 0, 36, 4, 0, - 0, 6, 0, 0, 0, 56, - 0, 0, 0, 248, 0, 0, - 0, 244, 1, 0, 0, 112, - 2, 0, 0, 128, 3, 0, - 0, 180, 3, 0, 0, 65, - 111, 110, 57, 184, 0, 0, - 0, 184, 0, 0, 0, 0, - 2, 254, 255, 132, 0, 0, - 0, 52, 0, 0, 0, 1, - 0, 36, 0, 0, 0, 48, - 0, 0, 0, 48, 0, 0, - 0, 36, 0, 1, 0, 48, - 0, 0, 0, 0, 0, 3, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, - 2, 254, 255, 81, 0, 0, - 5, 4, 0, 15, 160, 0, - 0, 0, 0, 0, 0, 128, + 0, 0, 0, 1, 2, 255, + 255, 81, 0, 0, 5, 3, + 0, 15, 160, 0, 0, 0, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 0, 0, - 2, 5, 0, 0, 128, 0, - 0, 15, 144, 4, 0, 0, - 4, 0, 0, 3, 224, 0, - 0, 228, 144, 2, 0, 238, - 160, 2, 0, 228, 160, 4, - 0, 0, 4, 0, 0, 12, - 224, 0, 0, 20, 144, 3, - 0, 180, 160, 3, 0, 20, - 160, 4, 0, 0, 4, 0, - 0, 3, 128, 0, 0, 228, - 144, 1, 0, 238, 160, 1, - 0, 228, 160, 2, 0, 0, - 3, 0, 0, 3, 192, 0, - 0, 228, 128, 0, 0, 228, - 160, 1, 0, 0, 2, 0, - 0, 12, 192, 4, 0, 68, - 160, 255, 255, 0, 0, 83, - 72, 68, 82, 244, 0, 0, - 0, 64, 0, 1, 0, 61, - 0, 0, 0, 89, 0, 0, - 4, 70, 142, 32, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 95, 0, 0, 3, 50, - 16, 16, 0, 0, 0, 0, - 0, 103, 0, 0, 4, 242, - 32, 16, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 101, - 0, 0, 3, 50, 32, 16, - 0, 1, 0, 0, 0, 101, - 0, 0, 3, 194, 32, 16, - 0, 1, 0, 0, 0, 50, - 0, 0, 11, 50, 32, 16, - 0, 0, 0, 0, 0, 70, - 16, 16, 0, 0, 0, 0, - 0, 230, 138, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 70, 128, 32, 0, 0, + 0, 81, 0, 0, 5, 4, + 0, 15, 160, 0, 0, 128, + 63, 0, 0, 128, 191, 0, 0, 0, 0, 0, 0, 0, - 0, 54, 0, 0, 8, 194, - 32, 16, 0, 0, 0, 0, - 0, 2, 64, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 128, 63, 50, 0, 0, - 11, 50, 32, 16, 0, 1, - 0, 0, 0, 70, 16, 16, - 0, 0, 0, 0, 0, 230, - 138, 32, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 70, - 128, 32, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 50, - 0, 0, 11, 194, 32, 16, - 0, 1, 0, 0, 0, 6, - 20, 16, 0, 0, 0, 0, - 0, 166, 142, 32, 0, 0, - 0, 0, 0, 2, 0, 0, - 0, 6, 132, 32, 0, 0, - 0, 0, 0, 2, 0, 0, - 0, 62, 0, 0, 1, 83, - 84, 65, 84, 116, 0, 0, - 0, 5, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 68, 69, - 70, 8, 1, 0, 0, 1, - 0, 0, 0, 64, 0, 0, - 0, 1, 0, 0, 0, 28, - 0, 0, 0, 0, 4, 254, - 255, 0, 1, 0, 0, 212, - 0, 0, 0, 60, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 99, - 98, 48, 0, 60, 0, 0, - 0, 3, 0, 0, 0, 88, - 0, 0, 0, 48, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 160, 0, 0, - 0, 0, 0, 0, 0, 16, - 0, 0, 0, 2, 0, 0, - 0, 172, 0, 0, 0, 0, - 0, 0, 0, 188, 0, 0, - 0, 16, 0, 0, 0, 16, - 0, 0, 0, 2, 0, 0, - 0, 172, 0, 0, 0, 0, - 0, 0, 0, 198, 0, 0, - 0, 32, 0, 0, 0, 16, - 0, 0, 0, 2, 0, 0, - 0, 172, 0, 0, 0, 0, - 0, 0, 0, 81, 117, 97, - 100, 68, 101, 115, 99, 0, - 171, 171, 171, 1, 0, 3, - 0, 1, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 84, 101, 120, 67, 111, - 111, 114, 100, 115, 0, 77, - 97, 115, 107, 84, 101, 120, - 67, 111, 111, 114, 100, 115, - 0, 77, 105, 99, 114, 111, - 115, 111, 102, 116, 32, 40, - 82, 41, 32, 72, 76, 83, - 76, 32, 83, 104, 97, 100, - 101, 114, 32, 67, 111, 109, - 112, 105, 108, 101, 114, 32, - 57, 46, 50, 57, 46, 57, - 53, 50, 46, 51, 49, 49, - 49, 0, 171, 171, 171, 73, - 83, 71, 78, 44, 0, 0, - 0, 1, 0, 0, 0, 8, - 0, 0, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 7, - 3, 0, 0, 80, 79, 83, - 73, 84, 73, 79, 78, 0, - 171, 171, 171, 79, 83, 71, - 78, 104, 0, 0, 0, 3, - 0, 0, 0, 8, 0, 0, - 0, 80, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 3, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, - 0, 92, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 1, - 0, 0, 0, 3, 12, 0, - 0, 92, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 1, - 0, 0, 0, 12, 3, 0, - 0, 83, 86, 95, 80, 111, - 115, 105, 116, 105, 111, 110, - 0, 84, 69, 88, 67, 79, - 79, 82, 68, 0, 171, 171, - 171, 245, 9, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 2, 0, 0, 0, 0, - 0, 0, 0, 208, 3, 0, - 0, 68, 88, 66, 67, 145, - 96, 208, 189, 244, 147, 57, - 205, 242, 133, 35, 176, 39, - 143, 121, 235, 1, 0, 0, - 0, 208, 3, 0, 0, 6, - 0, 0, 0, 56, 0, 0, - 0, 224, 0, 0, 0, 188, - 1, 0, 0, 56, 2, 0, - 0, 44, 3, 0, 0, 156, - 3, 0, 0, 65, 111, 110, - 57, 160, 0, 0, 0, 160, - 0, 0, 0, 0, 2, 255, - 255, 116, 0, 0, 0, 44, - 0, 0, 0, 0, 0, 44, - 0, 0, 0, 44, 0, 0, - 0, 44, 0, 2, 0, 36, - 0, 0, 0, 44, 0, 0, - 0, 0, 0, 1, 1, 1, - 0, 1, 2, 255, 255, 31, - 0, 0, 2, 0, 0, 0, - 128, 0, 0, 15, 176, 31, - 0, 0, 2, 0, 0, 0, - 144, 0, 8, 15, 160, 31, - 0, 0, 2, 0, 0, 0, - 144, 1, 8, 15, 160, 1, - 0, 0, 2, 0, 0, 3, - 128, 0, 0, 235, 176, 66, - 0, 0, 3, 1, 0, 15, - 128, 0, 0, 228, 176, 0, - 8, 228, 160, 66, 0, 0, - 3, 0, 0, 15, 128, 0, - 0, 228, 128, 1, 8, 228, - 160, 5, 0, 0, 3, 0, - 0, 15, 128, 0, 0, 255, - 128, 1, 0, 228, 128, 1, + 128, 31, 0, 0, 2, 0, + 0, 0, 128, 0, 0, 15, + 176, 31, 0, 0, 2, 0, + 0, 0, 144, 0, 8, 15, + 160, 31, 0, 0, 2, 0, + 0, 0, 144, 1, 8, 15, + 160, 2, 0, 0, 3, 0, + 0, 3, 128, 0, 0, 235, + 176, 1, 0, 228, 161, 90, + 0, 0, 4, 0, 0, 8, + 128, 0, 0, 228, 128, 0, + 0, 228, 128, 2, 0, 0, + 161, 5, 0, 0, 3, 0, + 0, 8, 128, 0, 0, 255, + 128, 1, 0, 170, 160, 1, + 0, 0, 2, 0, 0, 4, + 128, 1, 0, 255, 160, 8, + 0, 0, 3, 0, 0, 1, + 128, 0, 0, 228, 128, 0, + 0, 228, 160, 4, 0, 0, + 4, 0, 0, 2, 128, 0, + 0, 0, 128, 0, 0, 0, + 128, 0, 0, 255, 129, 35, + 0, 0, 2, 0, 0, 4, + 128, 0, 0, 85, 128, 7, + 0, 0, 2, 0, 0, 4, + 128, 0, 0, 170, 128, 6, + 0, 0, 2, 1, 0, 1, + 128, 0, 0, 170, 128, 1, + 0, 0, 2, 1, 0, 6, + 128, 1, 0, 0, 129, 2, + 0, 0, 3, 0, 0, 13, + 128, 0, 0, 0, 128, 1, + 0, 148, 128, 6, 0, 0, + 2, 1, 0, 1, 128, 1, + 0, 170, 160, 5, 0, 0, + 3, 0, 0, 13, 128, 0, + 0, 228, 128, 1, 0, 0, + 128, 1, 0, 0, 2, 1, + 0, 8, 128, 1, 0, 255, + 160, 4, 0, 0, 4, 1, + 0, 7, 128, 0, 0, 248, + 128, 0, 0, 170, 160, 1, + 0, 255, 128, 88, 0, 0, + 4, 2, 0, 1, 128, 1, + 0, 0, 128, 0, 0, 0, + 128, 0, 0, 255, 128, 88, + 0, 0, 4, 0, 0, 13, + 128, 1, 0, 148, 128, 4, + 0, 68, 160, 4, 0, 230, + 160, 1, 0, 0, 2, 2, + 0, 2, 128, 3, 0, 0, + 160, 66, 0, 0, 3, 1, + 0, 15, 128, 0, 0, 228, + 176, 1, 8, 228, 160, 66, + 0, 0, 3, 2, 0, 15, + 128, 2, 0, 228, 128, 0, + 8, 228, 160, 5, 0, 0, + 3, 1, 0, 15, 128, 1, + 0, 255, 128, 2, 0, 228, + 128, 2, 0, 0, 3, 0, + 0, 8, 128, 0, 0, 255, + 128, 0, 0, 0, 128, 88, + 0, 0, 4, 0, 0, 1, + 128, 0, 0, 255, 128, 0, + 0, 0, 128, 0, 0, 170, + 128, 88, 0, 0, 4, 1, + 0, 15, 128, 0, 0, 0, + 129, 4, 0, 170, 160, 1, + 0, 228, 128, 88, 0, 0, + 4, 0, 0, 15, 128, 0, + 0, 85, 128, 1, 0, 228, + 128, 4, 0, 170, 160, 1, 0, 0, 2, 0, 8, 15, 128, 0, 0, 228, 128, 255, 255, 0, 0, 83, 72, 68, - 82, 212, 0, 0, 0, 64, - 0, 0, 0, 53, 0, 0, - 0, 90, 0, 0, 3, 0, - 96, 16, 0, 0, 0, 0, - 0, 90, 0, 0, 3, 0, - 96, 16, 0, 1, 0, 0, - 0, 88, 24, 0, 4, 0, - 112, 16, 0, 0, 0, 0, - 0, 85, 85, 0, 0, 88, + 82, 180, 3, 0, 0, 64, + 0, 0, 0, 237, 0, 0, + 0, 89, 0, 0, 4, 70, + 142, 32, 0, 0, 0, 0, + 0, 7, 0, 0, 0, 90, + 0, 0, 3, 0, 96, 16, + 0, 0, 0, 0, 0, 90, + 0, 0, 3, 0, 96, 16, + 0, 1, 0, 0, 0, 88, 24, 0, 4, 0, 112, 16, - 0, 1, 0, 0, 0, 85, - 85, 0, 0, 98, 16, 0, - 3, 50, 16, 16, 0, 1, - 0, 0, 0, 98, 16, 0, - 3, 194, 16, 16, 0, 1, - 0, 0, 0, 101, 0, 0, - 3, 242, 32, 16, 0, 0, - 0, 0, 0, 104, 0, 0, - 2, 2, 0, 0, 0, 69, - 0, 0, 9, 242, 0, 16, - 0, 0, 0, 0, 0, 70, + 0, 0, 0, 0, 0, 85, + 85, 0, 0, 88, 24, 0, + 4, 0, 112, 16, 0, 1, + 0, 0, 0, 85, 85, 0, + 0, 98, 16, 0, 3, 50, 16, 16, 0, 1, 0, 0, + 0, 98, 16, 0, 3, 194, + 16, 16, 0, 1, 0, 0, + 0, 101, 0, 0, 3, 242, + 32, 16, 0, 0, 0, 0, + 0, 104, 0, 0, 2, 3, + 0, 0, 0, 0, 0, 0, + 9, 50, 0, 16, 0, 0, + 0, 0, 0, 230, 26, 16, + 0, 1, 0, 0, 0, 70, + 128, 32, 128, 65, 0, 0, + 0, 0, 0, 0, 0, 5, + 0, 0, 0, 54, 0, 0, + 6, 66, 0, 16, 0, 0, + 0, 0, 0, 58, 128, 32, + 0, 0, 0, 0, 0, 5, + 0, 0, 0, 16, 0, 0, + 8, 66, 0, 16, 0, 0, + 0, 0, 0, 70, 2, 16, + 0, 0, 0, 0, 0, 70, + 130, 32, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 15, + 0, 0, 7, 18, 0, 16, + 0, 0, 0, 0, 0, 70, + 0, 16, 0, 0, 0, 0, + 0, 70, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 0, + 9, 18, 0, 16, 0, 0, + 0, 0, 0, 10, 0, 16, + 0, 0, 0, 0, 0, 10, + 128, 32, 128, 65, 0, 0, + 0, 0, 0, 0, 0, 6, + 0, 0, 0, 56, 0, 0, + 8, 18, 0, 16, 0, 0, + 0, 0, 0, 10, 0, 16, + 0, 0, 0, 0, 0, 42, + 128, 32, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 50, + 0, 0, 10, 18, 0, 16, + 0, 0, 0, 0, 0, 42, + 0, 16, 0, 0, 0, 0, + 0, 42, 0, 16, 0, 0, + 0, 0, 0, 10, 0, 16, + 128, 65, 0, 0, 0, 0, + 0, 0, 0, 49, 0, 0, + 7, 34, 0, 16, 0, 0, + 0, 0, 0, 10, 0, 16, + 0, 0, 0, 0, 0, 1, + 64, 0, 0, 0, 0, 0, + 0, 75, 0, 0, 6, 18, + 0, 16, 0, 1, 0, 0, + 0, 10, 0, 16, 128, 129, + 0, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 6, 34, + 0, 16, 0, 1, 0, 0, + 0, 10, 0, 16, 128, 65, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 7, 82, + 0, 16, 0, 0, 0, 0, + 0, 166, 10, 16, 0, 0, + 0, 0, 0, 6, 1, 16, + 0, 1, 0, 0, 0, 14, + 0, 0, 8, 82, 0, 16, + 0, 0, 0, 0, 0, 6, + 2, 16, 0, 0, 0, 0, + 0, 166, 138, 32, 0, 0, + 0, 0, 0, 5, 0, 0, + 0, 56, 0, 0, 8, 50, + 0, 16, 0, 1, 0, 0, + 0, 134, 0, 16, 0, 0, + 0, 0, 0, 166, 138, 32, + 0, 0, 0, 0, 0, 4, + 0, 0, 0, 29, 0, 0, + 9, 50, 0, 16, 0, 1, + 0, 0, 0, 70, 0, 16, + 0, 1, 0, 0, 0, 246, + 143, 32, 128, 65, 0, 0, + 0, 0, 0, 0, 0, 5, + 0, 0, 0, 1, 0, 0, + 10, 50, 0, 16, 0, 1, + 0, 0, 0, 70, 0, 16, + 0, 1, 0, 0, 0, 2, + 64, 0, 0, 0, 0, 128, + 63, 0, 0, 128, 63, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 18, + 0, 16, 0, 0, 0, 0, + 0, 42, 0, 16, 128, 65, + 0, 0, 0, 0, 0, 0, + 0, 10, 0, 16, 0, 0, + 0, 0, 0, 50, 0, 0, + 9, 18, 0, 16, 0, 2, + 0, 0, 0, 10, 0, 16, + 0, 1, 0, 0, 0, 10, + 0, 16, 0, 0, 0, 0, + 0, 42, 0, 16, 0, 0, + 0, 0, 0, 54, 0, 0, + 5, 34, 0, 16, 0, 2, + 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 63, 69, + 0, 0, 9, 242, 0, 16, + 0, 2, 0, 0, 0, 70, + 0, 16, 0, 2, 0, 0, 0, 70, 126, 16, 0, 0, 0, 0, 0, 0, 96, 16, - 0, 0, 0, 0, 0, 69, - 0, 0, 9, 242, 0, 16, - 0, 1, 0, 0, 0, 230, - 26, 16, 0, 1, 0, 0, - 0, 70, 126, 16, 0, 1, - 0, 0, 0, 0, 96, 16, - 0, 1, 0, 0, 0, 56, - 0, 0, 7, 242, 32, 16, - 0, 0, 0, 0, 0, 70, - 14, 16, 0, 0, 0, 0, - 0, 246, 15, 16, 0, 1, - 0, 0, 0, 62, 0, 0, - 1, 83, 84, 65, 84, 116, - 0, 0, 0, 4, 0, 0, - 0, 2, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 31, + 0, 4, 3, 26, 0, 16, + 0, 0, 0, 0, 0, 54, + 0, 0, 8, 242, 32, 16, 0, 0, 0, 0, 0, 2, + 64, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 62, 0, 0, 1, 21, + 0, 0, 1, 52, 0, 0, + 7, 18, 0, 16, 0, 0, + 0, 0, 0, 26, 0, 16, + 0, 1, 0, 0, 0, 10, + 0, 16, 0, 1, 0, 0, + 0, 29, 0, 0, 7, 18, + 0, 16, 0, 0, 0, 0, + 0, 1, 64, 0, 0, 0, + 0, 0, 0, 10, 0, 16, + 0, 0, 0, 0, 0, 31, + 0, 4, 3, 10, 0, 16, + 0, 0, 0, 0, 0, 54, + 0, 0, 8, 242, 32, 16, + 0, 0, 0, 0, 0, 2, + 64, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 62, 0, 0, 1, 21, + 0, 0, 1, 69, 0, 0, + 9, 242, 0, 16, 0, 0, + 0, 0, 0, 70, 16, 16, + 0, 1, 0, 0, 0, 70, + 126, 16, 0, 1, 0, 0, + 0, 0, 96, 16, 0, 1, + 0, 0, 0, 56, 0, 0, + 7, 242, 32, 16, 0, 0, + 0, 0, 0, 246, 15, 16, + 0, 0, 0, 0, 0, 70, + 14, 16, 0, 2, 0, 0, + 0, 62, 0, 0, 1, 83, + 84, 65, 84, 116, 0, 0, + 0, 32, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 16, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 3, + 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 68, 69, + 70, 92, 2, 0, 0, 1, + 0, 0, 0, 224, 0, 0, + 0, 5, 0, 0, 0, 28, + 0, 0, 0, 0, 4, 255, + 255, 0, 1, 0, 0, 43, + 2, 0, 0, 188, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 82, - 68, 69, 70, 236, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0, - 0, 28, 0, 0, 0, 0, - 4, 255, 255, 0, 1, 0, - 0, 187, 0, 0, 0, 156, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 197, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, + 0, 210, 0, 0, 0, 2, + 0, 0, 0, 5, 0, 0, + 0, 4, 0, 0, 0, 255, + 255, 255, 255, 0, 0, 0, + 0, 1, 0, 0, 0, 12, + 0, 0, 0, 214, 0, 0, + 0, 2, 0, 0, 0, 5, + 0, 0, 0, 4, 0, 0, + 0, 255, 255, 255, 255, 1, + 0, 0, 0, 1, 0, 0, + 0, 12, 0, 0, 0, 219, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 165, 0, 0, 0, 3, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 178, 0, 0, - 0, 2, 0, 0, 0, 5, - 0, 0, 0, 4, 0, 0, - 0, 255, 255, 255, 255, 0, - 0, 0, 0, 1, 0, 0, - 0, 12, 0, 0, 0, 182, - 0, 0, 0, 2, 0, 0, - 0, 5, 0, 0, 0, 4, - 0, 0, 0, 255, 255, 255, - 255, 1, 0, 0, 0, 1, - 0, 0, 0, 12, 0, 0, 0, 115, 83, 97, 109, 112, 108, 101, 114, 0, 115, 77, 97, 115, 107, 83, 97, 109, 112, 108, 101, 114, 0, 116, 101, 120, 0, 109, 97, 115, - 107, 0, 77, 105, 99, 114, + 107, 0, 99, 98, 50, 0, + 171, 219, 0, 0, 0, 7, + 0, 0, 0, 248, 0, 0, + 0, 112, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 160, 1, 0, 0, 0, + 0, 0, 0, 44, 0, 0, + 0, 0, 0, 0, 0, 184, + 1, 0, 0, 0, 0, 0, + 0, 200, 1, 0, 0, 48, + 0, 0, 0, 8, 0, 0, + 0, 0, 0, 0, 0, 212, + 1, 0, 0, 0, 0, 0, + 0, 228, 1, 0, 0, 64, + 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 236, + 1, 0, 0, 0, 0, 0, + 0, 252, 1, 0, 0, 80, + 0, 0, 0, 8, 0, 0, + 0, 2, 0, 0, 0, 212, + 1, 0, 0, 0, 0, 0, + 0, 4, 2, 0, 0, 88, + 0, 0, 0, 4, 0, 0, + 0, 2, 0, 0, 0, 8, + 2, 0, 0, 0, 0, 0, + 0, 24, 2, 0, 0, 92, + 0, 0, 0, 4, 0, 0, + 0, 2, 0, 0, 0, 8, + 2, 0, 0, 0, 0, 0, + 0, 32, 2, 0, 0, 96, + 0, 0, 0, 4, 0, 0, + 0, 2, 0, 0, 0, 8, + 2, 0, 0, 0, 0, 0, + 0, 68, 101, 118, 105, 99, + 101, 83, 112, 97, 99, 101, + 84, 111, 85, 115, 101, 114, + 83, 112, 97, 99, 101, 0, + 171, 3, 0, 3, 0, 3, + 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 100, + 105, 109, 101, 110, 115, 105, + 111, 110, 115, 0, 171, 1, + 0, 3, 0, 1, 0, 2, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 100, 105, 102, + 102, 0, 171, 171, 171, 1, + 0, 3, 0, 1, 0, 3, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 99, 101, 110, + 116, 101, 114, 49, 0, 65, + 0, 171, 171, 0, 0, 3, + 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 114, 97, 100, 105, 117, + 115, 49, 0, 115, 113, 95, + 114, 97, 100, 105, 117, 115, + 49, 0, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 40, 82, 41, 32, 72, 76, 83, 76, 32, 83, 104, 97, @@ -1883,588 +2814,273 @@ const BYTE d2deffect[] = 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 83, 86, 95, 84, 97, 114, 103, - 101, 116, 0, 171, 171, 49, - 14, 0, 0, 0, 0, 0, - 0, 83, 97, 109, 112, 108, - 101, 84, 101, 120, 116, 117, - 114, 101, 87, 105, 116, 104, - 83, 104, 97, 100, 111, 119, - 0, 4, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 128, - 63, 1, 0, 0, 0, 0, - 0, 128, 63, 1, 0, 0, - 0, 0, 0, 128, 63, 1, - 0, 0, 0, 0, 0, 128, - 63, 1, 0, 0, 0, 3, - 0, 0, 0, 255, 255, 255, - 255, 36, 4, 0, 0, 68, - 88, 66, 67, 116, 139, 68, - 62, 73, 113, 92, 4, 72, - 76, 225, 161, 30, 132, 222, - 233, 1, 0, 0, 0, 36, - 4, 0, 0, 6, 0, 0, - 0, 56, 0, 0, 0, 248, - 0, 0, 0, 244, 1, 0, - 0, 112, 2, 0, 0, 128, - 3, 0, 0, 180, 3, 0, - 0, 65, 111, 110, 57, 184, - 0, 0, 0, 184, 0, 0, - 0, 0, 2, 254, 255, 132, - 0, 0, 0, 52, 0, 0, - 0, 1, 0, 36, 0, 0, - 0, 48, 0, 0, 0, 48, - 0, 0, 0, 36, 0, 1, - 0, 48, 0, 0, 0, 0, - 0, 3, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 2, 254, 255, 81, - 0, 0, 5, 4, 0, 15, - 160, 0, 0, 0, 0, 0, - 0, 128, 63, 0, 0, 0, - 0, 0, 0, 0, 0, 31, - 0, 0, 2, 5, 0, 0, - 128, 0, 0, 15, 144, 4, - 0, 0, 4, 0, 0, 3, - 224, 0, 0, 228, 144, 2, - 0, 238, 160, 2, 0, 228, - 160, 4, 0, 0, 4, 0, - 0, 12, 224, 0, 0, 20, - 144, 3, 0, 180, 160, 3, - 0, 20, 160, 4, 0, 0, - 4, 0, 0, 3, 128, 0, - 0, 228, 144, 1, 0, 238, - 160, 1, 0, 228, 160, 2, - 0, 0, 3, 0, 0, 3, - 192, 0, 0, 228, 128, 0, - 0, 228, 160, 1, 0, 0, - 2, 0, 0, 12, 192, 4, - 0, 68, 160, 255, 255, 0, - 0, 83, 72, 68, 82, 244, - 0, 0, 0, 64, 0, 1, - 0, 61, 0, 0, 0, 89, - 0, 0, 4, 70, 142, 32, - 0, 0, 0, 0, 0, 3, - 0, 0, 0, 95, 0, 0, - 3, 50, 16, 16, 0, 0, - 0, 0, 0, 103, 0, 0, - 4, 242, 32, 16, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 101, 0, 0, 3, 50, - 32, 16, 0, 1, 0, 0, - 0, 101, 0, 0, 3, 194, - 32, 16, 0, 1, 0, 0, - 0, 50, 0, 0, 11, 50, - 32, 16, 0, 0, 0, 0, - 0, 70, 16, 16, 0, 0, - 0, 0, 0, 230, 138, 32, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 70, 128, 32, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 0, 0, - 8, 194, 32, 16, 0, 0, - 0, 0, 0, 2, 64, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 128, 63, 50, - 0, 0, 11, 50, 32, 16, - 0, 1, 0, 0, 0, 70, - 16, 16, 0, 0, 0, 0, - 0, 230, 138, 32, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 70, 128, 32, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 50, 0, 0, 11, 194, - 32, 16, 0, 1, 0, 0, - 0, 6, 20, 16, 0, 0, - 0, 0, 0, 166, 142, 32, - 0, 0, 0, 0, 0, 2, - 0, 0, 0, 6, 132, 32, - 0, 0, 0, 0, 0, 2, - 0, 0, 0, 62, 0, 0, - 1, 83, 84, 65, 84, 116, - 0, 0, 0, 5, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 82, - 68, 69, 70, 8, 1, 0, - 0, 1, 0, 0, 0, 64, - 0, 0, 0, 1, 0, 0, - 0, 28, 0, 0, 0, 0, - 4, 254, 255, 0, 1, 0, - 0, 212, 0, 0, 0, 60, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, - 0, 99, 98, 48, 0, 60, - 0, 0, 0, 3, 0, 0, - 0, 88, 0, 0, 0, 48, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 160, - 0, 0, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 2, - 0, 0, 0, 172, 0, 0, - 0, 0, 0, 0, 0, 188, - 0, 0, 0, 16, 0, 0, - 0, 16, 0, 0, 0, 2, - 0, 0, 0, 172, 0, 0, - 0, 0, 0, 0, 0, 198, - 0, 0, 0, 32, 0, 0, - 0, 16, 0, 0, 0, 2, - 0, 0, 0, 172, 0, 0, - 0, 0, 0, 0, 0, 81, - 117, 97, 100, 68, 101, 115, - 99, 0, 171, 171, 171, 1, - 0, 3, 0, 1, 0, 4, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 101, 120, - 67, 111, 111, 114, 100, 115, - 0, 77, 97, 115, 107, 84, - 101, 120, 67, 111, 111, 114, - 100, 115, 0, 77, 105, 99, - 114, 111, 115, 111, 102, 116, - 32, 40, 82, 41, 32, 72, - 76, 83, 76, 32, 83, 104, - 97, 100, 101, 114, 32, 67, - 111, 109, 112, 105, 108, 101, - 114, 32, 57, 46, 50, 57, - 46, 57, 53, 50, 46, 51, - 49, 49, 49, 0, 171, 171, - 171, 73, 83, 71, 78, 44, - 0, 0, 0, 1, 0, 0, - 0, 8, 0, 0, 0, 32, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3, - 0, 0, 0, 0, 0, 0, - 0, 7, 3, 0, 0, 80, - 79, 83, 73, 84, 73, 79, - 78, 0, 171, 171, 171, 79, - 83, 71, 78, 104, 0, 0, - 0, 3, 0, 0, 0, 8, - 0, 0, 0, 80, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 15, - 0, 0, 0, 92, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 1, 0, 0, 0, 3, - 12, 0, 0, 92, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 1, 0, 0, 0, 12, - 3, 0, 0, 83, 86, 95, - 80, 111, 115, 105, 116, 105, - 111, 110, 0, 84, 69, 88, - 67, 79, 79, 82, 68, 0, - 171, 171, 171, 85, 18, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 232, - 9, 0, 0, 68, 88, 66, - 67, 45, 80, 33, 8, 5, - 16, 134, 134, 115, 16, 129, - 43, 103, 216, 255, 210, 1, - 0, 0, 0, 232, 9, 0, - 0, 6, 0, 0, 0, 56, - 0, 0, 0, 248, 2, 0, - 0, 8, 7, 0, 0, 132, - 7, 0, 0, 68, 9, 0, - 0, 180, 9, 0, 0, 65, - 111, 110, 57, 184, 2, 0, - 0, 184, 2, 0, 0, 0, - 2, 255, 255, 120, 2, 0, - 0, 64, 0, 0, 0, 2, - 0, 40, 0, 0, 0, 64, - 0, 0, 0, 64, 0, 1, - 0, 36, 0, 0, 0, 64, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 6, 0, 4, 0, 3, - 0, 0, 0, 0, 0, 1, - 2, 255, 255, 31, 0, 0, - 2, 0, 0, 0, 128, 0, - 0, 15, 176, 31, 0, 0, - 2, 0, 0, 0, 144, 0, - 8, 15, 160, 2, 0, 0, - 3, 0, 0, 1, 128, 0, - 0, 0, 176, 0, 0, 85, - 160, 1, 0, 0, 2, 0, - 0, 2, 128, 0, 0, 85, - 176, 2, 0, 0, 3, 1, - 0, 1, 128, 0, 0, 0, - 176, 0, 0, 0, 160, 1, - 0, 0, 2, 1, 0, 2, - 128, 0, 0, 85, 176, 66, - 0, 0, 3, 0, 0, 15, - 128, 0, 0, 228, 128, 0, - 8, 228, 160, 66, 0, 0, - 3, 1, 0, 15, 128, 1, - 0, 228, 128, 0, 8, 228, - 160, 5, 0, 0, 3, 0, - 0, 1, 128, 0, 0, 255, - 128, 3, 0, 85, 160, 4, - 0, 0, 4, 0, 0, 1, - 128, 3, 0, 0, 160, 1, - 0, 255, 128, 0, 0, 0, - 128, 2, 0, 0, 3, 1, - 0, 1, 128, 0, 0, 0, - 176, 0, 0, 170, 160, 1, - 0, 0, 2, 1, 0, 2, - 128, 0, 0, 85, 176, 2, - 0, 0, 3, 2, 0, 1, - 128, 0, 0, 0, 176, 0, - 0, 255, 160, 1, 0, 0, - 2, 2, 0, 2, 128, 0, - 0, 85, 176, 66, 0, 0, - 3, 1, 0, 15, 128, 1, - 0, 228, 128, 0, 8, 228, - 160, 66, 0, 0, 3, 2, - 0, 15, 128, 2, 0, 228, - 128, 0, 8, 228, 160, 4, - 0, 0, 4, 0, 0, 1, - 128, 3, 0, 170, 160, 1, - 0, 255, 128, 0, 0, 0, - 128, 4, 0, 0, 4, 0, - 0, 1, 128, 3, 0, 255, - 160, 2, 0, 255, 128, 0, - 0, 0, 128, 2, 0, 0, - 3, 1, 0, 1, 128, 0, - 0, 0, 176, 1, 0, 0, - 160, 1, 0, 0, 2, 1, - 0, 2, 128, 0, 0, 85, - 176, 2, 0, 0, 3, 2, - 0, 1, 128, 0, 0, 0, - 176, 1, 0, 85, 160, 1, - 0, 0, 2, 2, 0, 2, - 128, 0, 0, 85, 176, 66, - 0, 0, 3, 1, 0, 15, - 128, 1, 0, 228, 128, 0, - 8, 228, 160, 66, 0, 0, - 3, 2, 0, 15, 128, 2, - 0, 228, 128, 0, 8, 228, - 160, 4, 0, 0, 4, 0, - 0, 1, 128, 4, 0, 0, - 160, 1, 0, 255, 128, 0, - 0, 0, 128, 4, 0, 0, - 4, 0, 0, 1, 128, 4, - 0, 85, 160, 2, 0, 255, - 128, 0, 0, 0, 128, 2, - 0, 0, 3, 1, 0, 1, - 128, 0, 0, 0, 176, 1, - 0, 170, 160, 1, 0, 0, - 2, 1, 0, 2, 128, 0, - 0, 85, 176, 2, 0, 0, - 3, 2, 0, 1, 128, 0, - 0, 0, 176, 1, 0, 255, - 160, 1, 0, 0, 2, 2, - 0, 2, 128, 0, 0, 85, - 176, 66, 0, 0, 3, 1, - 0, 15, 128, 1, 0, 228, - 128, 0, 8, 228, 160, 66, - 0, 0, 3, 2, 0, 15, - 128, 2, 0, 228, 128, 0, - 8, 228, 160, 4, 0, 0, - 4, 0, 0, 1, 128, 4, - 0, 170, 160, 1, 0, 255, - 128, 0, 0, 0, 128, 4, - 0, 0, 4, 0, 0, 1, - 128, 4, 0, 255, 160, 2, - 0, 255, 128, 0, 0, 0, - 128, 2, 0, 0, 3, 1, - 0, 1, 128, 0, 0, 0, - 176, 2, 0, 0, 160, 1, - 0, 0, 2, 1, 0, 2, - 128, 0, 0, 85, 176, 66, - 0, 0, 3, 1, 0, 15, - 128, 1, 0, 228, 128, 0, - 8, 228, 160, 4, 0, 0, - 4, 0, 0, 1, 128, 5, - 0, 0, 160, 1, 0, 255, - 128, 0, 0, 0, 128, 5, - 0, 0, 3, 0, 0, 15, - 128, 0, 0, 0, 128, 6, - 0, 228, 160, 1, 0, 0, - 2, 0, 8, 15, 128, 0, - 0, 228, 128, 255, 255, 0, - 0, 83, 72, 68, 82, 8, - 4, 0, 0, 64, 0, 0, - 0, 2, 1, 0, 0, 89, - 0, 0, 4, 70, 142, 32, - 0, 0, 0, 0, 0, 10, - 0, 0, 0, 90, 0, 0, - 3, 0, 96, 16, 0, 0, - 0, 0, 0, 88, 24, 0, - 4, 0, 112, 16, 0, 0, - 0, 0, 0, 85, 85, 0, - 0, 98, 16, 0, 3, 50, - 16, 16, 0, 1, 0, 0, - 0, 101, 0, 0, 3, 242, - 32, 16, 0, 0, 0, 0, - 0, 104, 0, 0, 2, 4, - 0, 0, 0, 0, 0, 0, - 8, 242, 0, 16, 0, 0, - 0, 0, 0, 6, 16, 16, - 0, 1, 0, 0, 0, 38, - 135, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 54, - 0, 0, 5, 82, 0, 16, - 0, 1, 0, 0, 0, 86, - 7, 16, 0, 0, 0, 0, - 0, 54, 0, 0, 5, 162, - 0, 16, 0, 1, 0, 0, - 0, 86, 21, 16, 0, 1, - 0, 0, 0, 69, 0, 0, - 9, 242, 0, 16, 0, 2, - 0, 0, 0, 230, 10, 16, - 0, 1, 0, 0, 0, 70, - 126, 16, 0, 0, 0, 0, - 0, 0, 96, 16, 0, 0, - 0, 0, 0, 69, 0, 0, - 9, 242, 0, 16, 0, 1, - 0, 0, 0, 70, 0, 16, - 0, 1, 0, 0, 0, 70, - 126, 16, 0, 0, 0, 0, - 0, 0, 96, 16, 0, 0, - 0, 0, 0, 56, 0, 0, - 8, 18, 0, 16, 0, 1, - 0, 0, 0, 58, 0, 16, - 0, 2, 0, 0, 0, 26, - 128, 32, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 50, - 0, 0, 10, 18, 0, 16, - 0, 1, 0, 0, 0, 10, - 128, 32, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 58, - 0, 16, 0, 1, 0, 0, - 0, 10, 0, 16, 0, 1, - 0, 0, 0, 54, 0, 0, - 5, 162, 0, 16, 0, 0, - 0, 0, 0, 86, 21, 16, - 0, 1, 0, 0, 0, 69, - 0, 0, 9, 242, 0, 16, - 0, 2, 0, 0, 0, 70, - 0, 16, 0, 0, 0, 0, - 0, 70, 126, 16, 0, 0, - 0, 0, 0, 0, 96, 16, - 0, 0, 0, 0, 0, 69, - 0, 0, 9, 242, 0, 16, - 0, 0, 0, 0, 0, 230, - 10, 16, 0, 0, 0, 0, - 0, 70, 126, 16, 0, 0, - 0, 0, 0, 0, 96, 16, - 0, 0, 0, 0, 0, 50, - 0, 0, 10, 18, 0, 16, - 0, 0, 0, 0, 0, 42, - 128, 32, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 58, - 0, 16, 0, 2, 0, 0, - 0, 10, 0, 16, 0, 1, - 0, 0, 0, 50, 0, 0, - 10, 18, 0, 16, 0, 0, - 0, 0, 0, 58, 128, 32, - 0, 0, 0, 0, 0, 6, - 0, 0, 0, 58, 0, 16, - 0, 0, 0, 0, 0, 10, - 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 242, - 0, 16, 0, 1, 0, 0, - 0, 6, 16, 16, 0, 1, - 0, 0, 0, 38, 135, 32, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 54, 0, 0, - 5, 82, 0, 16, 0, 2, - 0, 0, 0, 86, 7, 16, - 0, 1, 0, 0, 0, 54, - 0, 0, 5, 162, 0, 16, - 0, 2, 0, 0, 0, 86, - 21, 16, 0, 1, 0, 0, - 0, 69, 0, 0, 9, 242, - 0, 16, 0, 3, 0, 0, - 0, 70, 0, 16, 0, 2, - 0, 0, 0, 70, 126, 16, - 0, 0, 0, 0, 0, 0, - 96, 16, 0, 0, 0, 0, - 0, 69, 0, 0, 9, 242, - 0, 16, 0, 2, 0, 0, - 0, 230, 10, 16, 0, 2, - 0, 0, 0, 70, 126, 16, - 0, 0, 0, 0, 0, 0, - 96, 16, 0, 0, 0, 0, - 0, 50, 0, 0, 10, 18, - 0, 16, 0, 0, 0, 0, - 0, 10, 128, 32, 0, 0, - 0, 0, 0, 7, 0, 0, - 0, 58, 0, 16, 0, 3, - 0, 0, 0, 10, 0, 16, - 0, 0, 0, 0, 0, 50, - 0, 0, 10, 18, 0, 16, - 0, 0, 0, 0, 0, 26, - 128, 32, 0, 0, 0, 0, - 0, 7, 0, 0, 0, 58, - 0, 16, 0, 2, 0, 0, - 0, 10, 0, 16, 0, 0, - 0, 0, 0, 54, 0, 0, - 5, 162, 0, 16, 0, 1, - 0, 0, 0, 86, 21, 16, - 0, 1, 0, 0, 0, 69, - 0, 0, 9, 242, 0, 16, - 0, 2, 0, 0, 0, 70, - 0, 16, 0, 1, 0, 0, - 0, 70, 126, 16, 0, 0, - 0, 0, 0, 0, 96, 16, - 0, 0, 0, 0, 0, 69, - 0, 0, 9, 242, 0, 16, - 0, 1, 0, 0, 0, 230, - 10, 16, 0, 1, 0, 0, - 0, 70, 126, 16, 0, 0, - 0, 0, 0, 0, 96, 16, - 0, 0, 0, 0, 0, 50, - 0, 0, 10, 18, 0, 16, - 0, 0, 0, 0, 0, 42, - 128, 32, 0, 0, 0, 0, - 0, 7, 0, 0, 0, 58, - 0, 16, 0, 2, 0, 0, - 0, 10, 0, 16, 0, 0, - 0, 0, 0, 50, 0, 0, - 10, 18, 0, 16, 0, 0, - 0, 0, 0, 58, 128, 32, - 0, 0, 0, 0, 0, 7, - 0, 0, 0, 58, 0, 16, - 0, 1, 0, 0, 0, 10, - 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 18, - 0, 16, 0, 1, 0, 0, - 0, 10, 16, 16, 0, 1, - 0, 0, 0, 10, 128, 32, - 0, 0, 0, 0, 0, 2, - 0, 0, 0, 54, 0, 0, - 5, 34, 0, 16, 0, 1, - 0, 0, 0, 26, 16, 16, - 0, 1, 0, 0, 0, 69, - 0, 0, 9, 242, 0, 16, - 0, 1, 0, 0, 0, 70, - 0, 16, 0, 1, 0, 0, - 0, 70, 126, 16, 0, 0, - 0, 0, 0, 0, 96, 16, - 0, 0, 0, 0, 0, 50, - 0, 0, 10, 18, 0, 16, - 0, 0, 0, 0, 0, 10, - 128, 32, 0, 0, 0, 0, - 0, 8, 0, 0, 0, 58, - 0, 16, 0, 1, 0, 0, - 0, 10, 0, 16, 0, 0, - 0, 0, 0, 56, 0, 0, - 8, 242, 32, 16, 0, 0, - 0, 0, 0, 6, 0, 16, - 0, 0, 0, 0, 0, 70, - 142, 32, 0, 0, 0, 0, - 0, 9, 0, 0, 0, 62, - 0, 0, 1, 83, 84, 65, - 84, 116, 0, 0, 0, 30, - 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 2, - 0, 0, 0, 5, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 9, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 82, 68, 69, 70, 184, - 1, 0, 0, 1, 0, 0, - 0, 148, 0, 0, 0, 3, - 0, 0, 0, 28, 0, 0, - 0, 0, 4, 255, 255, 0, - 1, 0, 0, 132, 1, 0, - 0, 124, 0, 0, 0, 3, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 139, 0, 0, - 0, 2, 0, 0, 0, 5, - 0, 0, 0, 4, 0, 0, - 0, 255, 255, 255, 255, 0, - 0, 0, 0, 1, 0, 0, - 0, 12, 0, 0, 0, 143, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, - 0, 115, 83, 104, 97, 100, - 111, 119, 83, 97, 109, 112, - 108, 101, 114, 0, 116, 101, - 120, 0, 99, 98, 49, 0, - 171, 143, 0, 0, 0, 4, - 0, 0, 0, 172, 0, 0, - 0, 160, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 12, 1, 0, 0, 0, - 0, 0, 0, 48, 0, 0, - 0, 2, 0, 0, 0, 28, + 101, 116, 0, 171, 171, 231, + 17, 0, 0, 0, 0, 0, + 0, 80, 49, 0, 4, 7, + 0, 0, 68, 88, 66, 67, + 171, 7, 14, 215, 173, 41, + 24, 247, 237, 1, 38, 39, + 209, 221, 241, 232, 1, 0, + 0, 0, 4, 7, 0, 0, + 6, 0, 0, 0, 56, 0, + 0, 0, 148, 1, 0, 0, + 104, 3, 0, 0, 228, 3, + 0, 0, 96, 6, 0, 0, + 148, 6, 0, 0, 65, 111, + 110, 57, 84, 1, 0, 0, + 84, 1, 0, 0, 0, 2, + 254, 255, 252, 0, 0, 0, + 88, 0, 0, 0, 4, 0, + 36, 0, 0, 0, 84, 0, + 0, 0, 84, 0, 0, 0, + 36, 0, 1, 0, 84, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 44, 1, 0, 0, 48, - 0, 0, 0, 48, 0, 0, - 0, 0, 0, 0, 0, 60, - 1, 0, 0, 0, 0, 0, - 0, 76, 1, 0, 0, 96, - 0, 0, 0, 48, 0, 0, - 0, 2, 0, 0, 0, 88, - 1, 0, 0, 0, 0, 0, - 0, 104, 1, 0, 0, 144, - 0, 0, 0, 16, 0, 0, - 0, 2, 0, 0, 0, 116, - 1, 0, 0, 0, 0, 0, - 0, 66, 108, 117, 114, 79, - 102, 102, 115, 101, 116, 115, - 72, 0, 171, 171, 171, 1, - 0, 3, 0, 1, 0, 4, - 0, 3, 0, 0, 0, 0, - 0, 0, 0, 66, 108, 117, - 114, 79, 102, 102, 115, 101, - 116, 115, 86, 0, 171, 171, - 171, 1, 0, 3, 0, 1, - 0, 4, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 66, - 108, 117, 114, 87, 101, 105, - 103, 104, 116, 115, 0, 1, - 0, 3, 0, 1, 0, 4, - 0, 3, 0, 0, 0, 0, - 0, 0, 0, 83, 104, 97, - 100, 111, 119, 67, 111, 108, - 111, 114, 0, 1, 0, 3, - 0, 1, 0, 4, 0, 0, + 0, 0, 2, 0, 1, 0, + 2, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 2, 0, + 3, 0, 0, 0, 0, 0, + 1, 0, 3, 0, 1, 0, + 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, + 254, 255, 81, 0, 0, 5, + 6, 0, 15, 160, 0, 0, + 128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 2, + 5, 0, 0, 128, 0, 0, + 15, 144, 4, 0, 0, 4, + 0, 0, 3, 224, 0, 0, + 228, 144, 2, 0, 238, 160, + 2, 0, 228, 160, 4, 0, + 0, 4, 0, 0, 3, 128, + 0, 0, 228, 144, 1, 0, + 238, 160, 1, 0, 228, 160, + 2, 0, 0, 3, 0, 0, + 4, 128, 0, 0, 0, 128, + 6, 0, 0, 160, 5, 0, + 0, 3, 0, 0, 4, 128, + 0, 0, 170, 128, 5, 0, + 0, 160, 5, 0, 0, 3, + 1, 0, 1, 128, 0, 0, + 170, 128, 6, 0, 85, 160, + 2, 0, 0, 3, 0, 0, + 4, 128, 0, 0, 85, 129, + 6, 0, 0, 160, 2, 0, + 0, 3, 0, 0, 3, 192, + 0, 0, 228, 128, 0, 0, + 228, 160, 5, 0, 0, 3, + 0, 0, 1, 128, 0, 0, + 170, 128, 5, 0, 85, 160, + 5, 0, 0, 3, 1, 0, + 2, 128, 0, 0, 0, 128, + 6, 0, 85, 160, 1, 0, + 0, 2, 1, 0, 4, 128, + 6, 0, 0, 160, 8, 0, + 0, 3, 0, 0, 8, 224, + 1, 0, 228, 128, 3, 0, + 228, 160, 8, 0, 0, 3, + 0, 0, 4, 224, 1, 0, + 228, 128, 4, 0, 228, 160, + 1, 0, 0, 2, 0, 0, + 12, 192, 6, 0, 36, 160, + 255, 255, 0, 0, 83, 72, + 68, 82, 204, 1, 0, 0, + 64, 0, 1, 0, 115, 0, + 0, 0, 89, 0, 0, 4, + 70, 142, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 89, 0, 0, 4, 70, 142, + 32, 0, 1, 0, 0, 0, + 4, 0, 0, 0, 95, 0, + 0, 3, 50, 16, 16, 0, + 0, 0, 0, 0, 103, 0, + 0, 4, 242, 32, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 50, 32, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 194, 32, 16, 0, 1, 0, + 0, 0, 104, 0, 0, 2, + 2, 0, 0, 0, 54, 0, + 0, 8, 194, 32, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 11, 50, 0, + 16, 0, 0, 0, 0, 0, + 70, 16, 16, 0, 0, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 50, 32, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 0, 0, 0, 8, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 8, 50, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 56, 0, 0, 10, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 63, 0, 0, + 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 16, 0, 0, 8, 66, 32, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 70, 130, 32, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 8, + 130, 32, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 130, + 32, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 50, 32, 16, 0, + 1, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 116, 0, 0, 0, + 12, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 82, 68, 69, 70, + 116, 2, 0, 0, 2, 0, + 0, 0, 100, 0, 0, 0, + 2, 0, 0, 0, 28, 0, + 0, 0, 0, 4, 254, 255, + 0, 1, 0, 0, 67, 2, + 0, 0, 92, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 96, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 99, 98, 48, 0, 99, 98, + 50, 0, 92, 0, 0, 0, + 3, 0, 0, 0, 148, 0, + 0, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, + 7, 0, 0, 0, 16, 1, + 0, 0, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 220, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, + 232, 0, 0, 0, 0, 0, + 0, 0, 248, 0, 0, 0, + 16, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 232, 0, 0, 0, 0, 0, + 0, 0, 2, 1, 0, 0, + 32, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, + 232, 0, 0, 0, 0, 0, + 0, 0, 81, 117, 97, 100, + 68, 101, 115, 99, 0, 171, + 171, 171, 1, 0, 3, 0, + 1, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 84, 101, 120, 67, 111, 111, + 114, 100, 115, 0, 77, 97, + 115, 107, 84, 101, 120, 67, + 111, 111, 114, 100, 115, 0, + 184, 1, 0, 0, 0, 0, + 0, 0, 44, 0, 0, 0, + 2, 0, 0, 0, 208, 1, + 0, 0, 0, 0, 0, 0, + 224, 1, 0, 0, 48, 0, + 0, 0, 8, 0, 0, 0, + 2, 0, 0, 0, 236, 1, + 0, 0, 0, 0, 0, 0, + 252, 1, 0, 0, 64, 0, + 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 4, 2, + 0, 0, 0, 0, 0, 0, + 20, 2, 0, 0, 80, 0, + 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 236, 1, + 0, 0, 0, 0, 0, 0, + 28, 2, 0, 0, 88, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 32, 2, + 0, 0, 0, 0, 0, 0, + 48, 2, 0, 0, 92, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 32, 2, + 0, 0, 0, 0, 0, 0, + 56, 2, 0, 0, 96, 0, + 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 32, 2, + 0, 0, 0, 0, 0, 0, + 68, 101, 118, 105, 99, 101, + 83, 112, 97, 99, 101, 84, + 111, 85, 115, 101, 114, 83, + 112, 97, 99, 101, 0, 171, + 3, 0, 3, 0, 3, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 100, 105, + 109, 101, 110, 115, 105, 111, + 110, 115, 0, 171, 1, 0, + 3, 0, 1, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 100, 105, 102, 102, + 0, 171, 171, 171, 1, 0, + 3, 0, 1, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 99, 101, 110, 116, + 101, 114, 49, 0, 65, 0, + 171, 171, 0, 0, 3, 0, + 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 114, 97, 100, 105, 117, 115, + 49, 0, 115, 113, 95, 114, + 97, 100, 105, 117, 115, 49, 0, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 40, 82, 41, 32, 72, 76, 83, @@ -2473,44 +3089,365 @@ const BYTE d2deffect[] = 112, 105, 108, 101, 114, 32, 57, 46, 50, 57, 46, 57, 53, 50, 46, 51, 49, 49, - 49, 0, 171, 171, 171, 73, - 83, 71, 78, 104, 0, 0, - 0, 3, 0, 0, 0, 8, - 0, 0, 0, 80, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 15, - 0, 0, 0, 92, 0, 0, + 49, 0, 73, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 1, 0, 0, 0, 3, - 3, 0, 0, 92, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 1, 0, 0, 0, 12, - 0, 0, 0, 83, 86, 95, - 80, 111, 115, 105, 116, 105, - 111, 110, 0, 84, 69, 88, - 67, 79, 79, 82, 68, 0, - 171, 171, 171, 79, 83, 71, - 78, 44, 0, 0, 0, 1, - 0, 0, 0, 8, 0, 0, - 0, 32, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 7, 3, 0, 0, + 80, 79, 83, 73, 84, 73, + 79, 78, 0, 171, 171, 171, + 79, 83, 71, 78, 104, 0, + 0, 0, 3, 0, 0, 0, + 8, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, - 0, 83, 86, 95, 84, 97, - 114, 103, 101, 116, 0, 171, - 171, 145, 22, 0, 0, 0, - 0, 0, 0, 80, 49, 0, - 4, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 128, 63, - 1, 0, 0, 0, 0, 0, - 128, 63, 1, 0, 0, 0, - 0, 0, 128, 63, 1, 0, - 0, 0, 0, 0, 128, 63, 1, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 92, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 3, 12, 0, 0, 92, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 12, 3, 0, 0, 83, 86, + 95, 80, 111, 115, 105, 116, + 105, 111, 110, 0, 84, 69, + 88, 67, 79, 79, 82, 68, + 0, 171, 171, 171, 166, 27, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 144, 7, 0, 0, 68, 88, + 66, 67, 35, 93, 208, 85, + 241, 8, 66, 139, 231, 63, + 6, 177, 181, 56, 138, 103, + 1, 0, 0, 0, 144, 7, + 0, 0, 6, 0, 0, 0, + 56, 0, 0, 0, 180, 1, + 0, 0, 12, 4, 0, 0, + 136, 4, 0, 0, 236, 6, + 0, 0, 92, 7, 0, 0, + 65, 111, 110, 57, 116, 1, + 0, 0, 116, 1, 0, 0, + 0, 2, 255, 255, 60, 1, + 0, 0, 56, 0, 0, 0, + 1, 0, 44, 0, 0, 0, + 56, 0, 0, 0, 56, 0, + 2, 0, 36, 0, 0, 0, + 56, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 4, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 1, 2, + 255, 255, 81, 0, 0, 5, + 2, 0, 15, 160, 0, 0, + 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 2, + 0, 0, 0, 128, 0, 0, + 15, 176, 31, 0, 0, 2, + 0, 0, 0, 144, 0, 8, + 15, 160, 31, 0, 0, 2, + 0, 0, 0, 144, 1, 8, + 15, 160, 5, 0, 0, 3, + 0, 0, 8, 128, 1, 0, + 255, 160, 1, 0, 255, 160, + 2, 0, 0, 3, 0, 0, + 3, 128, 0, 0, 235, 176, + 1, 0, 228, 161, 90, 0, + 0, 4, 0, 0, 8, 128, + 0, 0, 228, 128, 0, 0, + 228, 128, 0, 0, 255, 129, + 5, 0, 0, 3, 0, 0, + 8, 128, 0, 0, 255, 128, + 2, 0, 0, 160, 1, 0, + 0, 2, 0, 0, 4, 128, + 1, 0, 255, 160, 8, 0, + 0, 3, 0, 0, 1, 128, + 0, 0, 228, 128, 0, 0, + 228, 160, 6, 0, 0, 2, + 0, 0, 1, 128, 0, 0, + 0, 128, 5, 0, 0, 3, + 0, 0, 1, 128, 0, 0, + 0, 128, 0, 0, 255, 128, + 1, 0, 0, 2, 0, 0, + 2, 128, 2, 0, 0, 160, + 66, 0, 0, 3, 1, 0, + 15, 128, 0, 0, 228, 176, + 1, 8, 228, 160, 66, 0, + 0, 3, 2, 0, 15, 128, + 0, 0, 228, 128, 0, 8, + 228, 160, 1, 0, 0, 2, + 0, 0, 8, 128, 1, 0, + 255, 160, 4, 0, 0, 4, + 0, 0, 1, 128, 0, 0, + 0, 128, 0, 0, 170, 161, + 0, 0, 255, 129, 5, 0, + 0, 3, 1, 0, 15, 128, + 1, 0, 255, 128, 2, 0, + 228, 128, 88, 0, 0, 4, + 0, 0, 15, 128, 0, 0, + 0, 128, 2, 0, 85, 160, + 1, 0, 228, 128, 1, 0, + 0, 2, 0, 8, 15, 128, + 0, 0, 228, 128, 255, 255, + 0, 0, 83, 72, 68, 82, + 80, 2, 0, 0, 64, 0, + 0, 0, 148, 0, 0, 0, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 1, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 88, 24, 0, 4, + 0, 112, 16, 0, 1, 0, + 0, 0, 85, 85, 0, 0, + 98, 16, 0, 3, 50, 16, + 16, 0, 1, 0, 0, 0, + 98, 16, 0, 3, 194, 16, + 16, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 2, 0, + 0, 0, 0, 0, 0, 9, + 50, 0, 16, 0, 0, 0, + 0, 0, 230, 26, 16, 0, + 1, 0, 0, 0, 70, 128, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 54, 0, 0, 6, + 66, 0, 16, 0, 0, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 16, 0, 0, 8, + 66, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 15, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 12, + 18, 0, 16, 0, 0, 0, + 0, 0, 58, 128, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 63, + 14, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 66, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 29, 0, 0, 9, 66, 0, + 16, 0, 0, 0, 0, 0, + 58, 128, 32, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 34, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 63, 69, 0, 0, 9, + 242, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 31, 0, 4, 3, + 42, 0, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 8, + 242, 32, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 62, 0, + 0, 1, 21, 0, 0, 1, + 69, 0, 0, 9, 242, 0, + 16, 0, 0, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 1, 0, 0, 0, 0, 96, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 242, 32, + 16, 0, 0, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 14, 16, 0, + 1, 0, 0, 0, 62, 0, + 0, 1, 83, 84, 65, 84, + 116, 0, 0, 0, 18, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 82, 68, 69, 70, 92, 2, + 0, 0, 1, 0, 0, 0, + 224, 0, 0, 0, 5, 0, + 0, 0, 28, 0, 0, 0, + 0, 4, 255, 255, 0, 1, + 0, 0, 43, 2, 0, 0, + 188, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 197, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 210, 0, + 0, 0, 2, 0, 0, 0, + 5, 0, 0, 0, 4, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 1, 0, + 0, 0, 12, 0, 0, 0, + 214, 0, 0, 0, 2, 0, + 0, 0, 5, 0, 0, 0, + 4, 0, 0, 0, 255, 255, + 255, 255, 1, 0, 0, 0, + 1, 0, 0, 0, 12, 0, + 0, 0, 219, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 115, 83, + 97, 109, 112, 108, 101, 114, + 0, 115, 77, 97, 115, 107, + 83, 97, 109, 112, 108, 101, + 114, 0, 116, 101, 120, 0, + 109, 97, 115, 107, 0, 99, + 98, 50, 0, 171, 219, 0, + 0, 0, 7, 0, 0, 0, + 248, 0, 0, 0, 112, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 160, 1, + 0, 0, 0, 0, 0, 0, + 44, 0, 0, 0, 0, 0, + 0, 0, 184, 1, 0, 0, + 0, 0, 0, 0, 200, 1, + 0, 0, 48, 0, 0, 0, + 8, 0, 0, 0, 0, 0, + 0, 0, 212, 1, 0, 0, + 0, 0, 0, 0, 228, 1, + 0, 0, 64, 0, 0, 0, + 12, 0, 0, 0, 2, 0, + 0, 0, 236, 1, 0, 0, + 0, 0, 0, 0, 252, 1, + 0, 0, 80, 0, 0, 0, + 8, 0, 0, 0, 2, 0, + 0, 0, 212, 1, 0, 0, + 0, 0, 0, 0, 4, 2, + 0, 0, 88, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 0, 8, 2, 0, 0, + 0, 0, 0, 0, 24, 2, + 0, 0, 92, 0, 0, 0, + 4, 0, 0, 0, 2, 0, + 0, 0, 8, 2, 0, 0, + 0, 0, 0, 0, 32, 2, + 0, 0, 96, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 0, 8, 2, 0, 0, + 0, 0, 0, 0, 68, 101, + 118, 105, 99, 101, 83, 112, + 97, 99, 101, 84, 111, 85, + 115, 101, 114, 83, 112, 97, + 99, 101, 0, 171, 3, 0, + 3, 0, 3, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 100, 105, 109, 101, + 110, 115, 105, 111, 110, 115, + 0, 171, 1, 0, 3, 0, + 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 100, 105, 102, 102, 0, 171, + 171, 171, 1, 0, 3, 0, + 1, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 99, 101, 110, 116, 101, 114, + 49, 0, 65, 0, 171, 171, + 0, 0, 3, 0, 1, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 114, 97, + 100, 105, 117, 115, 49, 0, + 115, 113, 95, 114, 97, 100, + 105, 117, 115, 49, 0, 77, + 105, 99, 114, 111, 115, 111, + 102, 116, 32, 40, 82, 41, + 32, 72, 76, 83, 76, 32, + 83, 104, 97, 100, 101, 114, + 32, 67, 111, 109, 112, 105, + 108, 101, 114, 32, 57, 46, + 50, 57, 46, 57, 53, 50, + 46, 51, 49, 49, 49, 0, + 73, 83, 71, 78, 104, 0, + 0, 0, 3, 0, 0, 0, + 8, 0, 0, 0, 80, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 92, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 3, 3, 0, 0, 92, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 12, 12, 0, 0, 83, 86, + 95, 80, 111, 115, 105, 116, + 105, 111, 110, 0, 84, 69, + 88, 67, 79, 79, 82, 68, + 0, 171, 171, 171, 79, 83, + 71, 78, 44, 0, 0, 0, + 1, 0, 0, 0, 8, 0, + 0, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 83, 86, 95, 84, + 97, 114, 103, 101, 116, 0, + 171, 171, 194, 34, 0, 0, + 0, 0, 0, 0, 83, 97, + 109, 112, 108, 101, 77, 97, + 115, 107, 101, 100, 84, 101, + 120, 116, 117, 114, 101, 0, 36, 4, 0, 0, 68, 88, 66, 67, 116, 139, 68, 62, 73, 113, 92, 4, 72, 76, @@ -2688,396 +3625,146 @@ const BYTE d2deffect[] = 111, 115, 105, 116, 105, 111, 110, 0, 84, 69, 88, 67, 79, 79, 82, 68, 0, 171, - 171, 171, 184, 32, 0, 0, + 171, 171, 114, 42, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 172, 9, + 0, 0, 0, 0, 208, 3, 0, 0, 68, 88, 66, 67, - 110, 68, 159, 211, 251, 173, - 118, 80, 154, 213, 185, 171, - 243, 23, 113, 100, 1, 0, - 0, 0, 172, 9, 0, 0, + 145, 96, 208, 189, 244, 147, + 57, 205, 242, 133, 35, 176, + 39, 143, 121, 235, 1, 0, + 0, 0, 208, 3, 0, 0, 6, 0, 0, 0, 56, 0, - 0, 0, 220, 2, 0, 0, - 204, 6, 0, 0, 72, 7, - 0, 0, 8, 9, 0, 0, - 120, 9, 0, 0, 65, 111, - 110, 57, 156, 2, 0, 0, - 156, 2, 0, 0, 0, 2, - 255, 255, 104, 2, 0, 0, - 52, 0, 0, 0, 1, 0, - 40, 0, 0, 0, 52, 0, - 0, 0, 52, 0, 1, 0, - 36, 0, 0, 0, 52, 0, - 0, 0, 0, 0, 0, 0, - 3, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 1, 2, - 255, 255, 31, 0, 0, 2, - 0, 0, 0, 128, 0, 0, - 15, 176, 31, 0, 0, 2, - 0, 0, 0, 144, 0, 8, - 15, 160, 2, 0, 0, 3, - 0, 0, 2, 128, 0, 0, - 85, 176, 0, 0, 85, 160, + 0, 0, 224, 0, 0, 0, + 188, 1, 0, 0, 56, 2, + 0, 0, 44, 3, 0, 0, + 156, 3, 0, 0, 65, 111, + 110, 57, 160, 0, 0, 0, + 160, 0, 0, 0, 0, 2, + 255, 255, 116, 0, 0, 0, + 44, 0, 0, 0, 0, 0, + 44, 0, 0, 0, 44, 0, + 0, 0, 44, 0, 2, 0, + 36, 0, 0, 0, 44, 0, + 0, 0, 0, 0, 1, 1, + 1, 0, 1, 2, 255, 255, + 31, 0, 0, 2, 0, 0, + 0, 128, 0, 0, 15, 176, + 31, 0, 0, 2, 0, 0, + 0, 144, 0, 8, 15, 160, + 31, 0, 0, 2, 0, 0, + 0, 144, 1, 8, 15, 160, 1, 0, 0, 2, 0, 0, - 1, 128, 0, 0, 0, 176, - 2, 0, 0, 3, 1, 0, - 2, 128, 0, 0, 85, 176, - 0, 0, 0, 160, 1, 0, - 0, 2, 1, 0, 1, 128, - 0, 0, 0, 176, 66, 0, - 0, 3, 0, 0, 15, 128, - 0, 0, 228, 128, 0, 8, - 228, 160, 66, 0, 0, 3, - 1, 0, 15, 128, 1, 0, - 228, 128, 0, 8, 228, 160, - 5, 0, 0, 3, 0, 0, - 15, 128, 0, 0, 228, 128, - 3, 0, 85, 160, 4, 0, - 0, 4, 0, 0, 15, 128, - 3, 0, 0, 160, 1, 0, - 228, 128, 0, 0, 228, 128, - 2, 0, 0, 3, 1, 0, - 2, 128, 0, 0, 85, 176, - 0, 0, 170, 160, 1, 0, - 0, 2, 1, 0, 1, 128, - 0, 0, 0, 176, 2, 0, - 0, 3, 2, 0, 2, 128, - 0, 0, 85, 176, 0, 0, - 255, 160, 1, 0, 0, 2, - 2, 0, 1, 128, 0, 0, - 0, 176, 66, 0, 0, 3, - 1, 0, 15, 128, 1, 0, - 228, 128, 0, 8, 228, 160, - 66, 0, 0, 3, 2, 0, - 15, 128, 2, 0, 228, 128, - 0, 8, 228, 160, 4, 0, - 0, 4, 0, 0, 15, 128, - 3, 0, 170, 160, 1, 0, - 228, 128, 0, 0, 228, 128, - 4, 0, 0, 4, 0, 0, - 15, 128, 3, 0, 255, 160, - 2, 0, 228, 128, 0, 0, - 228, 128, 2, 0, 0, 3, - 1, 0, 2, 128, 0, 0, - 85, 176, 1, 0, 0, 160, - 1, 0, 0, 2, 1, 0, - 1, 128, 0, 0, 0, 176, - 2, 0, 0, 3, 2, 0, - 2, 128, 0, 0, 85, 176, - 1, 0, 85, 160, 1, 0, - 0, 2, 2, 0, 1, 128, - 0, 0, 0, 176, 66, 0, - 0, 3, 1, 0, 15, 128, - 1, 0, 228, 128, 0, 8, - 228, 160, 66, 0, 0, 3, - 2, 0, 15, 128, 2, 0, - 228, 128, 0, 8, 228, 160, - 4, 0, 0, 4, 0, 0, - 15, 128, 4, 0, 0, 160, - 1, 0, 228, 128, 0, 0, - 228, 128, 4, 0, 0, 4, - 0, 0, 15, 128, 4, 0, - 85, 160, 2, 0, 228, 128, - 0, 0, 228, 128, 2, 0, - 0, 3, 1, 0, 2, 128, - 0, 0, 85, 176, 1, 0, - 170, 160, 1, 0, 0, 2, - 1, 0, 1, 128, 0, 0, - 0, 176, 2, 0, 0, 3, - 2, 0, 2, 128, 0, 0, - 85, 176, 1, 0, 255, 160, - 1, 0, 0, 2, 2, 0, - 1, 128, 0, 0, 0, 176, + 3, 128, 0, 0, 235, 176, 66, 0, 0, 3, 1, 0, - 15, 128, 1, 0, 228, 128, + 15, 128, 0, 0, 228, 176, 0, 8, 228, 160, 66, 0, - 0, 3, 2, 0, 15, 128, - 2, 0, 228, 128, 0, 8, - 228, 160, 4, 0, 0, 4, - 0, 0, 15, 128, 4, 0, - 170, 160, 1, 0, 228, 128, - 0, 0, 228, 128, 4, 0, - 0, 4, 0, 0, 15, 128, - 4, 0, 255, 160, 2, 0, - 228, 128, 0, 0, 228, 128, - 2, 0, 0, 3, 1, 0, - 2, 128, 0, 0, 85, 176, - 2, 0, 0, 160, 1, 0, - 0, 2, 1, 0, 1, 128, - 0, 0, 0, 176, 66, 0, - 0, 3, 1, 0, 15, 128, - 1, 0, 228, 128, 0, 8, - 228, 160, 4, 0, 0, 4, - 0, 0, 15, 128, 5, 0, - 0, 160, 1, 0, 228, 128, - 0, 0, 228, 128, 1, 0, - 0, 2, 0, 8, 15, 128, - 0, 0, 228, 128, 255, 255, - 0, 0, 83, 72, 68, 82, - 232, 3, 0, 0, 64, 0, - 0, 0, 250, 0, 0, 0, - 89, 0, 0, 4, 70, 142, - 32, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 90, 0, - 0, 3, 0, 96, 16, 0, - 0, 0, 0, 0, 88, 24, - 0, 4, 0, 112, 16, 0, - 0, 0, 0, 0, 85, 85, - 0, 0, 98, 16, 0, 3, - 50, 16, 16, 0, 1, 0, - 0, 0, 101, 0, 0, 3, - 242, 32, 16, 0, 0, 0, - 0, 0, 104, 0, 0, 2, - 4, 0, 0, 0, 54, 0, - 0, 5, 82, 0, 16, 0, - 0, 0, 0, 0, 6, 16, - 16, 0, 1, 0, 0, 0, - 0, 0, 0, 8, 242, 0, - 16, 0, 1, 0, 0, 0, - 86, 21, 16, 0, 1, 0, - 0, 0, 134, 141, 32, 0, - 0, 0, 0, 0, 3, 0, - 0, 0, 54, 0, 0, 5, - 162, 0, 16, 0, 0, 0, - 0, 0, 6, 8, 16, 0, - 1, 0, 0, 0, 69, 0, - 0, 9, 242, 0, 16, 0, - 2, 0, 0, 0, 230, 10, - 16, 0, 0, 0, 0, 0, - 70, 126, 16, 0, 0, 0, - 0, 0, 0, 96, 16, 0, - 0, 0, 0, 0, 69, 0, - 0, 9, 242, 0, 16, 0, - 0, 0, 0, 0, 70, 0, - 16, 0, 0, 0, 0, 0, - 70, 126, 16, 0, 0, 0, - 0, 0, 0, 96, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 8, 242, 0, 16, 0, - 2, 0, 0, 0, 70, 14, - 16, 0, 2, 0, 0, 0, - 86, 133, 32, 0, 0, 0, - 0, 0, 6, 0, 0, 0, - 50, 0, 0, 10, 242, 0, - 16, 0, 0, 0, 0, 0, - 6, 128, 32, 0, 0, 0, - 0, 0, 6, 0, 0, 0, - 70, 14, 16, 0, 0, 0, - 0, 0, 70, 14, 16, 0, - 2, 0, 0, 0, 54, 0, - 0, 5, 82, 0, 16, 0, - 1, 0, 0, 0, 6, 16, - 16, 0, 1, 0, 0, 0, - 69, 0, 0, 9, 242, 0, - 16, 0, 2, 0, 0, 0, - 70, 0, 16, 0, 1, 0, - 0, 0, 70, 126, 16, 0, - 0, 0, 0, 0, 0, 96, - 16, 0, 0, 0, 0, 0, - 69, 0, 0, 9, 242, 0, - 16, 0, 1, 0, 0, 0, - 230, 10, 16, 0, 1, 0, - 0, 0, 70, 126, 16, 0, - 0, 0, 0, 0, 0, 96, - 16, 0, 0, 0, 0, 0, - 50, 0, 0, 10, 242, 0, - 16, 0, 0, 0, 0, 0, - 166, 138, 32, 0, 0, 0, - 0, 0, 6, 0, 0, 0, - 70, 14, 16, 0, 2, 0, - 0, 0, 70, 14, 16, 0, - 0, 0, 0, 0, 50, 0, - 0, 10, 242, 0, 16, 0, - 0, 0, 0, 0, 246, 143, - 32, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 70, 14, - 16, 0, 1, 0, 0, 0, - 70, 14, 16, 0, 0, 0, - 0, 0, 54, 0, 0, 5, - 82, 0, 16, 0, 1, 0, - 0, 0, 6, 16, 16, 0, - 1, 0, 0, 0, 0, 0, - 0, 8, 242, 0, 16, 0, - 2, 0, 0, 0, 86, 21, - 16, 0, 1, 0, 0, 0, - 134, 141, 32, 0, 0, 0, - 0, 0, 4, 0, 0, 0, - 54, 0, 0, 5, 162, 0, - 16, 0, 1, 0, 0, 0, - 6, 8, 16, 0, 2, 0, - 0, 0, 69, 0, 0, 9, - 242, 0, 16, 0, 3, 0, - 0, 0, 70, 0, 16, 0, - 1, 0, 0, 0, 70, 126, - 16, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 15, 128, + 0, 0, 228, 128, 1, 8, + 228, 160, 5, 0, 0, 3, + 0, 0, 15, 128, 0, 0, + 255, 128, 1, 0, 228, 128, + 1, 0, 0, 2, 0, 8, + 15, 128, 0, 0, 228, 128, + 255, 255, 0, 0, 83, 72, + 68, 82, 212, 0, 0, 0, + 64, 0, 0, 0, 53, 0, + 0, 0, 90, 0, 0, 3, 0, 96, 16, 0, 0, 0, - 0, 0, 69, 0, 0, 9, - 242, 0, 16, 0, 1, 0, - 0, 0, 230, 10, 16, 0, - 1, 0, 0, 0, 70, 126, - 16, 0, 0, 0, 0, 0, - 0, 96, 16, 0, 0, 0, - 0, 0, 50, 0, 0, 10, - 242, 0, 16, 0, 0, 0, - 0, 0, 6, 128, 32, 0, - 0, 0, 0, 0, 7, 0, - 0, 0, 70, 14, 16, 0, - 3, 0, 0, 0, 70, 14, - 16, 0, 0, 0, 0, 0, - 50, 0, 0, 10, 242, 0, - 16, 0, 0, 0, 0, 0, - 86, 133, 32, 0, 0, 0, - 0, 0, 7, 0, 0, 0, - 70, 14, 16, 0, 1, 0, - 0, 0, 70, 14, 16, 0, - 0, 0, 0, 0, 54, 0, - 0, 5, 82, 0, 16, 0, - 2, 0, 0, 0, 6, 16, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 1, 0, + 0, 0, 88, 24, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 88, 24, 0, 4, 0, 112, 16, 0, 1, 0, 0, 0, + 85, 85, 0, 0, 98, 16, + 0, 3, 50, 16, 16, 0, + 1, 0, 0, 0, 98, 16, + 0, 3, 194, 16, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 242, 32, 16, 0, + 0, 0, 0, 0, 104, 0, + 0, 2, 2, 0, 0, 0, 69, 0, 0, 9, 242, 0, - 16, 0, 1, 0, 0, 0, - 70, 0, 16, 0, 2, 0, + 16, 0, 0, 0, 0, 0, + 70, 16, 16, 0, 1, 0, 0, 0, 70, 126, 16, 0, 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 69, 0, 0, 9, 242, 0, - 16, 0, 2, 0, 0, 0, - 230, 10, 16, 0, 2, 0, + 16, 0, 1, 0, 0, 0, + 230, 26, 16, 0, 1, 0, 0, 0, 70, 126, 16, 0, - 0, 0, 0, 0, 0, 96, + 1, 0, 0, 0, 0, 96, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 242, 32, 16, 0, 0, 0, 0, 0, - 50, 0, 0, 10, 242, 0, - 16, 0, 0, 0, 0, 0, - 166, 138, 32, 0, 0, 0, - 0, 0, 7, 0, 0, 0, - 70, 14, 16, 0, 1, 0, - 0, 0, 70, 14, 16, 0, - 0, 0, 0, 0, 50, 0, - 0, 10, 242, 0, 16, 0, - 0, 0, 0, 0, 246, 143, - 32, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 70, 14, - 16, 0, 2, 0, 0, 0, 70, 14, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 8, - 34, 0, 16, 0, 1, 0, - 0, 0, 26, 16, 16, 0, - 1, 0, 0, 0, 10, 128, - 32, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 54, 0, - 0, 5, 18, 0, 16, 0, - 1, 0, 0, 0, 10, 16, - 16, 0, 1, 0, 0, 0, - 69, 0, 0, 9, 242, 0, - 16, 0, 1, 0, 0, 0, - 70, 0, 16, 0, 1, 0, - 0, 0, 70, 126, 16, 0, - 0, 0, 0, 0, 0, 96, - 16, 0, 0, 0, 0, 0, - 50, 0, 0, 10, 242, 32, - 16, 0, 0, 0, 0, 0, - 6, 128, 32, 0, 0, 0, - 0, 0, 8, 0, 0, 0, - 70, 14, 16, 0, 1, 0, - 0, 0, 70, 14, 16, 0, - 0, 0, 0, 0, 62, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 62, 0, 0, 1, 83, 84, 65, 84, - 116, 0, 0, 0, 29, 0, - 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 2, 0, - 0, 0, 4, 0, 0, 0, + 116, 0, 0, 0, 4, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 68, 69, 70, 184, 1, - 0, 0, 1, 0, 0, 0, - 148, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 82, 68, 69, 70, 236, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 28, 0, 0, 0, 0, 4, 255, 255, 0, 1, - 0, 0, 132, 1, 0, 0, - 124, 0, 0, 0, 3, 0, + 0, 0, 187, 0, 0, 0, + 156, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 139, 0, 0, 0, - 2, 0, 0, 0, 5, 0, - 0, 0, 4, 0, 0, 0, - 255, 255, 255, 255, 0, 0, - 0, 0, 1, 0, 0, 0, - 12, 0, 0, 0, 143, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 0, 0, 165, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, - 115, 83, 104, 97, 100, 111, - 119, 83, 97, 109, 112, 108, - 101, 114, 0, 116, 101, 120, - 0, 99, 98, 49, 0, 171, - 143, 0, 0, 0, 4, 0, - 0, 0, 172, 0, 0, 0, - 160, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 12, 1, 0, 0, 0, 0, - 0, 0, 48, 0, 0, 0, - 0, 0, 0, 0, 28, 1, - 0, 0, 0, 0, 0, 0, - 44, 1, 0, 0, 48, 0, - 0, 0, 48, 0, 0, 0, - 2, 0, 0, 0, 60, 1, - 0, 0, 0, 0, 0, 0, - 76, 1, 0, 0, 96, 0, - 0, 0, 48, 0, 0, 0, - 2, 0, 0, 0, 88, 1, - 0, 0, 0, 0, 0, 0, - 104, 1, 0, 0, 144, 0, - 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 116, 1, - 0, 0, 0, 0, 0, 0, - 66, 108, 117, 114, 79, 102, - 102, 115, 101, 116, 115, 72, - 0, 171, 171, 171, 1, 0, - 3, 0, 1, 0, 4, 0, - 3, 0, 0, 0, 0, 0, - 0, 0, 66, 108, 117, 114, - 79, 102, 102, 115, 101, 116, - 115, 86, 0, 171, 171, 171, - 1, 0, 3, 0, 1, 0, - 4, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 66, 108, - 117, 114, 87, 101, 105, 103, - 104, 116, 115, 0, 1, 0, - 3, 0, 1, 0, 4, 0, - 3, 0, 0, 0, 0, 0, - 0, 0, 83, 104, 97, 100, - 111, 119, 67, 111, 108, 111, - 114, 0, 1, 0, 3, 0, - 1, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 77, 105, 99, 114, 111, 115, - 111, 102, 116, 32, 40, 82, - 41, 32, 72, 76, 83, 76, - 32, 83, 104, 97, 100, 101, - 114, 32, 67, 111, 109, 112, - 105, 108, 101, 114, 32, 57, - 46, 50, 57, 46, 57, 53, - 50, 46, 51, 49, 49, 49, - 0, 171, 171, 171, 73, 83, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 178, 0, + 0, 0, 2, 0, 0, 0, + 5, 0, 0, 0, 4, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 1, 0, + 0, 0, 12, 0, 0, 0, + 182, 0, 0, 0, 2, 0, + 0, 0, 5, 0, 0, 0, + 4, 0, 0, 0, 255, 255, + 255, 255, 1, 0, 0, 0, + 1, 0, 0, 0, 12, 0, + 0, 0, 115, 83, 97, 109, + 112, 108, 101, 114, 0, 115, + 77, 97, 115, 107, 83, 97, + 109, 112, 108, 101, 114, 0, + 116, 101, 120, 0, 109, 97, + 115, 107, 0, 77, 105, 99, + 114, 111, 115, 111, 102, 116, + 32, 40, 82, 41, 32, 72, + 76, 83, 76, 32, 83, 104, + 97, 100, 101, 114, 32, 67, + 111, 109, 112, 105, 108, 101, + 114, 32, 57, 46, 50, 57, + 46, 57, 53, 50, 46, 51, + 49, 49, 49, 0, 73, 83, 71, 78, 104, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, 0, 80, 0, 0, 0, @@ -3091,7 +3778,7 @@ const BYTE d2deffect[] = 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 1, 0, 0, 0, 12, 0, + 1, 0, 0, 0, 12, 12, 0, 0, 83, 86, 95, 80, 111, 115, 105, 116, 105, 111, 110, 0, 84, 69, 88, 67, @@ -3105,294 +3792,1472 @@ const BYTE d2deffect[] = 0, 0, 15, 0, 0, 0, 83, 86, 95, 84, 97, 114, 103, 101, 116, 0, 171, 171, - 244, 36, 0, 0, 0, 0, - 0, 0, 80, 50, 0, 4, - 0, 0, 0, 1, 0, 0, + 174, 46, 0, 0, 0, 0, + 0, 0, 83, 97, 109, 112, + 108, 101, 84, 101, 120, 116, + 117, 114, 101, 87, 105, 116, + 104, 83, 104, 97, 100, 111, + 119, 0, 4, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 128, 63, 1, 0, 0, 0, + 0, 0, 128, 63, 1, 0, + 0, 0, 0, 0, 128, 63, + 1, 0, 0, 0, 0, 0, + 128, 63, 1, 0, 0, 0, + 3, 0, 0, 0, 255, 255, + 255, 255, 36, 4, 0, 0, + 68, 88, 66, 67, 116, 139, + 68, 62, 73, 113, 92, 4, + 72, 76, 225, 161, 30, 132, + 222, 233, 1, 0, 0, 0, + 36, 4, 0, 0, 6, 0, + 0, 0, 56, 0, 0, 0, + 248, 0, 0, 0, 244, 1, + 0, 0, 112, 2, 0, 0, + 128, 3, 0, 0, 180, 3, + 0, 0, 65, 111, 110, 57, + 184, 0, 0, 0, 184, 0, + 0, 0, 0, 2, 254, 255, + 132, 0, 0, 0, 52, 0, + 0, 0, 1, 0, 36, 0, + 0, 0, 48, 0, 0, 0, + 48, 0, 0, 0, 36, 0, + 1, 0, 48, 0, 0, 0, + 0, 0, 3, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 2, 254, 255, + 81, 0, 0, 5, 4, 0, + 15, 160, 0, 0, 0, 0, + 0, 0, 128, 63, 0, 0, + 0, 0, 0, 0, 0, 0, + 31, 0, 0, 2, 5, 0, + 0, 128, 0, 0, 15, 144, + 4, 0, 0, 4, 0, 0, + 3, 224, 0, 0, 228, 144, + 2, 0, 238, 160, 2, 0, + 228, 160, 4, 0, 0, 4, + 0, 0, 12, 224, 0, 0, + 20, 144, 3, 0, 180, 160, + 3, 0, 20, 160, 4, 0, + 0, 4, 0, 0, 3, 128, + 0, 0, 228, 144, 1, 0, + 238, 160, 1, 0, 228, 160, + 2, 0, 0, 3, 0, 0, + 3, 192, 0, 0, 228, 128, + 0, 0, 228, 160, 1, 0, + 0, 2, 0, 0, 12, 192, + 4, 0, 68, 160, 255, 255, + 0, 0, 83, 72, 68, 82, + 244, 0, 0, 0, 64, 0, + 1, 0, 61, 0, 0, 0, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 95, 0, + 0, 3, 50, 16, 16, 0, + 0, 0, 0, 0, 103, 0, + 0, 4, 242, 32, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 50, 32, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 194, 32, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 50, 32, 16, 0, 0, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, + 0, 8, 194, 32, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 11, 50, 32, + 16, 0, 1, 0, 0, 0, + 70, 16, 16, 0, 0, 0, + 0, 0, 230, 138, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 70, 128, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 194, 32, 16, 0, 1, 0, + 0, 0, 6, 20, 16, 0, + 0, 0, 0, 0, 166, 142, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 6, 132, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 62, 0, + 0, 1, 83, 84, 65, 84, + 116, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 82, 68, 69, 70, 8, 1, + 0, 0, 1, 0, 0, 0, + 64, 0, 0, 0, 1, 0, + 0, 0, 28, 0, 0, 0, + 0, 4, 254, 255, 0, 1, + 0, 0, 212, 0, 0, 0, + 60, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 99, 98, 48, 0, + 60, 0, 0, 0, 3, 0, + 0, 0, 88, 0, 0, 0, + 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 160, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, + 2, 0, 0, 0, 172, 0, + 0, 0, 0, 0, 0, 0, + 188, 0, 0, 0, 16, 0, + 0, 0, 16, 0, 0, 0, + 2, 0, 0, 0, 172, 0, + 0, 0, 0, 0, 0, 0, + 198, 0, 0, 0, 32, 0, + 0, 0, 16, 0, 0, 0, + 2, 0, 0, 0, 172, 0, + 0, 0, 0, 0, 0, 0, + 81, 117, 97, 100, 68, 101, + 115, 99, 0, 171, 171, 171, + 1, 0, 3, 0, 1, 0, + 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 101, + 120, 67, 111, 111, 114, 100, + 115, 0, 77, 97, 115, 107, + 84, 101, 120, 67, 111, 111, + 114, 100, 115, 0, 77, 105, + 99, 114, 111, 115, 111, 102, + 116, 32, 40, 82, 41, 32, + 72, 76, 83, 76, 32, 83, + 104, 97, 100, 101, 114, 32, + 67, 111, 109, 112, 105, 108, + 101, 114, 32, 57, 46, 50, + 57, 46, 57, 53, 50, 46, + 51, 49, 49, 49, 0, 171, + 171, 171, 73, 83, 71, 78, + 44, 0, 0, 0, 1, 0, + 0, 0, 8, 0, 0, 0, + 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 7, 3, 0, 0, + 80, 79, 83, 73, 84, 73, + 79, 78, 0, 171, 171, 171, + 79, 83, 71, 78, 104, 0, + 0, 0, 3, 0, 0, 0, + 8, 0, 0, 0, 80, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 92, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 3, 12, 0, 0, 92, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 12, 3, 0, 0, 83, 86, + 95, 80, 111, 115, 105, 116, + 105, 111, 110, 0, 84, 69, + 88, 67, 79, 79, 82, 68, + 0, 171, 171, 171, 210, 50, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, + 232, 9, 0, 0, 68, 88, + 66, 67, 45, 80, 33, 8, + 5, 16, 134, 134, 115, 16, + 129, 43, 103, 216, 255, 210, + 1, 0, 0, 0, 232, 9, + 0, 0, 6, 0, 0, 0, + 56, 0, 0, 0, 248, 2, + 0, 0, 8, 7, 0, 0, + 132, 7, 0, 0, 68, 9, + 0, 0, 180, 9, 0, 0, + 65, 111, 110, 57, 184, 2, + 0, 0, 184, 2, 0, 0, + 0, 2, 255, 255, 120, 2, + 0, 0, 64, 0, 0, 0, + 2, 0, 40, 0, 0, 0, + 64, 0, 0, 0, 64, 0, + 1, 0, 36, 0, 0, 0, + 64, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 4, 0, + 3, 0, 0, 0, 0, 0, + 1, 2, 255, 255, 31, 0, + 0, 2, 0, 0, 0, 128, + 0, 0, 15, 176, 31, 0, + 0, 2, 0, 0, 0, 144, + 0, 8, 15, 160, 2, 0, + 0, 3, 0, 0, 1, 128, + 0, 0, 0, 176, 0, 0, + 85, 160, 1, 0, 0, 2, + 0, 0, 2, 128, 0, 0, + 85, 176, 2, 0, 0, 3, + 1, 0, 1, 128, 0, 0, + 0, 176, 0, 0, 0, 160, + 1, 0, 0, 2, 1, 0, + 2, 128, 0, 0, 85, 176, + 66, 0, 0, 3, 0, 0, + 15, 128, 0, 0, 228, 128, + 0, 8, 228, 160, 66, 0, + 0, 3, 1, 0, 15, 128, + 1, 0, 228, 128, 0, 8, + 228, 160, 5, 0, 0, 3, + 0, 0, 1, 128, 0, 0, + 255, 128, 3, 0, 85, 160, + 4, 0, 0, 4, 0, 0, + 1, 128, 3, 0, 0, 160, + 1, 0, 255, 128, 0, 0, + 0, 128, 2, 0, 0, 3, + 1, 0, 1, 128, 0, 0, + 0, 176, 0, 0, 170, 160, + 1, 0, 0, 2, 1, 0, + 2, 128, 0, 0, 85, 176, + 2, 0, 0, 3, 2, 0, + 1, 128, 0, 0, 0, 176, + 0, 0, 255, 160, 1, 0, + 0, 2, 2, 0, 2, 128, + 0, 0, 85, 176, 66, 0, + 0, 3, 1, 0, 15, 128, + 1, 0, 228, 128, 0, 8, + 228, 160, 66, 0, 0, 3, + 2, 0, 15, 128, 2, 0, + 228, 128, 0, 8, 228, 160, + 4, 0, 0, 4, 0, 0, + 1, 128, 3, 0, 170, 160, + 1, 0, 255, 128, 0, 0, + 0, 128, 4, 0, 0, 4, + 0, 0, 1, 128, 3, 0, + 255, 160, 2, 0, 255, 128, + 0, 0, 0, 128, 2, 0, + 0, 3, 1, 0, 1, 128, + 0, 0, 0, 176, 1, 0, + 0, 160, 1, 0, 0, 2, + 1, 0, 2, 128, 0, 0, + 85, 176, 2, 0, 0, 3, + 2, 0, 1, 128, 0, 0, + 0, 176, 1, 0, 85, 160, + 1, 0, 0, 2, 2, 0, + 2, 128, 0, 0, 85, 176, + 66, 0, 0, 3, 1, 0, + 15, 128, 1, 0, 228, 128, + 0, 8, 228, 160, 66, 0, + 0, 3, 2, 0, 15, 128, + 2, 0, 228, 128, 0, 8, + 228, 160, 4, 0, 0, 4, + 0, 0, 1, 128, 4, 0, + 0, 160, 1, 0, 255, 128, + 0, 0, 0, 128, 4, 0, + 0, 4, 0, 0, 1, 128, + 4, 0, 85, 160, 2, 0, + 255, 128, 0, 0, 0, 128, + 2, 0, 0, 3, 1, 0, + 1, 128, 0, 0, 0, 176, + 1, 0, 170, 160, 1, 0, + 0, 2, 1, 0, 2, 128, + 0, 0, 85, 176, 2, 0, + 0, 3, 2, 0, 1, 128, + 0, 0, 0, 176, 1, 0, + 255, 160, 1, 0, 0, 2, + 2, 0, 2, 128, 0, 0, + 85, 176, 66, 0, 0, 3, + 1, 0, 15, 128, 1, 0, + 228, 128, 0, 8, 228, 160, + 66, 0, 0, 3, 2, 0, + 15, 128, 2, 0, 228, 128, + 0, 8, 228, 160, 4, 0, + 0, 4, 0, 0, 1, 128, + 4, 0, 170, 160, 1, 0, + 255, 128, 0, 0, 0, 128, + 4, 0, 0, 4, 0, 0, + 1, 128, 4, 0, 255, 160, + 2, 0, 255, 128, 0, 0, + 0, 128, 2, 0, 0, 3, + 1, 0, 1, 128, 0, 0, + 0, 176, 2, 0, 0, 160, + 1, 0, 0, 2, 1, 0, + 2, 128, 0, 0, 85, 176, + 66, 0, 0, 3, 1, 0, + 15, 128, 1, 0, 228, 128, + 0, 8, 228, 160, 4, 0, + 0, 4, 0, 0, 1, 128, + 5, 0, 0, 160, 1, 0, + 255, 128, 0, 0, 0, 128, + 5, 0, 0, 3, 0, 0, + 15, 128, 0, 0, 0, 128, + 6, 0, 228, 160, 1, 0, + 0, 2, 0, 8, 15, 128, + 0, 0, 228, 128, 255, 255, + 0, 0, 83, 72, 68, 82, + 8, 4, 0, 0, 64, 0, + 0, 0, 2, 1, 0, 0, + 89, 0, 0, 4, 70, 142, + 32, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 98, 16, 0, 3, + 50, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 242, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 4, 0, 0, 0, 0, 0, + 0, 8, 242, 0, 16, 0, + 0, 0, 0, 0, 6, 16, + 16, 0, 1, 0, 0, 0, + 38, 135, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 82, 0, + 16, 0, 1, 0, 0, 0, + 86, 7, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 162, 0, 16, 0, 1, 0, + 0, 0, 86, 21, 16, 0, + 1, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 18, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 162, 0, 16, 0, + 0, 0, 0, 0, 86, 21, + 16, 0, 1, 0, 0, 0, + 69, 0, 0, 9, 242, 0, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 9, 242, 0, + 16, 0, 0, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 242, 0, 16, 0, 1, 0, + 0, 0, 6, 16, 16, 0, + 1, 0, 0, 0, 38, 135, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 54, 0, + 0, 5, 82, 0, 16, 0, + 2, 0, 0, 0, 86, 7, + 16, 0, 1, 0, 0, 0, + 54, 0, 0, 5, 162, 0, + 16, 0, 2, 0, 0, 0, + 86, 21, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 9, + 242, 0, 16, 0, 3, 0, + 0, 0, 70, 0, 16, 0, + 2, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 69, 0, 0, 9, + 242, 0, 16, 0, 2, 0, + 0, 0, 230, 10, 16, 0, + 2, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 10, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 128, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 26, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 162, 0, 16, 0, + 1, 0, 0, 0, 86, 21, + 16, 0, 1, 0, 0, 0, + 69, 0, 0, 9, 242, 0, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 9, 242, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 18, 0, 16, 0, + 0, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 8, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 16, 16, 0, + 1, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 54, 0, + 0, 5, 34, 0, 16, 0, + 1, 0, 0, 0, 26, 16, + 16, 0, 1, 0, 0, 0, + 69, 0, 0, 9, 242, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 8, 242, 32, 16, 0, + 0, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 70, 142, 32, 0, 0, 0, + 0, 0, 9, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 116, 0, 0, 0, + 30, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 82, 68, 69, 70, + 184, 1, 0, 0, 1, 0, + 0, 0, 148, 0, 0, 0, + 3, 0, 0, 0, 28, 0, + 0, 0, 0, 4, 255, 255, + 0, 1, 0, 0, 132, 1, + 0, 0, 124, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 139, 0, + 0, 0, 2, 0, 0, 0, + 5, 0, 0, 0, 4, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 1, 0, + 0, 0, 12, 0, 0, 0, + 143, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 115, 83, 104, 97, + 100, 111, 119, 83, 97, 109, + 112, 108, 101, 114, 0, 116, + 101, 120, 0, 99, 98, 49, + 0, 171, 143, 0, 0, 0, + 4, 0, 0, 0, 172, 0, + 0, 0, 160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 12, 1, 0, 0, + 0, 0, 0, 0, 48, 0, + 0, 0, 2, 0, 0, 0, + 28, 1, 0, 0, 0, 0, + 0, 0, 44, 1, 0, 0, + 48, 0, 0, 0, 48, 0, + 0, 0, 0, 0, 0, 0, + 60, 1, 0, 0, 0, 0, + 0, 0, 76, 1, 0, 0, + 96, 0, 0, 0, 48, 0, + 0, 0, 2, 0, 0, 0, + 88, 1, 0, 0, 0, 0, + 0, 0, 104, 1, 0, 0, + 144, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, + 116, 1, 0, 0, 0, 0, + 0, 0, 66, 108, 117, 114, + 79, 102, 102, 115, 101, 116, + 115, 72, 0, 171, 171, 171, + 1, 0, 3, 0, 1, 0, + 4, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 66, 108, + 117, 114, 79, 102, 102, 115, + 101, 116, 115, 86, 0, 171, + 171, 171, 1, 0, 3, 0, + 1, 0, 4, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 66, 108, 117, 114, 87, 101, + 105, 103, 104, 116, 115, 0, + 1, 0, 3, 0, 1, 0, + 4, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 83, 104, + 97, 100, 111, 119, 67, 111, + 108, 111, 114, 0, 1, 0, + 3, 0, 1, 0, 4, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 77, 105, 99, 114, + 111, 115, 111, 102, 116, 32, + 40, 82, 41, 32, 72, 76, + 83, 76, 32, 83, 104, 97, + 100, 101, 114, 32, 67, 111, + 109, 112, 105, 108, 101, 114, + 32, 57, 46, 50, 57, 46, + 57, 53, 50, 46, 51, 49, + 49, 49, 0, 171, 171, 171, + 73, 83, 71, 78, 104, 0, + 0, 0, 3, 0, 0, 0, + 8, 0, 0, 0, 80, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 92, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 3, 3, 0, 0, 92, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 12, 0, 0, 0, 83, 86, + 95, 80, 111, 115, 105, 116, + 105, 111, 110, 0, 84, 69, + 88, 67, 79, 79, 82, 68, + 0, 171, 171, 171, 79, 83, + 71, 78, 44, 0, 0, 0, + 1, 0, 0, 0, 8, 0, + 0, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 83, 86, 95, 84, + 97, 114, 103, 101, 116, 0, + 171, 171, 14, 55, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 128, 63, 1, 0, + 0, 0, 0, 0, 128, 63, + 1, 0, 0, 0, 0, 0, + 128, 63, 1, 0, 0, 0, + 0, 0, 128, 63, 1, 0, + 0, 0, 3, 0, 0, 0, + 255, 255, 255, 255, 36, 4, + 0, 0, 68, 88, 66, 67, + 116, 139, 68, 62, 73, 113, + 92, 4, 72, 76, 225, 161, + 30, 132, 222, 233, 1, 0, + 0, 0, 36, 4, 0, 0, + 6, 0, 0, 0, 56, 0, + 0, 0, 248, 0, 0, 0, + 244, 1, 0, 0, 112, 2, + 0, 0, 128, 3, 0, 0, + 180, 3, 0, 0, 65, 111, + 110, 57, 184, 0, 0, 0, + 184, 0, 0, 0, 0, 2, + 254, 255, 132, 0, 0, 0, + 52, 0, 0, 0, 1, 0, + 36, 0, 0, 0, 48, 0, + 0, 0, 48, 0, 0, 0, + 36, 0, 1, 0, 48, 0, + 0, 0, 0, 0, 3, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, + 254, 255, 81, 0, 0, 5, + 4, 0, 15, 160, 0, 0, + 0, 0, 0, 0, 128, 63, + 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 2, + 5, 0, 0, 128, 0, 0, + 15, 144, 4, 0, 0, 4, + 0, 0, 3, 224, 0, 0, + 228, 144, 2, 0, 238, 160, + 2, 0, 228, 160, 4, 0, + 0, 4, 0, 0, 12, 224, + 0, 0, 20, 144, 3, 0, + 180, 160, 3, 0, 20, 160, + 4, 0, 0, 4, 0, 0, + 3, 128, 0, 0, 228, 144, + 1, 0, 238, 160, 1, 0, + 228, 160, 2, 0, 0, 3, + 0, 0, 3, 192, 0, 0, + 228, 128, 0, 0, 228, 160, + 1, 0, 0, 2, 0, 0, + 12, 192, 4, 0, 68, 160, + 255, 255, 0, 0, 83, 72, + 68, 82, 244, 0, 0, 0, + 64, 0, 1, 0, 61, 0, + 0, 0, 89, 0, 0, 4, + 70, 142, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 95, 0, 0, 3, 50, 16, + 16, 0, 0, 0, 0, 0, + 103, 0, 0, 4, 242, 32, + 16, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 50, 32, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 194, 32, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 50, 32, 16, 0, + 0, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 54, 0, 0, 8, 194, 32, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 11, + 50, 32, 16, 0, 1, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 230, 138, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 70, 128, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 194, 32, 16, 0, + 1, 0, 0, 0, 6, 20, + 16, 0, 0, 0, 0, 0, + 166, 142, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 6, 132, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 116, 0, 0, 0, + 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 82, 68, 69, 70, + 8, 1, 0, 0, 1, 0, + 0, 0, 64, 0, 0, 0, + 1, 0, 0, 0, 28, 0, + 0, 0, 0, 4, 254, 255, + 0, 1, 0, 0, 212, 0, + 0, 0, 60, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 99, 98, + 48, 0, 60, 0, 0, 0, + 3, 0, 0, 0, 88, 0, + 0, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 160, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, + 172, 0, 0, 0, 0, 0, + 0, 0, 188, 0, 0, 0, + 16, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, + 172, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, + 32, 0, 0, 0, 16, 0, + 0, 0, 2, 0, 0, 0, + 172, 0, 0, 0, 0, 0, + 0, 0, 81, 117, 97, 100, + 68, 101, 115, 99, 0, 171, + 171, 171, 1, 0, 3, 0, + 1, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 84, 101, 120, 67, 111, 111, + 114, 100, 115, 0, 77, 97, + 115, 107, 84, 101, 120, 67, + 111, 111, 114, 100, 115, 0, + 77, 105, 99, 114, 111, 115, + 111, 102, 116, 32, 40, 82, + 41, 32, 72, 76, 83, 76, + 32, 83, 104, 97, 100, 101, + 114, 32, 67, 111, 109, 112, + 105, 108, 101, 114, 32, 57, + 46, 50, 57, 46, 57, 53, + 50, 46, 51, 49, 49, 49, + 0, 171, 171, 171, 73, 83, + 71, 78, 44, 0, 0, 0, + 1, 0, 0, 0, 8, 0, + 0, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 7, 3, + 0, 0, 80, 79, 83, 73, + 84, 73, 79, 78, 0, 171, + 171, 171, 79, 83, 71, 78, + 104, 0, 0, 0, 3, 0, + 0, 0, 8, 0, 0, 0, + 80, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 12, 0, 0, + 92, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 12, 3, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 50, 65, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 0, 0, + 0, 0, 172, 9, 0, 0, + 68, 88, 66, 67, 110, 68, + 159, 211, 251, 173, 118, 80, + 154, 213, 185, 171, 243, 23, + 113, 100, 1, 0, 0, 0, + 172, 9, 0, 0, 6, 0, + 0, 0, 56, 0, 0, 0, + 220, 2, 0, 0, 204, 6, + 0, 0, 72, 7, 0, 0, + 8, 9, 0, 0, 120, 9, + 0, 0, 65, 111, 110, 57, + 156, 2, 0, 0, 156, 2, + 0, 0, 0, 2, 255, 255, + 104, 2, 0, 0, 52, 0, + 0, 0, 1, 0, 40, 0, + 0, 0, 52, 0, 0, 0, + 52, 0, 1, 0, 36, 0, + 0, 0, 52, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 6, 0, 0, 0, 0, 0, + 0, 0, 1, 2, 255, 255, + 31, 0, 0, 2, 0, 0, + 0, 128, 0, 0, 15, 176, + 31, 0, 0, 2, 0, 0, + 0, 144, 0, 8, 15, 160, + 2, 0, 0, 3, 0, 0, + 2, 128, 0, 0, 85, 176, + 0, 0, 85, 160, 1, 0, + 0, 2, 0, 0, 1, 128, + 0, 0, 0, 176, 2, 0, + 0, 3, 1, 0, 2, 128, + 0, 0, 85, 176, 0, 0, + 0, 160, 1, 0, 0, 2, + 1, 0, 1, 128, 0, 0, + 0, 176, 66, 0, 0, 3, + 0, 0, 15, 128, 0, 0, + 228, 128, 0, 8, 228, 160, + 66, 0, 0, 3, 1, 0, + 15, 128, 1, 0, 228, 128, + 0, 8, 228, 160, 5, 0, + 0, 3, 0, 0, 15, 128, + 0, 0, 228, 128, 3, 0, + 85, 160, 4, 0, 0, 4, + 0, 0, 15, 128, 3, 0, + 0, 160, 1, 0, 228, 128, + 0, 0, 228, 128, 2, 0, + 0, 3, 1, 0, 2, 128, + 0, 0, 85, 176, 0, 0, + 170, 160, 1, 0, 0, 2, + 1, 0, 1, 128, 0, 0, + 0, 176, 2, 0, 0, 3, + 2, 0, 2, 128, 0, 0, + 85, 176, 0, 0, 255, 160, + 1, 0, 0, 2, 2, 0, + 1, 128, 0, 0, 0, 176, + 66, 0, 0, 3, 1, 0, + 15, 128, 1, 0, 228, 128, + 0, 8, 228, 160, 66, 0, + 0, 3, 2, 0, 15, 128, + 2, 0, 228, 128, 0, 8, + 228, 160, 4, 0, 0, 4, + 0, 0, 15, 128, 3, 0, + 170, 160, 1, 0, 228, 128, + 0, 0, 228, 128, 4, 0, + 0, 4, 0, 0, 15, 128, + 3, 0, 255, 160, 2, 0, + 228, 128, 0, 0, 228, 128, + 2, 0, 0, 3, 1, 0, + 2, 128, 0, 0, 85, 176, + 1, 0, 0, 160, 1, 0, + 0, 2, 1, 0, 1, 128, + 0, 0, 0, 176, 2, 0, + 0, 3, 2, 0, 2, 128, + 0, 0, 85, 176, 1, 0, + 85, 160, 1, 0, 0, 2, + 2, 0, 1, 128, 0, 0, + 0, 176, 66, 0, 0, 3, + 1, 0, 15, 128, 1, 0, + 228, 128, 0, 8, 228, 160, + 66, 0, 0, 3, 2, 0, + 15, 128, 2, 0, 228, 128, + 0, 8, 228, 160, 4, 0, + 0, 4, 0, 0, 15, 128, + 4, 0, 0, 160, 1, 0, + 228, 128, 0, 0, 228, 128, + 4, 0, 0, 4, 0, 0, + 15, 128, 4, 0, 85, 160, + 2, 0, 228, 128, 0, 0, + 228, 128, 2, 0, 0, 3, + 1, 0, 2, 128, 0, 0, + 85, 176, 1, 0, 170, 160, + 1, 0, 0, 2, 1, 0, + 1, 128, 0, 0, 0, 176, + 2, 0, 0, 3, 2, 0, + 2, 128, 0, 0, 85, 176, + 1, 0, 255, 160, 1, 0, + 0, 2, 2, 0, 1, 128, + 0, 0, 0, 176, 66, 0, + 0, 3, 1, 0, 15, 128, + 1, 0, 228, 128, 0, 8, + 228, 160, 66, 0, 0, 3, + 2, 0, 15, 128, 2, 0, + 228, 128, 0, 8, 228, 160, + 4, 0, 0, 4, 0, 0, + 15, 128, 4, 0, 170, 160, + 1, 0, 228, 128, 0, 0, + 228, 128, 4, 0, 0, 4, + 0, 0, 15, 128, 4, 0, + 255, 160, 2, 0, 228, 128, + 0, 0, 228, 128, 2, 0, + 0, 3, 1, 0, 2, 128, + 0, 0, 85, 176, 2, 0, + 0, 160, 1, 0, 0, 2, + 1, 0, 1, 128, 0, 0, + 0, 176, 66, 0, 0, 3, + 1, 0, 15, 128, 1, 0, + 228, 128, 0, 8, 228, 160, + 4, 0, 0, 4, 0, 0, + 15, 128, 5, 0, 0, 160, + 1, 0, 228, 128, 0, 0, + 228, 128, 1, 0, 0, 2, + 0, 8, 15, 128, 0, 0, + 228, 128, 255, 255, 0, 0, + 83, 72, 68, 82, 232, 3, + 0, 0, 64, 0, 0, 0, + 250, 0, 0, 0, 89, 0, + 0, 4, 70, 142, 32, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 90, 0, 0, 3, + 0, 96, 16, 0, 0, 0, + 0, 0, 88, 24, 0, 4, + 0, 112, 16, 0, 0, 0, + 0, 0, 85, 85, 0, 0, + 98, 16, 0, 3, 50, 16, + 16, 0, 1, 0, 0, 0, + 101, 0, 0, 3, 242, 32, + 16, 0, 0, 0, 0, 0, + 104, 0, 0, 2, 4, 0, + 0, 0, 54, 0, 0, 5, + 82, 0, 16, 0, 0, 0, + 0, 0, 6, 16, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 242, 0, 16, 0, + 1, 0, 0, 0, 86, 21, + 16, 0, 1, 0, 0, 0, + 134, 141, 32, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 54, 0, 0, 5, 162, 0, + 16, 0, 0, 0, 0, 0, + 6, 8, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 9, + 242, 0, 16, 0, 2, 0, + 0, 0, 230, 10, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 69, 0, 0, 9, + 242, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 242, 0, 16, 0, 2, 0, + 0, 0, 70, 14, 16, 0, + 2, 0, 0, 0, 86, 133, + 32, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 50, 0, + 0, 10, 242, 0, 16, 0, + 0, 0, 0, 0, 6, 128, + 32, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 70, 14, + 16, 0, 0, 0, 0, 0, + 70, 14, 16, 0, 2, 0, + 0, 0, 54, 0, 0, 5, + 82, 0, 16, 0, 1, 0, + 0, 0, 6, 16, 16, 0, + 1, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 1, 0, 0, 0, 230, 10, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 242, 0, 16, 0, + 0, 0, 0, 0, 166, 138, + 32, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 70, 14, + 16, 0, 2, 0, 0, 0, + 70, 14, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 10, + 242, 0, 16, 0, 0, 0, + 0, 0, 246, 143, 32, 0, + 0, 0, 0, 0, 6, 0, + 0, 0, 70, 14, 16, 0, + 1, 0, 0, 0, 70, 14, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 82, 0, + 16, 0, 1, 0, 0, 0, + 6, 16, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 242, 0, 16, 0, 2, 0, + 0, 0, 86, 21, 16, 0, + 1, 0, 0, 0, 134, 141, + 32, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 54, 0, + 0, 5, 162, 0, 16, 0, + 1, 0, 0, 0, 6, 8, + 16, 0, 2, 0, 0, 0, + 69, 0, 0, 9, 242, 0, + 16, 0, 3, 0, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 9, 242, 0, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 10, 242, 0, + 16, 0, 0, 0, 0, 0, + 6, 128, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 70, 14, 16, 0, 3, 0, + 0, 0, 70, 14, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 242, 0, 16, 0, + 0, 0, 0, 0, 86, 133, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 70, 14, + 16, 0, 1, 0, 0, 0, + 70, 14, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 82, 0, 16, 0, 2, 0, + 0, 0, 6, 16, 16, 0, + 1, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 2, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 2, 0, 0, 0, 230, 10, + 16, 0, 2, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 242, 0, 16, 0, + 0, 0, 0, 0, 166, 138, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 70, 14, + 16, 0, 1, 0, 0, 0, + 70, 14, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 10, + 242, 0, 16, 0, 0, 0, + 0, 0, 246, 143, 32, 0, + 0, 0, 0, 0, 7, 0, + 0, 0, 70, 14, 16, 0, + 2, 0, 0, 0, 70, 14, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 34, 0, + 16, 0, 1, 0, 0, 0, + 26, 16, 16, 0, 1, 0, + 0, 0, 10, 128, 32, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 54, 0, 0, 5, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 16, 16, 0, + 1, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 10, 242, 32, 16, 0, + 0, 0, 0, 0, 6, 128, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 70, 14, + 16, 0, 1, 0, 0, 0, + 70, 14, 16, 0, 0, 0, + 0, 0, 62, 0, 0, 1, + 83, 84, 65, 84, 116, 0, + 0, 0, 29, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 68, + 69, 70, 184, 1, 0, 0, + 1, 0, 0, 0, 148, 0, + 0, 0, 3, 0, 0, 0, + 28, 0, 0, 0, 0, 4, + 255, 255, 0, 1, 0, 0, + 132, 1, 0, 0, 124, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 139, 0, 0, 0, 2, 0, + 0, 0, 5, 0, 0, 0, + 4, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 1, 0, 0, 0, 12, 0, + 0, 0, 143, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 115, 83, + 104, 97, 100, 111, 119, 83, + 97, 109, 112, 108, 101, 114, + 0, 116, 101, 120, 0, 99, + 98, 49, 0, 171, 143, 0, + 0, 0, 4, 0, 0, 0, + 172, 0, 0, 0, 160, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 1, + 0, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 0, 0, + 0, 0, 28, 1, 0, 0, + 0, 0, 0, 0, 44, 1, + 0, 0, 48, 0, 0, 0, + 48, 0, 0, 0, 2, 0, + 0, 0, 60, 1, 0, 0, + 0, 0, 0, 0, 76, 1, + 0, 0, 96, 0, 0, 0, + 48, 0, 0, 0, 2, 0, + 0, 0, 88, 1, 0, 0, + 0, 0, 0, 0, 104, 1, + 0, 0, 144, 0, 0, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 116, 1, 0, 0, + 0, 0, 0, 0, 66, 108, + 117, 114, 79, 102, 102, 115, + 101, 116, 115, 72, 0, 171, + 171, 171, 1, 0, 3, 0, + 1, 0, 4, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 66, 108, 117, 114, 79, 102, + 102, 115, 101, 116, 115, 86, + 0, 171, 171, 171, 1, 0, + 3, 0, 1, 0, 4, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 66, 108, 117, 114, + 87, 101, 105, 103, 104, 116, + 115, 0, 1, 0, 3, 0, + 1, 0, 4, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 83, 104, 97, 100, 111, 119, + 67, 111, 108, 111, 114, 0, + 1, 0, 3, 0, 1, 0, + 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 105, + 99, 114, 111, 115, 111, 102, + 116, 32, 40, 82, 41, 32, + 72, 76, 83, 76, 32, 83, + 104, 97, 100, 101, 114, 32, + 67, 111, 109, 112, 105, 108, + 101, 114, 32, 57, 46, 50, + 57, 46, 57, 53, 50, 46, + 51, 49, 49, 49, 0, 171, + 171, 171, 73, 83, 71, 78, + 104, 0, 0, 0, 3, 0, + 0, 0, 8, 0, 0, 0, + 80, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 3, 3, 0, 0, + 92, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 12, 0, 0, 0, + 83, 86, 95, 80, 111, 115, + 105, 116, 105, 111, 110, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 171, 171, + 79, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 83, 86, + 95, 84, 97, 114, 103, 101, + 116, 0, 171, 171, 110, 69, + 0, 0, 0, 0, 0, 0, + 80, 50, 0, 4, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 128, 63, 1, 0, 0, 0, 0, 0, 128, 63, 1, 0, 0, 0, 0, 0, 128, 63, 1, 0, 0, 0, 0, 0, 128, 63, 1, 0, 0, - 0, 0, 0, 128, 63, 1, - 0, 0, 0, 3, 0, 0, - 0, 255, 255, 255, 255, 36, - 4, 0, 0, 68, 88, 66, - 67, 116, 139, 68, 62, 73, - 113, 92, 4, 72, 76, 225, - 161, 30, 132, 222, 233, 1, - 0, 0, 0, 36, 4, 0, - 0, 6, 0, 0, 0, 56, - 0, 0, 0, 248, 0, 0, - 0, 244, 1, 0, 0, 112, - 2, 0, 0, 128, 3, 0, - 0, 180, 3, 0, 0, 65, - 111, 110, 57, 184, 0, 0, - 0, 184, 0, 0, 0, 0, - 2, 254, 255, 132, 0, 0, - 0, 52, 0, 0, 0, 1, - 0, 36, 0, 0, 0, 48, + 0, 3, 0, 0, 0, 255, + 255, 255, 255, 36, 4, 0, + 0, 68, 88, 66, 67, 116, + 139, 68, 62, 73, 113, 92, + 4, 72, 76, 225, 161, 30, + 132, 222, 233, 1, 0, 0, + 0, 36, 4, 0, 0, 6, + 0, 0, 0, 56, 0, 0, + 0, 248, 0, 0, 0, 244, + 1, 0, 0, 112, 2, 0, + 0, 128, 3, 0, 0, 180, + 3, 0, 0, 65, 111, 110, + 57, 184, 0, 0, 0, 184, + 0, 0, 0, 0, 2, 254, + 255, 132, 0, 0, 0, 52, + 0, 0, 0, 1, 0, 36, 0, 0, 0, 48, 0, 0, - 0, 36, 0, 1, 0, 48, - 0, 0, 0, 0, 0, 3, - 0, 1, 0, 0, 0, 0, + 0, 48, 0, 0, 0, 36, + 0, 1, 0, 48, 0, 0, + 0, 0, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 2, 254, + 255, 81, 0, 0, 5, 4, + 0, 15, 160, 0, 0, 0, + 0, 0, 0, 128, 63, 0, + 0, 0, 0, 0, 0, 0, + 0, 31, 0, 0, 2, 5, + 0, 0, 128, 0, 0, 15, + 144, 4, 0, 0, 4, 0, + 0, 3, 224, 0, 0, 228, + 144, 2, 0, 238, 160, 2, + 0, 228, 160, 4, 0, 0, + 4, 0, 0, 12, 224, 0, + 0, 20, 144, 3, 0, 180, + 160, 3, 0, 20, 160, 4, + 0, 0, 4, 0, 0, 3, + 128, 0, 0, 228, 144, 1, + 0, 238, 160, 1, 0, 228, + 160, 2, 0, 0, 3, 0, + 0, 3, 192, 0, 0, 228, + 128, 0, 0, 228, 160, 1, + 0, 0, 2, 0, 0, 12, + 192, 4, 0, 68, 160, 255, + 255, 0, 0, 83, 72, 68, + 82, 244, 0, 0, 0, 64, + 0, 1, 0, 61, 0, 0, + 0, 89, 0, 0, 4, 70, + 142, 32, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 95, + 0, 0, 3, 50, 16, 16, + 0, 0, 0, 0, 0, 103, + 0, 0, 4, 242, 32, 16, 0, 0, 0, 0, 0, 1, - 2, 254, 255, 81, 0, 0, - 5, 4, 0, 15, 160, 0, - 0, 0, 0, 0, 0, 128, - 63, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 0, 0, - 2, 5, 0, 0, 128, 0, - 0, 15, 144, 4, 0, 0, - 4, 0, 0, 3, 224, 0, - 0, 228, 144, 2, 0, 238, - 160, 2, 0, 228, 160, 4, - 0, 0, 4, 0, 0, 12, - 224, 0, 0, 20, 144, 3, - 0, 180, 160, 3, 0, 20, - 160, 4, 0, 0, 4, 0, - 0, 3, 128, 0, 0, 228, - 144, 1, 0, 238, 160, 1, - 0, 228, 160, 2, 0, 0, - 3, 0, 0, 3, 192, 0, - 0, 228, 128, 0, 0, 228, - 160, 1, 0, 0, 2, 0, - 0, 12, 192, 4, 0, 68, - 160, 255, 255, 0, 0, 83, - 72, 68, 82, 244, 0, 0, - 0, 64, 0, 1, 0, 61, - 0, 0, 0, 89, 0, 0, - 4, 70, 142, 32, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 95, 0, 0, 3, 50, - 16, 16, 0, 0, 0, 0, - 0, 103, 0, 0, 4, 242, - 32, 16, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 101, - 0, 0, 3, 50, 32, 16, - 0, 1, 0, 0, 0, 101, - 0, 0, 3, 194, 32, 16, - 0, 1, 0, 0, 0, 50, - 0, 0, 11, 50, 32, 16, - 0, 0, 0, 0, 0, 70, - 16, 16, 0, 0, 0, 0, - 0, 230, 138, 32, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 70, 128, 32, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 54, 0, 0, 8, 194, - 32, 16, 0, 0, 0, 0, - 0, 2, 64, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 128, 63, 50, 0, 0, - 11, 50, 32, 16, 0, 1, + 0, 0, 0, 101, 0, 0, + 3, 50, 32, 16, 0, 1, + 0, 0, 0, 101, 0, 0, + 3, 194, 32, 16, 0, 1, + 0, 0, 0, 50, 0, 0, + 11, 50, 32, 16, 0, 0, 0, 0, 0, 70, 16, 16, 0, 0, 0, 0, 0, 230, 138, 32, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 70, + 0, 0, 0, 0, 0, 70, 128, 32, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 50, - 0, 0, 11, 194, 32, 16, - 0, 1, 0, 0, 0, 6, - 20, 16, 0, 0, 0, 0, - 0, 166, 142, 32, 0, 0, - 0, 0, 0, 2, 0, 0, - 0, 6, 132, 32, 0, 0, - 0, 0, 0, 2, 0, 0, - 0, 62, 0, 0, 1, 83, - 84, 65, 84, 116, 0, 0, - 0, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, + 0, 0, 8, 194, 32, 16, + 0, 0, 0, 0, 0, 2, + 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, + 63, 50, 0, 0, 11, 50, + 32, 16, 0, 1, 0, 0, + 0, 70, 16, 16, 0, 0, + 0, 0, 0, 230, 138, 32, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 70, 128, 32, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 50, 0, 0, + 11, 194, 32, 16, 0, 1, + 0, 0, 0, 6, 20, 16, + 0, 0, 0, 0, 0, 166, + 142, 32, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 6, + 132, 32, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 62, + 0, 0, 1, 83, 84, 65, + 84, 116, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 82, 68, 69, 70, 8, + 1, 0, 0, 1, 0, 0, + 0, 64, 0, 0, 0, 1, + 0, 0, 0, 28, 0, 0, + 0, 0, 4, 254, 255, 0, + 1, 0, 0, 212, 0, 0, + 0, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 0, 99, 98, 48, + 0, 60, 0, 0, 0, 3, + 0, 0, 0, 88, 0, 0, + 0, 48, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 160, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, + 0, 2, 0, 0, 0, 172, + 0, 0, 0, 0, 0, 0, + 0, 188, 0, 0, 0, 16, + 0, 0, 0, 16, 0, 0, + 0, 2, 0, 0, 0, 172, + 0, 0, 0, 0, 0, 0, + 0, 198, 0, 0, 0, 32, + 0, 0, 0, 16, 0, 0, + 0, 2, 0, 0, 0, 172, + 0, 0, 0, 0, 0, 0, + 0, 81, 117, 97, 100, 68, + 101, 115, 99, 0, 171, 171, + 171, 1, 0, 3, 0, 1, 0, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 68, 69, - 70, 8, 1, 0, 0, 1, - 0, 0, 0, 64, 0, 0, - 0, 1, 0, 0, 0, 28, - 0, 0, 0, 0, 4, 254, - 255, 0, 1, 0, 0, 212, - 0, 0, 0, 60, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 99, - 98, 48, 0, 60, 0, 0, - 0, 3, 0, 0, 0, 88, - 0, 0, 0, 48, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 160, 0, 0, - 0, 0, 0, 0, 0, 16, - 0, 0, 0, 2, 0, 0, - 0, 172, 0, 0, 0, 0, - 0, 0, 0, 188, 0, 0, - 0, 16, 0, 0, 0, 16, - 0, 0, 0, 2, 0, 0, - 0, 172, 0, 0, 0, 0, - 0, 0, 0, 198, 0, 0, - 0, 32, 0, 0, 0, 16, - 0, 0, 0, 2, 0, 0, - 0, 172, 0, 0, 0, 0, - 0, 0, 0, 81, 117, 97, - 100, 68, 101, 115, 99, 0, - 171, 171, 171, 1, 0, 3, - 0, 1, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 84, 101, 120, 67, 111, + 0, 0, 0, 0, 0, 84, + 101, 120, 67, 111, 111, 114, + 100, 115, 0, 77, 97, 115, + 107, 84, 101, 120, 67, 111, 111, 114, 100, 115, 0, 77, - 97, 115, 107, 84, 101, 120, - 67, 111, 111, 114, 100, 115, - 0, 77, 105, 99, 114, 111, - 115, 111, 102, 116, 32, 40, - 82, 41, 32, 72, 76, 83, - 76, 32, 83, 104, 97, 100, - 101, 114, 32, 67, 111, 109, - 112, 105, 108, 101, 114, 32, - 57, 46, 50, 57, 46, 57, - 53, 50, 46, 51, 49, 49, - 49, 0, 171, 171, 171, 73, - 83, 71, 78, 44, 0, 0, - 0, 1, 0, 0, 0, 8, - 0, 0, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 7, - 3, 0, 0, 80, 79, 83, - 73, 84, 73, 79, 78, 0, - 171, 171, 171, 79, 83, 71, - 78, 104, 0, 0, 0, 3, + 105, 99, 114, 111, 115, 111, + 102, 116, 32, 40, 82, 41, + 32, 72, 76, 83, 76, 32, + 83, 104, 97, 100, 101, 114, + 32, 67, 111, 109, 112, 105, + 108, 101, 114, 32, 57, 46, + 50, 57, 46, 57, 53, 50, + 46, 51, 49, 49, 49, 0, + 171, 171, 171, 73, 83, 71, + 78, 44, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, - 0, 80, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, + 0, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, - 0, 92, 0, 0, 0, 0, + 0, 0, 0, 7, 3, 0, + 0, 80, 79, 83, 73, 84, + 73, 79, 78, 0, 171, 171, + 171, 79, 83, 71, 78, 104, + 0, 0, 0, 3, 0, 0, + 0, 8, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 1, - 0, 0, 0, 3, 12, 0, - 0, 92, 0, 0, 0, 1, + 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 1, - 0, 0, 0, 12, 3, 0, - 0, 83, 86, 95, 80, 111, - 115, 105, 116, 105, 111, 110, - 0, 84, 69, 88, 67, 79, - 79, 82, 68, 0, 171, 171, - 171, 223, 46, 0, 0, 0, + 0, 15, 0, 0, 0, 92, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, - 0, 2, 0, 0, 0, 0, - 0, 0, 0, 164, 10, 0, - 0, 68, 88, 66, 67, 143, - 148, 190, 36, 41, 120, 46, - 207, 200, 138, 139, 29, 38, - 89, 245, 86, 1, 0, 0, - 0, 164, 10, 0, 0, 6, - 0, 0, 0, 56, 0, 0, - 0, 24, 3, 0, 0, 112, - 7, 0, 0, 236, 7, 0, - 0, 0, 10, 0, 0, 112, - 10, 0, 0, 65, 111, 110, - 57, 216, 2, 0, 0, 216, - 2, 0, 0, 0, 2, 255, - 255, 160, 2, 0, 0, 56, - 0, 0, 0, 1, 0, 44, - 0, 0, 0, 56, 0, 0, - 0, 56, 0, 2, 0, 36, - 0, 0, 0, 56, 0, 1, - 0, 0, 0, 0, 1, 1, - 0, 0, 0, 3, 0, 6, + 0, 3, 12, 0, 0, 92, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 3, + 0, 0, 0, 1, 0, 0, + 0, 12, 3, 0, 0, 83, + 86, 95, 80, 111, 115, 105, + 116, 105, 111, 110, 0, 84, + 69, 88, 67, 79, 79, 82, + 68, 0, 171, 171, 171, 89, + 79, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 1, 2, 255, 255, 31, - 0, 0, 2, 0, 0, 0, - 128, 0, 0, 15, 176, 31, - 0, 0, 2, 0, 0, 0, - 144, 0, 8, 15, 160, 31, - 0, 0, 2, 0, 0, 0, - 144, 1, 8, 15, 160, 2, - 0, 0, 3, 0, 0, 2, - 128, 0, 0, 85, 176, 0, - 0, 85, 160, 1, 0, 0, - 2, 0, 0, 1, 128, 0, - 0, 0, 176, 2, 0, 0, - 3, 1, 0, 2, 128, 0, - 0, 85, 176, 0, 0, 0, - 160, 1, 0, 0, 2, 1, + 0, 164, 10, 0, 0, 68, + 88, 66, 67, 143, 148, 190, + 36, 41, 120, 46, 207, 200, + 138, 139, 29, 38, 89, 245, + 86, 1, 0, 0, 0, 164, + 10, 0, 0, 6, 0, 0, + 0, 56, 0, 0, 0, 24, + 3, 0, 0, 112, 7, 0, + 0, 236, 7, 0, 0, 0, + 10, 0, 0, 112, 10, 0, + 0, 65, 111, 110, 57, 216, + 2, 0, 0, 216, 2, 0, + 0, 0, 2, 255, 255, 160, + 2, 0, 0, 56, 0, 0, + 0, 1, 0, 44, 0, 0, + 0, 56, 0, 0, 0, 56, + 0, 2, 0, 36, 0, 0, + 0, 56, 0, 1, 0, 0, + 0, 0, 1, 1, 0, 0, + 0, 3, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 1, + 2, 255, 255, 31, 0, 0, + 2, 0, 0, 0, 128, 0, + 0, 15, 176, 31, 0, 0, + 2, 0, 0, 0, 144, 0, + 8, 15, 160, 31, 0, 0, + 2, 0, 0, 0, 144, 1, + 8, 15, 160, 2, 0, 0, + 3, 0, 0, 2, 128, 0, + 0, 85, 176, 0, 0, 85, + 160, 1, 0, 0, 2, 0, 0, 1, 128, 0, 0, 0, - 176, 66, 0, 0, 3, 0, - 0, 15, 128, 0, 0, 228, - 128, 1, 8, 228, 160, 66, - 0, 0, 3, 1, 0, 15, - 128, 1, 0, 228, 128, 1, - 8, 228, 160, 5, 0, 0, - 3, 0, 0, 15, 128, 0, - 0, 228, 128, 3, 0, 85, - 160, 4, 0, 0, 4, 0, - 0, 15, 128, 3, 0, 0, - 160, 1, 0, 228, 128, 0, - 0, 228, 128, 2, 0, 0, - 3, 1, 0, 2, 128, 0, - 0, 85, 176, 0, 0, 170, - 160, 1, 0, 0, 2, 1, - 0, 1, 128, 0, 0, 0, - 176, 2, 0, 0, 3, 2, + 176, 2, 0, 0, 3, 1, 0, 2, 128, 0, 0, 85, - 176, 0, 0, 255, 160, 1, - 0, 0, 2, 2, 0, 1, + 176, 0, 0, 0, 160, 1, + 0, 0, 2, 1, 0, 1, 128, 0, 0, 0, 176, 66, - 0, 0, 3, 1, 0, 15, - 128, 1, 0, 228, 128, 1, + 0, 0, 3, 0, 0, 15, + 128, 0, 0, 228, 128, 1, 8, 228, 160, 66, 0, 0, - 3, 2, 0, 15, 128, 2, + 3, 1, 0, 15, 128, 1, 0, 228, 128, 1, 8, 228, - 160, 4, 0, 0, 4, 0, - 0, 15, 128, 3, 0, 170, - 160, 1, 0, 228, 128, 0, - 0, 228, 128, 4, 0, 0, - 4, 0, 0, 15, 128, 3, - 0, 255, 160, 2, 0, 228, - 128, 0, 0, 228, 128, 2, - 0, 0, 3, 1, 0, 2, - 128, 0, 0, 85, 176, 1, - 0, 0, 160, 1, 0, 0, - 2, 1, 0, 1, 128, 0, - 0, 0, 176, 2, 0, 0, - 3, 2, 0, 2, 128, 0, - 0, 85, 176, 1, 0, 85, - 160, 1, 0, 0, 2, 2, - 0, 1, 128, 0, 0, 0, - 176, 66, 0, 0, 3, 1, - 0, 15, 128, 1, 0, 228, - 128, 1, 8, 228, 160, 66, - 0, 0, 3, 2, 0, 15, - 128, 2, 0, 228, 128, 1, - 8, 228, 160, 4, 0, 0, - 4, 0, 0, 15, 128, 4, - 0, 0, 160, 1, 0, 228, - 128, 0, 0, 228, 128, 4, + 160, 5, 0, 0, 3, 0, + 0, 15, 128, 0, 0, 228, + 128, 3, 0, 85, 160, 4, 0, 0, 4, 0, 0, 15, - 128, 4, 0, 85, 160, 2, + 128, 3, 0, 0, 160, 1, 0, 228, 128, 0, 0, 228, 128, 2, 0, 0, 3, 1, 0, 2, 128, 0, 0, 85, - 176, 1, 0, 170, 160, 1, + 176, 0, 0, 170, 160, 1, 0, 0, 2, 1, 0, 1, 128, 0, 0, 0, 176, 2, 0, 0, 3, 2, 0, 2, - 128, 0, 0, 85, 176, 1, + 128, 0, 0, 85, 176, 0, 0, 255, 160, 1, 0, 0, 2, 2, 0, 1, 128, 0, 0, 0, 176, 66, 0, 0, @@ -3402,585 +5267,692 @@ const BYTE d2deffect[] = 0, 15, 128, 2, 0, 228, 128, 1, 8, 228, 160, 4, 0, 0, 4, 0, 0, 15, - 128, 4, 0, 170, 160, 1, + 128, 3, 0, 170, 160, 1, 0, 228, 128, 0, 0, 228, 128, 4, 0, 0, 4, 0, - 0, 15, 128, 4, 0, 255, + 0, 15, 128, 3, 0, 255, 160, 2, 0, 228, 128, 0, 0, 228, 128, 2, 0, 0, 3, 1, 0, 2, 128, 0, - 0, 85, 176, 2, 0, 0, + 0, 85, 176, 1, 0, 0, 160, 1, 0, 0, 2, 1, 0, 1, 128, 0, 0, 0, - 176, 1, 0, 0, 2, 2, - 0, 3, 128, 0, 0, 235, + 176, 2, 0, 0, 3, 2, + 0, 2, 128, 0, 0, 85, + 176, 1, 0, 85, 160, 1, + 0, 0, 2, 2, 0, 1, + 128, 0, 0, 0, 176, 66, + 0, 0, 3, 1, 0, 15, + 128, 1, 0, 228, 128, 1, + 8, 228, 160, 66, 0, 0, + 3, 2, 0, 15, 128, 2, + 0, 228, 128, 1, 8, 228, + 160, 4, 0, 0, 4, 0, + 0, 15, 128, 4, 0, 0, + 160, 1, 0, 228, 128, 0, + 0, 228, 128, 4, 0, 0, + 4, 0, 0, 15, 128, 4, + 0, 85, 160, 2, 0, 228, + 128, 0, 0, 228, 128, 2, + 0, 0, 3, 1, 0, 2, + 128, 0, 0, 85, 176, 1, + 0, 170, 160, 1, 0, 0, + 2, 1, 0, 1, 128, 0, + 0, 0, 176, 2, 0, 0, + 3, 2, 0, 2, 128, 0, + 0, 85, 176, 1, 0, 255, + 160, 1, 0, 0, 2, 2, + 0, 1, 128, 0, 0, 0, 176, 66, 0, 0, 3, 1, 0, 15, 128, 1, 0, 228, 128, 1, 8, 228, 160, 66, 0, 0, 3, 2, 0, 15, - 128, 2, 0, 228, 128, 0, + 128, 2, 0, 228, 128, 1, 8, 228, 160, 4, 0, 0, - 4, 0, 0, 15, 128, 5, - 0, 0, 160, 1, 0, 228, - 128, 0, 0, 228, 128, 5, - 0, 0, 3, 0, 0, 15, - 128, 2, 0, 255, 128, 0, - 0, 228, 128, 1, 0, 0, - 2, 0, 8, 15, 128, 0, - 0, 228, 128, 255, 255, 0, - 0, 83, 72, 68, 82, 80, - 4, 0, 0, 64, 0, 0, - 0, 20, 1, 0, 0, 89, - 0, 0, 4, 70, 142, 32, - 0, 0, 0, 0, 0, 9, - 0, 0, 0, 90, 0, 0, - 3, 0, 96, 16, 0, 0, - 0, 0, 0, 90, 0, 0, - 3, 0, 96, 16, 0, 1, - 0, 0, 0, 88, 24, 0, - 4, 0, 112, 16, 0, 0, - 0, 0, 0, 85, 85, 0, + 4, 0, 0, 15, 128, 4, + 0, 170, 160, 1, 0, 228, + 128, 0, 0, 228, 128, 4, + 0, 0, 4, 0, 0, 15, + 128, 4, 0, 255, 160, 2, + 0, 228, 128, 0, 0, 228, + 128, 2, 0, 0, 3, 1, + 0, 2, 128, 0, 0, 85, + 176, 2, 0, 0, 160, 1, + 0, 0, 2, 1, 0, 1, + 128, 0, 0, 0, 176, 1, + 0, 0, 2, 2, 0, 3, + 128, 0, 0, 235, 176, 66, + 0, 0, 3, 1, 0, 15, + 128, 1, 0, 228, 128, 1, + 8, 228, 160, 66, 0, 0, + 3, 2, 0, 15, 128, 2, + 0, 228, 128, 0, 8, 228, + 160, 4, 0, 0, 4, 0, + 0, 15, 128, 5, 0, 0, + 160, 1, 0, 228, 128, 0, + 0, 228, 128, 5, 0, 0, + 3, 0, 0, 15, 128, 2, + 0, 255, 128, 0, 0, 228, + 128, 1, 0, 0, 2, 0, + 8, 15, 128, 0, 0, 228, + 128, 255, 255, 0, 0, 83, + 72, 68, 82, 80, 4, 0, + 0, 64, 0, 0, 0, 20, + 1, 0, 0, 89, 0, 0, + 4, 70, 142, 32, 0, 0, + 0, 0, 0, 9, 0, 0, + 0, 90, 0, 0, 3, 0, + 96, 16, 0, 0, 0, 0, + 0, 90, 0, 0, 3, 0, + 96, 16, 0, 1, 0, 0, 0, 88, 24, 0, 4, 0, - 112, 16, 0, 1, 0, 0, - 0, 85, 85, 0, 0, 98, - 16, 0, 3, 50, 16, 16, - 0, 1, 0, 0, 0, 98, - 16, 0, 3, 194, 16, 16, - 0, 1, 0, 0, 0, 101, - 0, 0, 3, 242, 32, 16, - 0, 0, 0, 0, 0, 104, - 0, 0, 2, 4, 0, 0, - 0, 54, 0, 0, 5, 82, - 0, 16, 0, 0, 0, 0, - 0, 6, 16, 16, 0, 1, - 0, 0, 0, 0, 0, 0, - 8, 242, 0, 16, 0, 1, - 0, 0, 0, 86, 21, 16, - 0, 1, 0, 0, 0, 134, - 141, 32, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 54, - 0, 0, 5, 162, 0, 16, - 0, 0, 0, 0, 0, 6, - 8, 16, 0, 1, 0, 0, - 0, 69, 0, 0, 9, 242, - 0, 16, 0, 2, 0, 0, - 0, 230, 10, 16, 0, 0, - 0, 0, 0, 70, 126, 16, - 0, 0, 0, 0, 0, 0, - 96, 16, 0, 1, 0, 0, - 0, 69, 0, 0, 9, 242, - 0, 16, 0, 0, 0, 0, - 0, 70, 0, 16, 0, 0, - 0, 0, 0, 70, 126, 16, - 0, 0, 0, 0, 0, 0, - 96, 16, 0, 1, 0, 0, - 0, 56, 0, 0, 8, 242, - 0, 16, 0, 2, 0, 0, - 0, 70, 14, 16, 0, 2, - 0, 0, 0, 86, 133, 32, - 0, 0, 0, 0, 0, 6, - 0, 0, 0, 50, 0, 0, - 10, 242, 0, 16, 0, 0, - 0, 0, 0, 6, 128, 32, - 0, 0, 0, 0, 0, 6, - 0, 0, 0, 70, 14, 16, - 0, 0, 0, 0, 0, 70, - 14, 16, 0, 2, 0, 0, - 0, 54, 0, 0, 5, 82, - 0, 16, 0, 1, 0, 0, - 0, 6, 16, 16, 0, 1, - 0, 0, 0, 69, 0, 0, - 9, 242, 0, 16, 0, 2, - 0, 0, 0, 70, 0, 16, - 0, 1, 0, 0, 0, 70, - 126, 16, 0, 0, 0, 0, - 0, 0, 96, 16, 0, 1, - 0, 0, 0, 69, 0, 0, - 9, 242, 0, 16, 0, 1, - 0, 0, 0, 230, 10, 16, - 0, 1, 0, 0, 0, 70, - 126, 16, 0, 0, 0, 0, - 0, 0, 96, 16, 0, 1, - 0, 0, 0, 50, 0, 0, - 10, 242, 0, 16, 0, 0, - 0, 0, 0, 166, 138, 32, - 0, 0, 0, 0, 0, 6, - 0, 0, 0, 70, 14, 16, - 0, 2, 0, 0, 0, 70, - 14, 16, 0, 0, 0, 0, - 0, 50, 0, 0, 10, 242, - 0, 16, 0, 0, 0, 0, - 0, 246, 143, 32, 0, 0, - 0, 0, 0, 6, 0, 0, - 0, 70, 14, 16, 0, 1, - 0, 0, 0, 70, 14, 16, - 0, 0, 0, 0, 0, 54, + 112, 16, 0, 0, 0, 0, + 0, 85, 85, 0, 0, 88, + 24, 0, 4, 0, 112, 16, + 0, 1, 0, 0, 0, 85, + 85, 0, 0, 98, 16, 0, + 3, 50, 16, 16, 0, 1, + 0, 0, 0, 98, 16, 0, + 3, 194, 16, 16, 0, 1, + 0, 0, 0, 101, 0, 0, + 3, 242, 32, 16, 0, 0, + 0, 0, 0, 104, 0, 0, + 2, 4, 0, 0, 0, 54, 0, 0, 5, 82, 0, 16, - 0, 1, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 6, 16, 16, 0, 1, 0, 0, 0, 0, 0, 0, 8, 242, - 0, 16, 0, 2, 0, 0, + 0, 16, 0, 1, 0, 0, 0, 86, 21, 16, 0, 1, 0, 0, 0, 134, 141, 32, - 0, 0, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 54, 0, 0, - 5, 162, 0, 16, 0, 1, + 5, 162, 0, 16, 0, 0, 0, 0, 0, 6, 8, 16, - 0, 2, 0, 0, 0, 69, + 0, 1, 0, 0, 0, 69, 0, 0, 9, 242, 0, 16, - 0, 3, 0, 0, 0, 70, - 0, 16, 0, 1, 0, 0, + 0, 2, 0, 0, 0, 230, + 10, 16, 0, 0, 0, 0, 0, 70, 126, 16, 0, 0, 0, 0, 0, 0, 96, 16, 0, 1, 0, 0, 0, 69, 0, 0, 9, 242, 0, 16, - 0, 1, 0, 0, 0, 230, - 10, 16, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 70, + 0, 16, 0, 0, 0, 0, 0, 70, 126, 16, 0, 0, 0, 0, 0, 0, 96, 16, - 0, 1, 0, 0, 0, 50, - 0, 0, 10, 242, 0, 16, - 0, 0, 0, 0, 0, 6, - 128, 32, 0, 0, 0, 0, - 0, 7, 0, 0, 0, 70, - 14, 16, 0, 3, 0, 0, - 0, 70, 14, 16, 0, 0, - 0, 0, 0, 50, 0, 0, - 10, 242, 0, 16, 0, 0, - 0, 0, 0, 86, 133, 32, - 0, 0, 0, 0, 0, 7, - 0, 0, 0, 70, 14, 16, - 0, 1, 0, 0, 0, 70, - 14, 16, 0, 0, 0, 0, - 0, 54, 0, 0, 5, 82, - 0, 16, 0, 2, 0, 0, - 0, 6, 16, 16, 0, 1, - 0, 0, 0, 69, 0, 0, - 9, 242, 0, 16, 0, 1, - 0, 0, 0, 70, 0, 16, + 0, 1, 0, 0, 0, 56, + 0, 0, 8, 242, 0, 16, 0, 2, 0, 0, 0, 70, - 126, 16, 0, 0, 0, 0, - 0, 0, 96, 16, 0, 1, - 0, 0, 0, 69, 0, 0, - 9, 242, 0, 16, 0, 2, - 0, 0, 0, 230, 10, 16, - 0, 2, 0, 0, 0, 70, - 126, 16, 0, 0, 0, 0, - 0, 0, 96, 16, 0, 1, - 0, 0, 0, 50, 0, 0, - 10, 242, 0, 16, 0, 0, - 0, 0, 0, 166, 138, 32, - 0, 0, 0, 0, 0, 7, - 0, 0, 0, 70, 14, 16, - 0, 1, 0, 0, 0, 70, - 14, 16, 0, 0, 0, 0, + 14, 16, 0, 2, 0, 0, + 0, 86, 133, 32, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 50, 0, 0, 10, 242, 0, 16, 0, 0, 0, 0, - 0, 246, 143, 32, 0, 0, - 0, 0, 0, 7, 0, 0, + 0, 6, 128, 32, 0, 0, + 0, 0, 0, 6, 0, 0, + 0, 70, 14, 16, 0, 0, + 0, 0, 0, 70, 14, 16, + 0, 2, 0, 0, 0, 54, + 0, 0, 5, 82, 0, 16, + 0, 1, 0, 0, 0, 6, + 16, 16, 0, 1, 0, 0, + 0, 69, 0, 0, 9, 242, + 0, 16, 0, 2, 0, 0, + 0, 70, 0, 16, 0, 1, + 0, 0, 0, 70, 126, 16, + 0, 0, 0, 0, 0, 0, + 96, 16, 0, 1, 0, 0, + 0, 69, 0, 0, 9, 242, + 0, 16, 0, 1, 0, 0, + 0, 230, 10, 16, 0, 1, + 0, 0, 0, 70, 126, 16, + 0, 0, 0, 0, 0, 0, + 96, 16, 0, 1, 0, 0, + 0, 50, 0, 0, 10, 242, + 0, 16, 0, 0, 0, 0, + 0, 166, 138, 32, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 70, 14, 16, 0, 2, 0, 0, 0, 70, 14, 16, - 0, 0, 0, 0, 0, 0, - 0, 0, 8, 34, 0, 16, - 0, 1, 0, 0, 0, 26, - 16, 16, 0, 1, 0, 0, - 0, 10, 128, 32, 0, 0, - 0, 0, 0, 5, 0, 0, - 0, 54, 0, 0, 5, 18, + 0, 0, 0, 0, 0, 50, + 0, 0, 10, 242, 0, 16, + 0, 0, 0, 0, 0, 246, + 143, 32, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 70, + 14, 16, 0, 1, 0, 0, + 0, 70, 14, 16, 0, 0, + 0, 0, 0, 54, 0, 0, + 5, 82, 0, 16, 0, 1, + 0, 0, 0, 6, 16, 16, + 0, 1, 0, 0, 0, 0, + 0, 0, 8, 242, 0, 16, + 0, 2, 0, 0, 0, 86, + 21, 16, 0, 1, 0, 0, + 0, 134, 141, 32, 0, 0, + 0, 0, 0, 4, 0, 0, + 0, 54, 0, 0, 5, 162, 0, 16, 0, 1, 0, 0, - 0, 10, 16, 16, 0, 1, + 0, 6, 8, 16, 0, 2, + 0, 0, 0, 69, 0, 0, + 9, 242, 0, 16, 0, 3, + 0, 0, 0, 70, 0, 16, + 0, 1, 0, 0, 0, 70, + 126, 16, 0, 0, 0, 0, + 0, 0, 96, 16, 0, 1, 0, 0, 0, 69, 0, 0, 9, 242, 0, 16, 0, 1, - 0, 0, 0, 70, 0, 16, + 0, 0, 0, 230, 10, 16, 0, 1, 0, 0, 0, 70, 126, 16, 0, 0, 0, 0, 0, 0, 96, 16, 0, 1, 0, 0, 0, 50, 0, 0, 10, 242, 0, 16, 0, 0, 0, 0, 0, 6, 128, 32, - 0, 0, 0, 0, 0, 8, + 0, 0, 0, 0, 0, 7, 0, 0, 0, 70, 14, 16, - 0, 1, 0, 0, 0, 70, + 0, 3, 0, 0, 0, 70, 14, 16, 0, 0, 0, 0, + 0, 50, 0, 0, 10, 242, + 0, 16, 0, 0, 0, 0, + 0, 86, 133, 32, 0, 0, + 0, 0, 0, 7, 0, 0, + 0, 70, 14, 16, 0, 1, + 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 54, + 0, 0, 5, 82, 0, 16, + 0, 2, 0, 0, 0, 6, + 16, 16, 0, 1, 0, 0, 0, 69, 0, 0, 9, 242, 0, 16, 0, 1, 0, 0, - 0, 230, 26, 16, 0, 1, + 0, 70, 0, 16, 0, 2, 0, 0, 0, 70, 126, 16, - 0, 1, 0, 0, 0, 0, - 96, 16, 0, 0, 0, 0, - 0, 56, 0, 0, 7, 242, - 32, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 96, 16, 0, 1, 0, 0, + 0, 69, 0, 0, 9, 242, + 0, 16, 0, 2, 0, 0, + 0, 230, 10, 16, 0, 2, + 0, 0, 0, 70, 126, 16, + 0, 0, 0, 0, 0, 0, + 96, 16, 0, 1, 0, 0, + 0, 50, 0, 0, 10, 242, + 0, 16, 0, 0, 0, 0, + 0, 166, 138, 32, 0, 0, + 0, 0, 0, 7, 0, 0, + 0, 70, 14, 16, 0, 1, + 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 50, + 0, 0, 10, 242, 0, 16, + 0, 0, 0, 0, 0, 246, + 143, 32, 0, 0, 0, 0, + 0, 7, 0, 0, 0, 70, + 14, 16, 0, 2, 0, 0, 0, 70, 14, 16, 0, 0, - 0, 0, 0, 246, 15, 16, - 0, 1, 0, 0, 0, 62, - 0, 0, 1, 83, 84, 65, - 84, 116, 0, 0, 0, 31, - 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 3, - 0, 0, 0, 5, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 9, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 82, 68, 69, 70, 12, - 2, 0, 0, 1, 0, 0, - 0, 232, 0, 0, 0, 5, - 0, 0, 0, 28, 0, 0, - 0, 0, 4, 255, 255, 0, - 1, 0, 0, 216, 1, 0, - 0, 188, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, + 8, 34, 0, 16, 0, 1, + 0, 0, 0, 26, 16, 16, + 0, 1, 0, 0, 0, 10, + 128, 32, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 54, + 0, 0, 5, 18, 0, 16, + 0, 1, 0, 0, 0, 10, + 16, 16, 0, 1, 0, 0, + 0, 69, 0, 0, 9, 242, + 0, 16, 0, 1, 0, 0, + 0, 70, 0, 16, 0, 1, + 0, 0, 0, 70, 126, 16, 0, 0, 0, 0, 0, 0, + 96, 16, 0, 1, 0, 0, + 0, 50, 0, 0, 10, 242, + 0, 16, 0, 0, 0, 0, + 0, 6, 128, 32, 0, 0, + 0, 0, 0, 8, 0, 0, + 0, 70, 14, 16, 0, 1, + 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 69, + 0, 0, 9, 242, 0, 16, + 0, 1, 0, 0, 0, 230, + 26, 16, 0, 1, 0, 0, + 0, 70, 126, 16, 0, 1, + 0, 0, 0, 0, 96, 16, + 0, 0, 0, 0, 0, 56, + 0, 0, 7, 242, 32, 16, + 0, 0, 0, 0, 0, 70, + 14, 16, 0, 0, 0, 0, + 0, 246, 15, 16, 0, 1, + 0, 0, 0, 62, 0, 0, + 1, 83, 84, 65, 84, 116, + 0, 0, 0, 31, 0, 0, + 0, 4, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 201, 0, 0, - 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 10, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 82, + 68, 69, 70, 12, 2, 0, + 0, 1, 0, 0, 0, 232, + 0, 0, 0, 5, 0, 0, + 0, 28, 0, 0, 0, 0, + 4, 255, 255, 0, 1, 0, + 0, 216, 1, 0, 0, 188, + 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, + 0, 201, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 216, + 0, 1, 0, 0, 0, 0, + 0, 0, 0, 216, 0, 0, + 0, 2, 0, 0, 0, 5, + 0, 0, 0, 4, 0, 0, + 0, 255, 255, 255, 255, 0, + 0, 0, 0, 1, 0, 0, + 0, 12, 0, 0, 0, 220, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 255, 255, 255, - 255, 0, 0, 0, 0, 1, + 255, 1, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, - 0, 220, 0, 0, 0, 2, - 0, 0, 0, 5, 0, 0, - 0, 4, 0, 0, 0, 255, - 255, 255, 255, 1, 0, 0, - 0, 1, 0, 0, 0, 12, - 0, 0, 0, 225, 0, 0, + 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 115, - 77, 97, 115, 107, 83, 97, - 109, 112, 108, 101, 114, 0, - 115, 83, 104, 97, 100, 111, - 119, 83, 97, 109, 112, 108, - 101, 114, 0, 116, 101, 120, - 0, 109, 97, 115, 107, 0, - 99, 98, 49, 0, 171, 171, - 171, 225, 0, 0, 0, 4, - 0, 0, 0, 0, 1, 0, - 0, 160, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 0, 115, 77, 97, + 115, 107, 83, 97, 109, 112, + 108, 101, 114, 0, 115, 83, + 104, 97, 100, 111, 119, 83, + 97, 109, 112, 108, 101, 114, + 0, 116, 101, 120, 0, 109, + 97, 115, 107, 0, 99, 98, + 49, 0, 171, 171, 171, 225, + 0, 0, 0, 4, 0, 0, + 0, 0, 1, 0, 0, 160, 0, 0, 0, 0, 0, 0, - 0, 96, 1, 0, 0, 0, - 0, 0, 0, 48, 0, 0, - 0, 0, 0, 0, 0, 112, - 1, 0, 0, 0, 0, 0, - 0, 128, 1, 0, 0, 48, - 0, 0, 0, 48, 0, 0, - 0, 2, 0, 0, 0, 144, - 1, 0, 0, 0, 0, 0, - 0, 160, 1, 0, 0, 96, - 0, 0, 0, 48, 0, 0, - 0, 2, 0, 0, 0, 172, - 1, 0, 0, 0, 0, 0, - 0, 188, 1, 0, 0, 144, - 0, 0, 0, 16, 0, 0, - 0, 0, 0, 0, 0, 200, + 0, 0, 0, 0, 0, 96, 1, 0, 0, 0, 0, 0, + 0, 48, 0, 0, 0, 0, + 0, 0, 0, 112, 1, 0, + 0, 0, 0, 0, 0, 128, + 1, 0, 0, 48, 0, 0, + 0, 48, 0, 0, 0, 2, + 0, 0, 0, 144, 1, 0, + 0, 0, 0, 0, 0, 160, + 1, 0, 0, 96, 0, 0, + 0, 48, 0, 0, 0, 2, + 0, 0, 0, 172, 1, 0, + 0, 0, 0, 0, 0, 188, + 1, 0, 0, 144, 0, 0, + 0, 16, 0, 0, 0, 0, + 0, 0, 0, 200, 1, 0, + 0, 0, 0, 0, 0, 66, + 108, 117, 114, 79, 102, 102, + 115, 101, 116, 115, 72, 0, + 171, 171, 171, 1, 0, 3, + 0, 1, 0, 4, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 66, 108, 117, 114, 79, 102, 102, 115, 101, 116, 115, - 72, 0, 171, 171, 171, 1, + 86, 0, 171, 171, 171, 1, 0, 3, 0, 1, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 66, 108, 117, - 114, 79, 102, 102, 115, 101, - 116, 115, 86, 0, 171, 171, - 171, 1, 0, 3, 0, 1, - 0, 4, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 66, - 108, 117, 114, 87, 101, 105, - 103, 104, 116, 115, 0, 1, - 0, 3, 0, 1, 0, 4, - 0, 3, 0, 0, 0, 0, - 0, 0, 0, 83, 104, 97, - 100, 111, 119, 67, 111, 108, - 111, 114, 0, 1, 0, 3, - 0, 1, 0, 4, 0, 0, + 114, 87, 101, 105, 103, 104, + 116, 115, 0, 1, 0, 3, + 0, 1, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, - 0, 77, 105, 99, 114, 111, - 115, 111, 102, 116, 32, 40, - 82, 41, 32, 72, 76, 83, - 76, 32, 83, 104, 97, 100, - 101, 114, 32, 67, 111, 109, - 112, 105, 108, 101, 114, 32, - 57, 46, 50, 57, 46, 57, - 53, 50, 46, 51, 49, 49, - 49, 0, 171, 171, 171, 73, - 83, 71, 78, 104, 0, 0, - 0, 3, 0, 0, 0, 8, - 0, 0, 0, 80, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 15, - 0, 0, 0, 92, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 1, 0, 0, 0, 3, - 3, 0, 0, 92, 0, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 1, 0, 0, 0, 12, - 12, 0, 0, 83, 86, 95, - 80, 111, 115, 105, 116, 105, - 111, 110, 0, 84, 69, 88, - 67, 79, 79, 82, 68, 0, - 171, 171, 171, 79, 83, 71, - 78, 44, 0, 0, 0, 1, + 0, 83, 104, 97, 100, 111, + 119, 67, 111, 108, 111, 114, + 0, 1, 0, 3, 0, 1, + 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 77, + 105, 99, 114, 111, 115, 111, + 102, 116, 32, 40, 82, 41, + 32, 72, 76, 83, 76, 32, + 83, 104, 97, 100, 101, 114, + 32, 67, 111, 109, 112, 105, + 108, 101, 114, 32, 57, 46, + 50, 57, 46, 57, 53, 50, + 46, 51, 49, 49, 49, 0, + 171, 171, 171, 73, 83, 71, + 78, 104, 0, 0, 0, 3, 0, 0, 0, 8, 0, 0, - 0, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 0, 80, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 83, 86, 95, 84, 97, - 114, 103, 101, 116, 0, 171, - 171, 27, 51, 0, 0, 0, - 0, 0, 0, 4, 0, 0, - 0, 48, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 0, - 0, 255, 255, 255, 255, 0, - 0, 0, 0, 43, 0, 0, - 0, 15, 0, 0, 0, 0, + 0, 92, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 1, + 0, 0, 0, 3, 3, 0, + 0, 92, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 1, + 0, 0, 0, 12, 12, 0, + 0, 83, 86, 95, 80, 111, + 115, 105, 116, 105, 111, 110, + 0, 84, 69, 88, 67, 79, + 79, 82, 68, 0, 171, 171, + 171, 79, 83, 71, 78, 44, + 0, 0, 0, 1, 0, 0, + 0, 8, 0, 0, 0, 32, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 83, + 86, 95, 84, 97, 114, 103, + 101, 116, 0, 171, 171, 149, + 83, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 48, + 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 255, + 255, 255, 255, 0, 0, 0, + 0, 43, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 52, 0, 0, 0, 15, - 0, 0, 0, 0, 0, 0, - 0, 16, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 62, + 0, 0, 0, 0, 0, 52, 0, 0, 0, 15, 0, 0, - 0, 0, 0, 0, 0, 32, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 76, 0, 0, - 0, 160, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0, - 0, 255, 255, 255, 255, 0, - 0, 0, 0, 108, 0, 0, - 0, 80, 0, 0, 0, 0, + 0, 0, 0, 62, 0, 0, + 0, 15, 0, 0, 0, 0, + 0, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 76, 0, 0, 0, 160, + 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 255, + 255, 255, 255, 0, 0, 0, + 0, 108, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 121, 0, 0, 0, 80, - 0, 0, 0, 0, 0, 0, - 0, 48, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 134, + 0, 0, 0, 0, 0, 121, 0, 0, 0, 80, 0, 0, + 0, 0, 0, 0, 0, 48, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 134, 0, 0, + 0, 80, 0, 0, 0, 0, + 0, 0, 0, 96, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 146, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, + 0, 144, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 158, + 0, 0, 0, 112, 0, 0, + 0, 0, 0, 0, 0, 7, + 0, 0, 0, 255, 255, 255, + 255, 0, 0, 0, 0, 199, + 0, 0, 0, 171, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 0, + 0, 229, 0, 0, 0, 0, + 0, 0, 0, 48, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 47, 1, 0, 0, 19, + 1, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 52, + 1, 0, 0, 229, 0, 0, + 0, 0, 0, 0, 0, 80, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 94, 1, 0, + 0, 66, 1, 0, 0, 0, + 0, 0, 0, 88, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 96, 1, 0, 0, 66, + 1, 0, 0, 0, 0, 0, + 0, 92, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 104, + 1, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 146, 0, 0, - 0, 15, 0, 0, 0, 0, - 0, 0, 0, 144, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 196, 0, 0, 0, 168, - 0, 0, 0, 0, 0, 0, - 0, 255, 255, 255, 255, 0, - 0, 0, 0, 200, 0, 0, - 0, 168, 0, 0, 0, 0, + 0, 0, 0, 153, 1, 0, + 0, 125, 1, 0, 0, 0, 0, 0, 0, 255, 255, 255, - 255, 0, 0, 0, 0, 246, - 0, 0, 0, 218, 0, 0, + 255, 0, 0, 0, 0, 157, + 1, 0, 0, 125, 1, 0, + 0, 0, 0, 0, 0, 255, + 255, 255, 255, 0, 0, 0, + 0, 203, 1, 0, 0, 175, + 1, 0, 0, 0, 0, 0, + 0, 255, 255, 255, 255, 4, + 0, 0, 0, 45, 0, 0, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 212, 1, 0, + 0, 55, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, + 0, 153, 1, 0, 0, 46, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 224, + 1, 0, 0, 47, 0, 0, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 236, 1, 0, + 0, 0, 0, 0, 0, 248, + 1, 0, 0, 175, 1, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 4, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 255, 0, 0, 0, 55, + 0, 5, 2, 0, 0, 55, 0, 0, 0, 0, 0, 0, - 0, 2, 0, 0, 0, 196, - 0, 0, 0, 46, 0, 0, + 0, 2, 0, 0, 0, 157, + 1, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 11, 1, 0, + 0, 0, 0, 17, 2, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 23, 1, 0, 0, 0, - 0, 0, 0, 35, 1, 0, - 0, 218, 0, 0, 0, 0, + 0, 29, 2, 0, 0, 0, + 0, 0, 0, 41, 2, 0, + 0, 175, 1, 0, 0, 0, 0, 0, 0, 255, 255, 255, - 255, 4, 0, 0, 0, 45, + 255, 5, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 48, - 1, 0, 0, 55, 0, 0, + 0, 1, 0, 0, 0, 56, + 2, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 200, 0, 0, + 0, 0, 0, 153, 1, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 60, 1, 0, 0, 47, + 0, 68, 2, 0, 0, 47, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 72, - 1, 0, 0, 0, 0, 0, - 0, 84, 1, 0, 0, 218, - 0, 0, 0, 0, 0, 0, - 0, 255, 255, 255, 255, 5, - 0, 0, 0, 45, 0, 0, + 0, 1, 0, 0, 0, 80, + 2, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 99, 1, 0, - 0, 55, 0, 0, 0, 0, - 0, 0, 0, 2, 0, 0, - 0, 196, 0, 0, 0, 46, - 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 111, - 1, 0, 0, 47, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 123, 1, 0, - 0, 52, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 135, 1, 0, 0, 0, - 0, 0, 0, 215, 1, 0, - 0, 187, 1, 0, 0, 0, - 0, 0, 0, 255, 255, 255, - 255, 2, 0, 0, 0, 19, - 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 227, - 1, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 239, 1, 0, - 0, 0, 0, 0, 0, 34, - 2, 0, 0, 6, 2, 0, + 0, 0, 0, 92, 2, 0, + 0, 0, 0, 0, 0, 172, + 2, 0, 0, 144, 2, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 2, 0, 0, - 0, 37, 0, 0, 0, 0, + 0, 19, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 47, 2, 0, 0, 44, + 0, 184, 2, 0, 0, 13, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 59, + 0, 1, 0, 0, 0, 196, 2, 0, 0, 0, 0, 0, - 0, 71, 2, 0, 0, 6, + 0, 247, 2, 0, 0, 219, 2, 0, 0, 0, 0, 0, - 0, 255, 255, 255, 255, 8, + 0, 255, 255, 255, 255, 2, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 84, 2, 0, - 0, 38, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 96, 2, 0, 0, 39, - 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 108, - 2, 0, 0, 40, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 120, 2, 0, - 0, 41, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 132, 2, 0, 0, 42, - 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 144, - 2, 0, 0, 43, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 156, 2, 0, + 0, 0, 0, 4, 3, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 168, 2, 0, 0, 0, - 0, 0, 0, 180, 2, 0, - 0, 1, 0, 0, 0, 0, - 0, 0, 0, 194, 2, 0, + 0, 16, 3, 0, 0, 0, + 0, 0, 0, 28, 3, 0, + 0, 219, 2, 0, 0, 0, + 0, 0, 0, 255, 255, 255, + 255, 8, 0, 0, 0, 37, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 41, + 3, 0, 0, 38, 0, 0, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 53, 3, 0, + 0, 39, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 65, 3, 0, 0, 40, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 77, + 3, 0, 0, 41, 0, 0, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 89, 3, 0, + 0, 42, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 101, 3, 0, 0, 43, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 113, + 3, 0, 0, 44, 0, 0, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 125, 3, 0, + 0, 0, 0, 0, 0, 137, + 3, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 151, + 3, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 172, + 2, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 7, + 0, 0, 0, 194, 7, 0, + 0, 8, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 202, 7, 0, 0, 7, + 0, 0, 0, 0, 0, 0, + 0, 7, 0, 0, 0, 174, + 10, 0, 0, 182, 10, 0, + 0, 2, 0, 0, 0, 0, + 0, 0, 0, 151, 3, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 215, 1, 0, + 0, 0, 0, 172, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 237, 6, 0, 0, 8, + 0, 211, 17, 0, 0, 8, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 245, - 6, 0, 0, 7, 0, 0, + 0, 1, 0, 0, 0, 219, + 17, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 7, - 0, 0, 0, 217, 9, 0, - 0, 225, 9, 0, 0, 1, - 0, 0, 0, 0, 0, 0, - 0, 194, 2, 0, 0, 4, + 0, 0, 0, 155, 27, 0, + 0, 163, 27, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, - 0, 215, 1, 0, 0, 6, + 0, 172, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, - 0, 7, 0, 0, 0, 29, - 14, 0, 0, 8, 0, 0, + 0, 7, 0, 0, 0, 174, + 34, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 37, 14, 0, + 0, 0, 0, 182, 34, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 5, 18, 0, 0, 13, - 18, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 194, - 2, 0, 0, 7, 0, 0, + 0, 86, 42, 0, 0, 94, + 42, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 151, + 3, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 0, 0, 0, 215, - 1, 0, 0, 10, 0, 0, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 37, 18, 0, - 0, 11, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, - 0, 73, 18, 0, 0, 2, - 0, 0, 0, 0, 0, 0, - 0, 2, 0, 0, 0, 34, + 0, 2, 0, 0, 0, 172, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, - 0, 0, 0, 125, 22, 0, + 0, 0, 0, 154, 46, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 133, 22, 0, 0, 7, + 0, 162, 46, 0, 0, 7, 0, 0, 0, 0, 0, 0, - 0, 7, 0, 0, 0, 125, - 32, 0, 0, 133, 32, 0, + 0, 7, 0, 0, 0, 130, + 50, 0, 0, 138, 50, 0, + 0, 3, 0, 0, 0, 0, + 0, 0, 0, 151, 3, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 215, 1, 0, + 0, 0, 0, 172, 2, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 136, 32, 0, 0, 11, + 0, 162, 50, 0, 0, 11, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 172, - 32, 0, 0, 2, 0, 0, + 0, 1, 0, 0, 0, 198, + 50, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 71, 2, 0, + 0, 0, 0, 247, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 224, 36, 0, 0, 8, + 0, 250, 54, 0, 0, 8, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 232, - 36, 0, 0, 7, 0, 0, + 0, 1, 0, 0, 0, 2, + 55, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 7, - 0, 0, 0, 164, 46, 0, - 0, 172, 46, 0, 0, 7, + 0, 0, 0, 250, 64, 0, + 0, 163, 27, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, - 0, 215, 1, 0, 0, 10, + 0, 172, 2, 0, 0, 10, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 175, - 46, 0, 0, 11, 0, 0, + 0, 1, 0, 0, 0, 2, + 65, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 211, 46, 0, + 0, 0, 0, 38, 65, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, - 0, 71, 2, 0, 0, 6, + 0, 28, 3, 0, 0, 6, 0, 0, 0, 0, 0, 0, - 0, 7, 0, 0, 0, 7, - 51, 0, 0, 8, 0, 0, + 0, 7, 0, 0, 0, 90, + 69, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 15, 51, 0, + 0, 0, 0, 98, 69, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 195, 61, 0, 0 + 0, 30, 79, 0, 0, 38, + 79, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 172, + 2, 0, 0, 10, 0, 0, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 41, 79, 0, + 0, 11, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 77, 79, 0, 0, 2, + 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 28, + 3, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 7, + 0, 0, 0, 129, 83, 0, + 0, 8, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 137, 83, 0, 0, 7, + 0, 0, 0, 0, 0, 0, + 0, 7, 0, 0, 0, 61, + 94, 0, 0 }; From 73fb32b307f105c5246aa4fae334b1a95449b529 Mon Sep 17 00:00:00 2001 From: Bill McCloskey Date: Fri, 8 Jul 2011 14:43:16 -0700 Subject: [PATCH 09/22] Bug 662646 - Avoid allocating memory in Windows crash handler (r=ted) --- .../src/client/windows/handler/exception_handler.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc b/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc index 5ff92adc63d..deb46e022f0 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc @@ -273,6 +273,9 @@ void ExceptionHandler::Initialize(const wstring& dump_path, set_dump_path(dump_path); } + // Reserve one element for the instruction memory + app_memory_info_.push_back(AppMemory(0, 0)); + // There is a race condition here. If the first instance has not yet // initialized the critical section, the second (and later) instances may // try to use uninitialized critical section object. The feature of multiple @@ -1045,7 +1048,10 @@ bool ExceptionHandler::WriteMinidumpWithExceptionForProcess( reinterpret_cast(info.BaseAddress) + info.RegionSize); ULONG size = static_cast(end_of_range - base); - app_memory_info_.push_back(AppMemory(base, size)); + + AppMemory &elt = app_memory_info_.front(); + elt.ptr = base; + elt.length = size; } } @@ -1053,6 +1059,10 @@ bool ExceptionHandler::WriteMinidumpWithExceptionForProcess( context.iter = app_memory_info_.begin(); context.end = app_memory_info_.end(); + // Skip the reserved element if there was no instruction memory + if (context.iter->ptr == 0) + context.iter++; + MINIDUMP_CALLBACK_INFORMATION callback; callback.CallbackRoutine = MinidumpWriteDumpCallback; callback.CallbackParam = reinterpret_cast(&context); From 8c7307c37056021fb3e5a217e348c1a81304916f Mon Sep 17 00:00:00 2001 From: Chris Pearce Date: Sat, 9 Jul 2011 13:10:40 +1200 Subject: [PATCH 10/22] Bug 670055 - Seek video to exact audio sample. r=kinetik --- content/media/nsBuiltinDecoderReader.cpp | 53 +++++++++++++++++++++--- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/content/media/nsBuiltinDecoderReader.cpp b/content/media/nsBuiltinDecoderReader.cpp index 2a2d908b7d2..f749a77a492 100644 --- a/content/media/nsBuiltinDecoderReader.cpp +++ b/content/media/nsBuiltinDecoderReader.cpp @@ -310,6 +310,10 @@ nsresult nsBuiltinDecoderReader::DecodeToTarget(PRInt64 aTarget) if (HasAudio()) { // Decode audio forward to the seek target. + PRInt64 targetSample = 0; + if (!UsecsToSamples(aTarget, mInfo.mAudioRate, targetSample)) { + return NS_ERROR_FAILURE; + } PRBool eof = PR_FALSE; while (HasAudio() && !eof) { while (!eof && mAudioQueue.GetSize() == 0) { @@ -322,14 +326,53 @@ nsresult nsBuiltinDecoderReader::DecodeToTarget(PRInt64 aTarget) } } } - nsAutoPtr audio(mAudioQueue.PeekFront()); - if (audio && audio->mTime + audio->mDuration <= aTarget) { - mAudioQueue.PopFront(); + const SoundData* audio = mAudioQueue.PeekFront(); + if (!audio) + break; + PRInt64 startSample = 0; + if (!UsecsToSamples(audio->mTime, mInfo.mAudioRate, startSample)) { + return NS_ERROR_FAILURE; + } + if (startSample + audio->mSamples <= targetSample) { + // Our seek target lies after the samples in this SoundData. Pop it + // off the queue, and keep decoding forwards. + delete mAudioQueue.PopFront(); audio = nsnull; - } else { - audio.forget(); + continue; + } + + // The seek target lies somewhere in this SoundData's samples, strip off + // any samples which lie before the seek target, so we'll begin playback + // exactly at the seek target. + NS_ASSERTION(targetSample >= startSample, "Target must at or be after data start."); + NS_ASSERTION(startSample + audio->mSamples > targetSample, "Data must end after target."); + + PRInt64 samplesToPrune = targetSample - startSample; + if (samplesToPrune > audio->mSamples) { + // We've messed up somehow. Don't try to trim samples, the |samples| + // variable below will overflow. + NS_WARNING("Can't prune more samples that we have!"); break; } + PRUint32 samples = audio->mSamples - static_cast(samplesToPrune); + PRUint32 channels = audio->mChannels; + nsAutoArrayPtr audioData(new SoundDataValue[samples * channels]); + memcpy(audioData.get(), + audio->mAudioData.get() + (samplesToPrune * channels), + samples * channels * sizeof(SoundDataValue)); + PRInt64 duration; + if (!SamplesToUsecs(samples, mInfo.mAudioRate, duration)) { + return NS_ERROR_FAILURE; + } + nsAutoPtr data(new SoundData(audio->mOffset, + aTarget, + duration, + samples, + audioData.forget(), + channels)); + delete mAudioQueue.PopFront(); + mAudioQueue.PushFront(data.forget()); + break; } } return NS_OK; From 25d4ea129fe1f28b2308c17d925c96bacc7d5b01 Mon Sep 17 00:00:00 2001 From: Cameron McCormack Date: Sat, 9 Jul 2011 16:49:01 +1200 Subject: [PATCH 11/22] Bug 669252 - Use the string "unknown test url" in mochitest logging lines if the current test URL is unknown. r=ted --- testing/mochitest/tests/SimpleTest/SimpleTest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/mochitest/tests/SimpleTest/SimpleTest.js b/testing/mochitest/tests/SimpleTest/SimpleTest.js index ff081b921c2..ae3154dffc5 100644 --- a/testing/mochitest/tests/SimpleTest/SimpleTest.js +++ b/testing/mochitest/tests/SimpleTest/SimpleTest.js @@ -109,7 +109,7 @@ SimpleTest.todo = function(condition, name, diag) { SimpleTest._getCurrentTestURL = function() { return parentRunner && parentRunner.currentTestURL || typeof gTestPath == "string" && gTestPath || - ""; + "unknown test url"; }; SimpleTest._logResult = function(test, passString, failString) { From c4cdffded821d7955e78a013947af2c392fc1ba5 Mon Sep 17 00:00:00 2001 From: Jan Varga Date: Sat, 9 Jul 2011 09:41:32 +0200 Subject: [PATCH 12/22] Bug 295285 - onpopupshowing does not expose accesskeys (event.shiftKey) r=enn --- layout/xul/base/public/nsXULPopupManager.h | 3 ++ layout/xul/base/src/nsXULPopupManager.cpp | 33 ++++++++++++++ toolkit/content/tests/chrome/popup_trigger.js | 44 ++++++++++++++----- toolkit/content/tests/widgets/popup_shared.js | 10 +++++ 4 files changed, 78 insertions(+), 12 deletions(-) diff --git a/layout/xul/base/public/nsXULPopupManager.h b/layout/xul/base/public/nsXULPopupManager.h index 6d7155f7bb5..5045c9db46a 100644 --- a/layout/xul/base/public/nsXULPopupManager.h +++ b/layout/xul/base/public/nsXULPopupManager.h @@ -767,6 +767,9 @@ protected: // root prescontext's root frame. nsIntPoint mCachedMousePoint; + // cached modifiers + PRInt8 mCachedModifiers; + // set to the currently active menu bar, if any nsMenuBarFrame* mActiveMenuBar; diff --git a/layout/xul/base/src/nsXULPopupManager.cpp b/layout/xul/base/src/nsXULPopupManager.cpp index 788cad55f4f..88c2278ad6e 100644 --- a/layout/xul/base/src/nsXULPopupManager.cpp +++ b/layout/xul/base/src/nsXULPopupManager.cpp @@ -73,6 +73,11 @@ #include "nsIObserverService.h" #include "mozilla/Services.h" +#define FLAG_ALT 0x01 +#define FLAG_CONTROL 0x02 +#define FLAG_SHIFT 0x04 +#define FLAG_META 0x08 + const nsNavigationDirection DirectionFromKeyCodeTable[2][6] = { { eNavigationDirection_Last, // NS_VK_END @@ -140,6 +145,7 @@ NS_IMPL_ISUPPORTS4(nsXULPopupManager, nsXULPopupManager::nsXULPopupManager() : mRangeOffset(0), mCachedMousePoint(0, 0), + mCachedModifiers(0), mActiveMenuBar(nsnull), mPopups(nsnull), mNoHidePanels(nsnull), @@ -462,6 +468,8 @@ nsXULPopupManager::InitTriggerEvent(nsIDOMEvent* aEvent, nsIContent* aPopup, } } + mCachedModifiers = 0; + nsCOMPtr uiEvent = do_QueryInterface(aEvent); if (uiEvent) { uiEvent->GetRangeParent(getter_AddRefs(mRangeParent)); @@ -475,6 +483,22 @@ nsXULPopupManager::InitTriggerEvent(nsIDOMEvent* aEvent, nsIContent* aPopup, nsEvent* event; event = privateEvent->GetInternalNSEvent(); if (event) { + if (event->eventStructType == NS_MOUSE_EVENT || + event->eventStructType == NS_KEY_EVENT) { + nsInputEvent* inputEvent = static_cast(event); + if (inputEvent->isAlt) { + mCachedModifiers |= FLAG_ALT; + } + if (inputEvent->isControl) { + mCachedModifiers |= FLAG_CONTROL; + } + if (inputEvent->isShift) { + mCachedModifiers |= FLAG_SHIFT; + } + if (inputEvent->isMeta) { + mCachedModifiers |= FLAG_META; + } + } nsIDocument* doc = aPopup->GetCurrentDoc(); if (doc) { nsIPresShell* presShell = doc->GetShell(); @@ -1187,10 +1211,19 @@ nsXULPopupManager::FirePopupShowingEvent(nsIContent* aPopup, } event.refPoint = mCachedMousePoint; + + event.isAlt = !!(mCachedModifiers & FLAG_ALT); + event.isControl = !!(mCachedModifiers & FLAG_CONTROL); + event.isShift = !!(mCachedModifiers & FLAG_SHIFT); + event.isMeta = !!(mCachedModifiers & FLAG_META); + nsEventDispatcher::Dispatch(popup, presContext, &event, nsnull, &status); + mCachedMousePoint = nsIntPoint(0, 0); mOpeningPopup = nsnull; + mCachedModifiers = 0; + // if a panel, blur whatever has focus so that the panel can take the focus. // This is done after the popupshowing event in case that event is cancelled. // Using noautofocus="true" will disable this behaviour, which is needed for diff --git a/toolkit/content/tests/chrome/popup_trigger.js b/toolkit/content/tests/chrome/popup_trigger.js index 97b37b8b911..3c0e4af6783 100644 --- a/toolkit/content/tests/chrome/popup_trigger.js +++ b/toolkit/content/tests/chrome/popup_trigger.js @@ -3,6 +3,22 @@ var gTrigger = null; var gIsMenu = false; var gScreenX = -1, gScreenY = -1; var gCachedEvent = null; +var gCachedEvent2 = null; + +function cacheEvent(modifiers) +{ + var cachedEvent = null; + + var mouseFn = function(event) { + cachedEvent = event; + } + + window.addEventListener("mousedown", mouseFn, false); + synthesizeMouse(document.documentElement, 0, 0, modifiers); + window.removeEventListener("mousedown", mouseFn, false); + + return cachedEvent; +} function runTests() { @@ -15,17 +31,13 @@ function runTests() gIsMenu = gTrigger.boxObject instanceof Components.interfaces.nsIMenuBoxObject; - var mouseFn = function(event) { - gScreenX = event.screenX; - gScreenY = event.screenY; - // cache the event so that we can use it in calls to openPopup - gCachedEvent = event; - } + // a hacky way to get the screen position of the document. Cache the event + // so that we can use it in calls to openPopup. + gCachedEvent = cacheEvent({ shiftKey: true }); + gScreenX = gCachedEvent.screenX; + gScreenY = gCachedEvent.screenY; + gCachedEvent2 = cacheEvent({ altKey: true, ctrlKey: true, shiftKey: true, metaKey: true }); - // a hacky way to get the screen position of the document - window.addEventListener("mousedown", mouseFn, false); - synthesizeMouse(document.documentElement, 0, 0, { }); - window.removeEventListener("mousedown", mouseFn, false); startPopupTests(popupTests); } @@ -254,7 +266,7 @@ var popupTests = [ // can be used to override the popup's position. This test also passes an // event to openPopup to check the trigger node. testname: "open popup anchored with override", - events: [ "popupshowing thepopup", "popupshown thepopup" ], + events: [ "popupshowing thepopup 0010", "popupshown thepopup" ], test: function(testname, step) { // attribute overrides the position passed in gMenuPopup.setAttribute("position", "end_after"); @@ -403,7 +415,7 @@ var popupTests = [ }, { testname: "open context popup at screen", - events: [ "popupshowing thepopup", "popupshown thepopup" ], + events: [ "popupshowing thepopup 0010", "popupshown thepopup" ], test: function(testname, step) { gExpectedTriggerNode = gCachedEvent.target; gMenuPopup.openPopupAtScreen(gScreenX + 8, gScreenY + 16, true, gCachedEvent); @@ -558,6 +570,14 @@ var popupTests = [ checkActive(gMenuPopup, "", testname); } }, +{ + testname: "open context popup at screen with all modifiers set", + events: [ "popupshowing thepopup 1111", "popupshown thepopup" ], + autohide: "thepopup", + test: function(testname, step) { + gMenuPopup.openPopupAtScreen(gScreenX + 8, gScreenY + 16, true, gCachedEvent2); + } +}, { testname: "open popup with open property", events: [ "popupshowing thepopup", "popupshown thepopup" ], diff --git a/toolkit/content/tests/widgets/popup_shared.js b/toolkit/content/tests/widgets/popup_shared.js index d5394d72bfe..5f4d0de56e3 100644 --- a/toolkit/content/tests/widgets/popup_shared.js +++ b/toolkit/content/tests/widgets/popup_shared.js @@ -133,6 +133,16 @@ function eventOccurred(event) matches = eventitem[0] == event.type && eventitem[1] == event.target.id; } + var modifiersMask = eventitem[2]; + if (modifiersMask) { + var m = ""; + m += event.altKey ? '1' : '0'; + m += event.ctrlKey ? '1' : '0'; + m += event.shiftKey ? '1' : '0'; + m += event.metaKey ? '1' : '0'; + is(m, modifiersMask, test.testname + " modifiers mask matches"); + } + var expectedState; switch (event.type) { case "popupshowing": expectedState = "showing"; break; From 560d392fe9ad1fa40045e7049e9e71878b88b804 Mon Sep 17 00:00:00 2001 From: ffxbld Date: Sat, 9 Jul 2011 03:15:37 -0700 Subject: [PATCH 13/22] Automated blocklist update from host moz2-linux-slave08 --- browser/app/blocklist.xml | 390 +++++++++++++++++++------------------- 1 file changed, 199 insertions(+), 191 deletions(-) diff --git a/browser/app/blocklist.xml b/browser/app/blocklist.xml index a54d4af8027..5af334dd031 100644 --- a/browser/app/blocklist.xml +++ b/browser/app/blocklist.xml @@ -1,193 +1,201 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WINNT 6.1 - 0x10de - - 0x0a6c - - DIRECT2D - BLOCKED_DRIVER_VERSION - 8.17.12.5896 - LESS_THAN_OR_EQUAL - - - WINNT 6.1 - 0x10de - - 0x0a6c - - DIRECT3D_9_LAYERS - BLOCKED_DRIVER_VERSION - 8.17.12.5896 - LESS_THAN_OR_EQUAL - - - WINNT 5.1 - 0x10de - DIRECT3D_9_LAYERS - BLOCKED_DRIVER_VERSION - 7.0.0.0 - GREATER_THAN_OR_EQUAL - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WINNT 6.1 + 0x10de + + 0x0a6c + + DIRECT2D + BLOCKED_DRIVER_VERSION + 8.17.12.5896 + LESS_THAN_OR_EQUAL + + + WINNT 6.1 + 0x10de + + 0x0a6c + + DIRECT3D_9_LAYERS + BLOCKED_DRIVER_VERSION + 8.17.12.5896 + LESS_THAN_OR_EQUAL + + + WINNT 5.1 + 0x10de + DIRECT3D_9_LAYERS + BLOCKED_DRIVER_VERSION + 7.0.0.0 + GREATER_THAN_OR_EQUAL + + + + + \ No newline at end of file From f3e9a9d82ea1c7d88e469cca5d3e6c8415d726fc Mon Sep 17 00:00:00 2001 From: Joel Maher Date: Sat, 9 Jul 2011 08:35:38 -0400 Subject: [PATCH 14/22] Bug 666636 - enable specialpowers for all mochitest types. r=ted, a=test-only --- testing/mochitest/redirect.js | 11 +------- testing/mochitest/runtests.py | 7 +---- .../specialpowers/content/specialpowers.js | 13 ++++++---- .../mochitest/tests/SimpleTest/TestRunner.js | 26 ++++--------------- 4 files changed, 15 insertions(+), 42 deletions(-) diff --git a/testing/mochitest/redirect.js b/testing/mochitest/redirect.js index b7a082ebcf0..f1ee3cd19f1 100644 --- a/testing/mochitest/redirect.js +++ b/testing/mochitest/redirect.js @@ -40,15 +40,6 @@ function redirect(aURL) { - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - const Cc = Components.classes; - const Ci = Components.interfaces; - - // Can't just set window.location because of security restrictions - // that don't care about our UniversalXPConnectness - var webNav = window.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIWebNavigation); - webNav.loadURI(aURL + location.search, + SpecialPowers.loadURI(window, aURL + location.search, null, null, null, null); } diff --git a/testing/mochitest/runtests.py b/testing/mochitest/runtests.py index 54592873442..c5ac057fddf 100644 --- a/testing/mochitest/runtests.py +++ b/testing/mochitest/runtests.py @@ -500,12 +500,7 @@ class Mochitest(object): manifest = self.addChromeToProfile(options) self.copyExtraFilesToProfile(options) - # We only need special powers in non-chrome harnesses - if (not options.browserChrome and - not options.chrome and - not options.a11y): - self.installSpecialPowersExtension(options) - + self.installSpecialPowersExtension(options) self.installExtensionsToProfile(options) return manifest diff --git a/testing/mochitest/specialpowers/content/specialpowers.js b/testing/mochitest/specialpowers/content/specialpowers.js index 8473628977f..5baaa0806f6 100644 --- a/testing/mochitest/specialpowers/content/specialpowers.js +++ b/testing/mochitest/specialpowers/content/specialpowers.js @@ -208,6 +208,12 @@ SpecialPowers.prototype = { .createInstance(Ci.nsIXMLHttpRequest); }, + loadURI: function(window, uri, referrer, charset, x, y) { + var webNav = window.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation); + webNav.loadURI(uri, referrer, charset, x, y); + }, + gc: function() { this.DOMWindowUtils.garbageCollect(); }, @@ -342,12 +348,9 @@ SpecialPowersManager.prototype = { handleEvent: function handleEvent(aEvent) { var window = aEvent.target.defaultView; - // Need to make sure we are called on what we care about - - // content windows. DOMWindowCreated is called on *all* HTMLDocuments, - // some of which belong to chrome windows or other special content. - // + // only add SpecialPowers to data pages, not about:* var uri = window.document.documentURIObject; - if (uri.scheme === "chrome" || uri.spec.split(":")[0] == "about") { + if (uri.spec.split(":")[0] == "about") { return; } diff --git a/testing/mochitest/tests/SimpleTest/TestRunner.js b/testing/mochitest/tests/SimpleTest/TestRunner.js index c1f16e8cbdd..c15d0f88f24 100644 --- a/testing/mochitest/tests/SimpleTest/TestRunner.js +++ b/testing/mochitest/tests/SimpleTest/TestRunner.js @@ -42,13 +42,7 @@ TestRunner._urls = []; TestRunner.timeout = 5 * 60 * 1000; // 5 minutes. TestRunner.maxTimeouts = 4; // halt testing after too many timeouts -// running in e10s build and need to use IPC? -if (typeof SpecialPowers != 'undefined') { - TestRunner.ipcMode = SpecialPowers.hasContentProcesses(); -} else { - TestRunner.ipcMode = false; -} - +TestRunner.ipcMode = SpecialPowers.hasContentProcesses(); TestRunner._expectingProcessCrash = false; /** @@ -170,9 +164,7 @@ TestRunner._makeIframe = function (url, retry) { TestRunner.runTests = function (/*url...*/) { TestRunner.log("SimpleTest START"); - if (typeof SpecialPowers != "undefined") { - SpecialPowers.registerProcessCrashObservers(); - } + SpecialPowers.registerProcessCrashObservers(); TestRunner._urls = flattenArguments(arguments); $('testframe').src=""; @@ -233,10 +225,6 @@ TestRunner.runNextTest = function() { }; TestRunner.expectChildProcessCrash = function() { - if (typeof SpecialPowers == "undefined") { - throw "TestRunner.expectChildProcessCrash must only be called from plain mochitests."; - } - TestRunner._expectingProcessCrash = true; }; @@ -278,14 +266,10 @@ TestRunner.testFinished = function(tests) { TestRunner.runNextTest(); } - if (typeof SpecialPowers != 'undefined') { - SpecialPowers.executeAfterFlushingMessageQueue(function() { - cleanUpCrashDumpFiles(); - runNextTest(); - }); - } else { + SpecialPowers.executeAfterFlushingMessageQueue(function() { + cleanUpCrashDumpFiles(); runNextTest(); - } + }); }; /** From 32bd115ae0183f542d5cea3f4eec5d6a8fe7fbec Mon Sep 17 00:00:00 2001 From: Joel Maher Date: Sat, 9 Jul 2011 08:35:40 -0400 Subject: [PATCH 15/22] Bug 668431 - move test_bug361111.xul to mochitest-chrome. r=Jesse, a=test-only --- js/src/xpconnect/tests/mochitest/Makefile.in | 9 ++++++++- js/src/xpconnect/tests/mochitest/test_bug361111.xul | 6 +++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/js/src/xpconnect/tests/mochitest/Makefile.in b/js/src/xpconnect/tests/mochitest/Makefile.in index 3002f519895..1b2ba65f312 100644 --- a/js/src/xpconnect/tests/mochitest/Makefile.in +++ b/js/src/xpconnect/tests/mochitest/Makefile.in @@ -54,7 +54,6 @@ _TEST_FILES = bug500931_helper.html \ file_evalInSandbox.html \ file_wrappers-2.html \ test_bug92773.html \ - test_bug361111.xul \ test_bug384632.html \ test_bug390488.html \ test_bug393269.html \ @@ -95,6 +94,10 @@ _TEST_FILES = bug500931_helper.html \ file_bug658560.html \ $(NULL) +_CHROME_FILES = \ + test_bug361111.xul \ + $(NULL) + ifneq ($(OS_TARGET),Android) ifndef MOZ_PLATFORM_MAEMO _TEST_FILES += test_bug657267.html \ @@ -107,3 +110,7 @@ endif libs:: $(_TEST_FILES) $(INSTALL) $^ $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir) + +libs:: $(_CHROME_FILES) + $(INSTALL) $^ $(DEPTH)/_tests/testing/mochitest/chrome/$(relativesrcdir) + diff --git a/js/src/xpconnect/tests/mochitest/test_bug361111.xul b/js/src/xpconnect/tests/mochitest/test_bug361111.xul index f1097328fd7..95635f4dee7 100644 --- a/js/src/xpconnect/tests/mochitest/test_bug361111.xul +++ b/js/src/xpconnect/tests/mochitest/test_bug361111.xul @@ -1,13 +1,13 @@ - + -