Merge latest from central.
authorBen Hearsum <bhearsum@mozilla.com>
Thu, 11 May 2017 16:32:41 -0400
changeset 592731 550a1a0bb25b95ca5588a3444e8d4eadeff299e7
parent 592730 8e1212023563eceed18304e1a43d1672b038837e (current diff)
parent 576334 3b96f277325747fe668ca8cd896d2f581238e4ee (diff)
child 592732 49238a87a5f4dd37a0fa2e2c97e2cf8b0acb0f18
push id63502
push userCallek@gmail.com
push dateMon, 12 Jun 2017 19:30:26 +0000
milestone55.0a1
Merge latest from central.
.cron.yml
browser/app/profile/firefox.js
browser/base/content/abouthome/mozilla.png
browser/base/content/abouthome/mozilla@2x.png
browser/base/content/gcli_sec_bad.svg
browser/base/content/gcli_sec_good.svg
browser/base/content/gcli_sec_moderate.svg
browser/base/content/newtab/newTab.inadjacent.json
browser/base/content/test/newtab/browser_newtab_bug1145428.js
browser/base/content/test/newtab/browser_newtab_bug1178586.js
browser/base/content/test/newtab/browser_newtab_bug1194895.js
browser/base/content/test/newtab/browser_newtab_enhanced.js
browser/base/content/test/newtab/browser_newtab_reportLinkAction.js
browser/base/content/test/newtab/browser_newtab_sponsored_icon_click.js
browser/components/downloads/test/browser/browser_downloads_panel_footer.js
browser/components/downloads/test/unit/.eslintrc.js
browser/components/downloads/test/unit/head.js
browser/components/downloads/test/unit/test_DownloadsCommon.js
browser/components/downloads/test/unit/xpcshell.ini
browser/config/tooltool-manifests/macosx64/cross-releng.manifest
browser/confvars.sh
browser/themes/linux/Privacy-16.png
browser/themes/linux/click-to-play-warning-stripes.png
browser/themes/osx/Privacy-16.png
browser/themes/osx/click-to-play-warning-stripes.png
browser/themes/shared/content-contextmenu.svg
browser/themes/shared/privatebrowsing/check.svg
browser/themes/windows/Privacy-16.png
browser/themes/windows/click-to-play-warning-stripes.png
build/docs/androideclipse.rst
devtools/client/netmonitor/src/netmonitor-controller.js
devtools/client/netmonitor/src/utils/client.js
devtools/client/netmonitor/test/browser_net_page-nav.js
devtools/client/netmonitor/test/browser_net_simple-init.js
devtools/server/content-globals.js
devtools/shared/tests/mochitest/test_css-logic.html
devtools/shared/tests/mochitest/test_devtools_extensions.html
dom/base/ScriptSettings.cpp
dom/base/ScriptSettings.h
dom/base/nsIScriptElement.h
dom/base/nsIScriptLoaderObserver.idl
dom/base/nsScriptElement.cpp
dom/base/nsScriptElement.h
dom/base/nsScriptLoader.cpp
dom/base/nsScriptLoader.h
dom/base/test/test_selection_with_anon_trees.html
dom/html/nsIPhonetic.idl
dom/interfaces/base/nsIDOMLocation.idl
dom/media/gtest/TestMP4Reader.cpp
dom/media/gtest/mediasource_test.mp4
dom/media/test/crashtests/1228484.html
editor/nsIEditorIMESupport.idl
gfx/angle/src/libANGLE/moz.build
gfx/skia/gyp_mozbuild
gfx/skia/skia/include/animator/SkAnimator.h
gfx/skia/skia/include/animator/SkAnimatorView.h
gfx/skia/skia/include/codec/SkEncodedFormat.h
gfx/skia/skia/include/core/SkBitmapDevice.h
gfx/skia/skia/include/core/SkBlitRow.h
gfx/skia/skia/include/core/SkChunkAlloc.h
gfx/skia/skia/include/core/SkClipStack.h
gfx/skia/skia/include/core/SkDevice.h
gfx/skia/skia/include/core/SkDraw.h
gfx/skia/skia/include/core/SkError.h
gfx/skia/skia/include/core/SkOSFile.h
gfx/skia/skia/include/core/SkTRegistry.h
gfx/skia/skia/include/core/SkXfermode.h
gfx/skia/skia/include/effects/SkArithmeticMode.h
gfx/skia/skia/include/effects/SkColorCubeFilter.h
gfx/skia/skia/include/effects/SkEmbossMaskFilter.h
gfx/skia/skia/include/effects/SkGaussianEdgeShader.h
gfx/skia/skia/include/gpu/GrClip.h
gfx/skia/skia/include/gpu/GrDrawContext.h
gfx/skia/skia/include/gpu/GrInvariantOutput.h
gfx/skia/skia/include/gpu/GrPaint.h
gfx/skia/skia/include/gpu/GrTextureAccess.h
gfx/skia/skia/include/gpu/GrTextureProvider.h
gfx/skia/skia/include/gpu/GrXferProcessor.h
gfx/skia/skia/include/gpu/SkGr.h
gfx/skia/skia/include/gpu/effects/GrCoverageSetOpXP.h
gfx/skia/skia/include/gpu/effects/GrCustomXfermode.h
gfx/skia/skia/include/gpu/effects/GrPorterDuffXferProcessor.h
gfx/skia/skia/include/images/SkForceLinking.h
gfx/skia/skia/include/images/SkMovie.h
gfx/skia/skia/include/ports/SkFontMgr_custom.h
gfx/skia/skia/include/private/SkTDict.h
gfx/skia/skia/include/utils/SkBoundaryPatch.h
gfx/skia/skia/include/utils/SkLayer.h
gfx/skia/skia/include/utils/SkMeshUtils.h
gfx/skia/skia/include/utils/SkNoSaveLayerCanvas.h
gfx/skia/skia/include/utils/SkPictureUtils.h
gfx/skia/skia/include/views/SkOSWindow_SDL.h
gfx/skia/skia/include/xml/SkDOM.h
gfx/skia/skia/include/xml/SkXMLParser.h
gfx/skia/skia/include/xml/SkXMLWriter.h
gfx/skia/skia/src/animator/SkAnimate.h
gfx/skia/skia/src/animator/SkAnimate3DSchema.xsd
gfx/skia/skia/src/animator/SkAnimate3DSchema.xsx
gfx/skia/skia/src/animator/SkAnimateActive.cpp
gfx/skia/skia/src/animator/SkAnimateActive.h
gfx/skia/skia/src/animator/SkAnimateBase.cpp
gfx/skia/skia/src/animator/SkAnimateBase.h
gfx/skia/skia/src/animator/SkAnimateField.cpp
gfx/skia/skia/src/animator/SkAnimateMaker.cpp
gfx/skia/skia/src/animator/SkAnimateMaker.h
gfx/skia/skia/src/animator/SkAnimateProperties.h
gfx/skia/skia/src/animator/SkAnimateSchema.xsd
gfx/skia/skia/src/animator/SkAnimateSchema.xsx
gfx/skia/skia/src/animator/SkAnimateSet.cpp
gfx/skia/skia/src/animator/SkAnimateSet.h
gfx/skia/skia/src/animator/SkAnimator.cpp
gfx/skia/skia/src/animator/SkAnimatorScript.cpp
gfx/skia/skia/src/animator/SkAnimatorScript.h
gfx/skia/skia/src/animator/SkAnimatorScript2.cpp
gfx/skia/skia/src/animator/SkAnimatorScript2.h
gfx/skia/skia/src/animator/SkBoundable.cpp
gfx/skia/skia/src/animator/SkBoundable.h
gfx/skia/skia/src/animator/SkBuildCondensedInfo.cpp
gfx/skia/skia/src/animator/SkCondensedDebug.inc
gfx/skia/skia/src/animator/SkCondensedRelease.inc
gfx/skia/skia/src/animator/SkDisplayAdd.cpp
gfx/skia/skia/src/animator/SkDisplayAdd.h
gfx/skia/skia/src/animator/SkDisplayApply.cpp
gfx/skia/skia/src/animator/SkDisplayApply.h
gfx/skia/skia/src/animator/SkDisplayBounds.cpp
gfx/skia/skia/src/animator/SkDisplayBounds.h
gfx/skia/skia/src/animator/SkDisplayEvent.cpp
gfx/skia/skia/src/animator/SkDisplayEvent.h
gfx/skia/skia/src/animator/SkDisplayEvents.cpp
gfx/skia/skia/src/animator/SkDisplayEvents.h
gfx/skia/skia/src/animator/SkDisplayInclude.cpp
gfx/skia/skia/src/animator/SkDisplayInclude.h
gfx/skia/skia/src/animator/SkDisplayInput.cpp
gfx/skia/skia/src/animator/SkDisplayInput.h
gfx/skia/skia/src/animator/SkDisplayList.cpp
gfx/skia/skia/src/animator/SkDisplayList.h
gfx/skia/skia/src/animator/SkDisplayMath.cpp
gfx/skia/skia/src/animator/SkDisplayMath.h
gfx/skia/skia/src/animator/SkDisplayMovie.cpp
gfx/skia/skia/src/animator/SkDisplayMovie.h
gfx/skia/skia/src/animator/SkDisplayNumber.cpp
gfx/skia/skia/src/animator/SkDisplayNumber.h
gfx/skia/skia/src/animator/SkDisplayPost.cpp
gfx/skia/skia/src/animator/SkDisplayPost.h
gfx/skia/skia/src/animator/SkDisplayRandom.cpp
gfx/skia/skia/src/animator/SkDisplayRandom.h
gfx/skia/skia/src/animator/SkDisplayScreenplay.cpp
gfx/skia/skia/src/animator/SkDisplayScreenplay.h
gfx/skia/skia/src/animator/SkDisplayType.cpp
gfx/skia/skia/src/animator/SkDisplayType.h
gfx/skia/skia/src/animator/SkDisplayTypes.cpp
gfx/skia/skia/src/animator/SkDisplayTypes.h
gfx/skia/skia/src/animator/SkDisplayXMLParser.cpp
gfx/skia/skia/src/animator/SkDisplayXMLParser.h
gfx/skia/skia/src/animator/SkDisplayable.cpp
gfx/skia/skia/src/animator/SkDisplayable.h
gfx/skia/skia/src/animator/SkDraw3D.cpp
gfx/skia/skia/src/animator/SkDraw3D.h
gfx/skia/skia/src/animator/SkDrawBitmap.cpp
gfx/skia/skia/src/animator/SkDrawBitmap.h
gfx/skia/skia/src/animator/SkDrawBlur.cpp
gfx/skia/skia/src/animator/SkDrawBlur.h
gfx/skia/skia/src/animator/SkDrawClip.cpp
gfx/skia/skia/src/animator/SkDrawClip.h
gfx/skia/skia/src/animator/SkDrawColor.cpp
gfx/skia/skia/src/animator/SkDrawColor.h
gfx/skia/skia/src/animator/SkDrawDash.cpp
gfx/skia/skia/src/animator/SkDrawDash.h
gfx/skia/skia/src/animator/SkDrawDiscrete.cpp
gfx/skia/skia/src/animator/SkDrawDiscrete.h
gfx/skia/skia/src/animator/SkDrawEmboss.cpp
gfx/skia/skia/src/animator/SkDrawEmboss.h
gfx/skia/skia/src/animator/SkDrawExtraPathEffect.cpp
gfx/skia/skia/src/animator/SkDrawExtraPathEffect.h
gfx/skia/skia/src/animator/SkDrawFull.cpp
gfx/skia/skia/src/animator/SkDrawFull.h
gfx/skia/skia/src/animator/SkDrawGradient.cpp
gfx/skia/skia/src/animator/SkDrawGradient.h
gfx/skia/skia/src/animator/SkDrawGroup.cpp
gfx/skia/skia/src/animator/SkDrawGroup.h
gfx/skia/skia/src/animator/SkDrawLine.cpp
gfx/skia/skia/src/animator/SkDrawLine.h
gfx/skia/skia/src/animator/SkDrawMatrix.cpp
gfx/skia/skia/src/animator/SkDrawMatrix.h
gfx/skia/skia/src/animator/SkDrawOval.cpp
gfx/skia/skia/src/animator/SkDrawOval.h
gfx/skia/skia/src/animator/SkDrawPaint.cpp
gfx/skia/skia/src/animator/SkDrawPaint.h
gfx/skia/skia/src/animator/SkDrawPath.cpp
gfx/skia/skia/src/animator/SkDrawPath.h
gfx/skia/skia/src/animator/SkDrawPoint.cpp
gfx/skia/skia/src/animator/SkDrawPoint.h
gfx/skia/skia/src/animator/SkDrawRectangle.cpp
gfx/skia/skia/src/animator/SkDrawRectangle.h
gfx/skia/skia/src/animator/SkDrawSaveLayer.cpp
gfx/skia/skia/src/animator/SkDrawSaveLayer.h
gfx/skia/skia/src/animator/SkDrawShader.cpp
gfx/skia/skia/src/animator/SkDrawShader.h
gfx/skia/skia/src/animator/SkDrawText.cpp
gfx/skia/skia/src/animator/SkDrawText.h
gfx/skia/skia/src/animator/SkDrawTextBox.cpp
gfx/skia/skia/src/animator/SkDrawTextBox.h
gfx/skia/skia/src/animator/SkDrawTo.cpp
gfx/skia/skia/src/animator/SkDrawTo.h
gfx/skia/skia/src/animator/SkDump.cpp
gfx/skia/skia/src/animator/SkDump.h
gfx/skia/skia/src/animator/SkExtraPathEffects.xsd
gfx/skia/skia/src/animator/SkExtras.h
gfx/skia/skia/src/animator/SkGetCondensedInfo.cpp
gfx/skia/skia/src/animator/SkHitClear.cpp
gfx/skia/skia/src/animator/SkHitClear.h
gfx/skia/skia/src/animator/SkHitTest.cpp
gfx/skia/skia/src/animator/SkHitTest.h
gfx/skia/skia/src/animator/SkIntArray.h
gfx/skia/skia/src/animator/SkMatrixParts.cpp
gfx/skia/skia/src/animator/SkMatrixParts.h
gfx/skia/skia/src/animator/SkMemberInfo.cpp
gfx/skia/skia/src/animator/SkMemberInfo.h
gfx/skia/skia/src/animator/SkOpArray.cpp
gfx/skia/skia/src/animator/SkOpArray.h
gfx/skia/skia/src/animator/SkOperand.h
gfx/skia/skia/src/animator/SkOperand2.h
gfx/skia/skia/src/animator/SkOperandInterpolator.h
gfx/skia/skia/src/animator/SkOperandIterpolator.cpp
gfx/skia/skia/src/animator/SkPaintPart.cpp
gfx/skia/skia/src/animator/SkPaintPart.h
gfx/skia/skia/src/animator/SkParseSVGPath.cpp
gfx/skia/skia/src/animator/SkPathParts.cpp
gfx/skia/skia/src/animator/SkPathParts.h
gfx/skia/skia/src/animator/SkPostParts.cpp
gfx/skia/skia/src/animator/SkPostParts.h
gfx/skia/skia/src/animator/SkScript.cpp
gfx/skia/skia/src/animator/SkScript.h
gfx/skia/skia/src/animator/SkScript2.h
gfx/skia/skia/src/animator/SkScriptCallBack.h
gfx/skia/skia/src/animator/SkScriptDecompile.cpp
gfx/skia/skia/src/animator/SkScriptRuntime.cpp
gfx/skia/skia/src/animator/SkScriptRuntime.h
gfx/skia/skia/src/animator/SkScriptTokenizer.cpp
gfx/skia/skia/src/animator/SkSnapshot.cpp
gfx/skia/skia/src/animator/SkSnapshot.h
gfx/skia/skia/src/animator/SkTDArray_Experimental.h
gfx/skia/skia/src/animator/SkTDStack.h
gfx/skia/skia/src/animator/SkTextOnPath.cpp
gfx/skia/skia/src/animator/SkTextOnPath.h
gfx/skia/skia/src/animator/SkTextToPath.cpp
gfx/skia/skia/src/animator/SkTextToPath.h
gfx/skia/skia/src/animator/SkTypedArray.cpp
gfx/skia/skia/src/animator/SkTypedArray.h
gfx/skia/skia/src/animator/SkXMLAnimatorWriter.cpp
gfx/skia/skia/src/animator/SkXMLAnimatorWriter.h
gfx/skia/skia/src/animator/thingstodo.txt
gfx/skia/skia/src/core/SkChunkAlloc.cpp
gfx/skia/skia/src/core/SkConfig8888.cpp
gfx/skia/skia/src/core/SkConfig8888.h
gfx/skia/skia/src/core/SkDistanceFieldGen.cpp
gfx/skia/skia/src/core/SkError.cpp
gfx/skia/skia/src/core/SkErrorInternals.h
gfx/skia/skia/src/core/SkImageGeneratorPriv.h
gfx/skia/skia/src/core/SkMessageBus.h
gfx/skia/skia/src/core/SkSmallAllocator.h
gfx/skia/skia/src/core/SkTLS.cpp
gfx/skia/skia/src/effects/SkArithmeticMode_gpu.cpp
gfx/skia/skia/src/effects/SkArithmeticMode_gpu.h
gfx/skia/skia/src/effects/SkBlurDrawLooper.cpp
gfx/skia/skia/src/effects/SkColorCubeFilter.cpp
gfx/skia/skia/src/effects/SkMergeImageFilter.cpp
gfx/skia/skia/src/gpu/GrBatchAtlas.cpp
gfx/skia/skia/src/gpu/GrBatchAtlas.h
gfx/skia/skia/src/gpu/GrBatchFlushState.cpp
gfx/skia/skia/src/gpu/GrBatchFlushState.h
gfx/skia/skia/src/gpu/GrBatchTest.cpp
gfx/skia/skia/src/gpu/GrDrawContext.cpp
gfx/skia/skia/src/gpu/GrDrawContextPriv.h
gfx/skia/skia/src/gpu/GrDrawTarget.cpp
gfx/skia/skia/src/gpu/GrDrawTarget.h
gfx/skia/skia/src/gpu/GrImageIDTextureAdjuster.cpp
gfx/skia/skia/src/gpu/GrImageIDTextureAdjuster.h
gfx/skia/skia/src/gpu/GrInvariantOutput.cpp
gfx/skia/skia/src/gpu/GrOvalRenderer.cpp
gfx/skia/skia/src/gpu/GrOvalRenderer.h
gfx/skia/skia/src/gpu/GrPathRenderingDrawContext.cpp
gfx/skia/skia/src/gpu/GrPathRenderingDrawContext.h
gfx/skia/skia/src/gpu/GrPipelineBuilder.cpp
gfx/skia/skia/src/gpu/GrProcOptInfo.cpp
gfx/skia/skia/src/gpu/GrProcOptInfo.h
gfx/skia/skia/src/gpu/GrProgramElement.cpp
gfx/skia/skia/src/gpu/GrSwizzle.h
gfx/skia/skia/src/gpu/GrTextureAccess.cpp
gfx/skia/skia/src/gpu/GrTextureParamsAdjuster.cpp
gfx/skia/skia/src/gpu/GrTextureParamsAdjuster.h
gfx/skia/skia/src/gpu/GrTextureProvider.cpp
gfx/skia/skia/src/gpu/SkGrPriv.h
gfx/skia/skia/src/gpu/batches/GrAAConvexPathRenderer.cpp
gfx/skia/skia/src/gpu/batches/GrAAConvexPathRenderer.h
gfx/skia/skia/src/gpu/batches/GrAAConvexTessellator.cpp
gfx/skia/skia/src/gpu/batches/GrAAConvexTessellator.h
gfx/skia/skia/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
gfx/skia/skia/src/gpu/batches/GrAADistanceFieldPathRenderer.h
gfx/skia/skia/src/gpu/batches/GrAAFillRectBatch.cpp
gfx/skia/skia/src/gpu/batches/GrAAFillRectBatch.h
gfx/skia/skia/src/gpu/batches/GrAAHairLinePathRenderer.cpp
gfx/skia/skia/src/gpu/batches/GrAAHairLinePathRenderer.h
gfx/skia/skia/src/gpu/batches/GrAALinearizingConvexPathRenderer.cpp
gfx/skia/skia/src/gpu/batches/GrAALinearizingConvexPathRenderer.h
gfx/skia/skia/src/gpu/batches/GrAAStrokeRectBatch.cpp
gfx/skia/skia/src/gpu/batches/GrAAStrokeRectBatch.h
gfx/skia/skia/src/gpu/batches/GrAtlasTextBatch.cpp
gfx/skia/skia/src/gpu/batches/GrAtlasTextBatch.h
gfx/skia/skia/src/gpu/batches/GrBatch.cpp
gfx/skia/skia/src/gpu/batches/GrBatch.h
gfx/skia/skia/src/gpu/batches/GrClearBatch.h
gfx/skia/skia/src/gpu/batches/GrCopySurfaceBatch.cpp
gfx/skia/skia/src/gpu/batches/GrCopySurfaceBatch.h
gfx/skia/skia/src/gpu/batches/GrDashLinePathRenderer.cpp
gfx/skia/skia/src/gpu/batches/GrDashLinePathRenderer.h
gfx/skia/skia/src/gpu/batches/GrDefaultPathRenderer.cpp
gfx/skia/skia/src/gpu/batches/GrDefaultPathRenderer.h
gfx/skia/skia/src/gpu/batches/GrDiscardBatch.h
gfx/skia/skia/src/gpu/batches/GrDrawAtlasBatch.cpp
gfx/skia/skia/src/gpu/batches/GrDrawAtlasBatch.h
gfx/skia/skia/src/gpu/batches/GrDrawBatch.cpp
gfx/skia/skia/src/gpu/batches/GrDrawBatch.h
gfx/skia/skia/src/gpu/batches/GrDrawPathBatch.cpp
gfx/skia/skia/src/gpu/batches/GrDrawPathBatch.h
gfx/skia/skia/src/gpu/batches/GrDrawVerticesBatch.cpp
gfx/skia/skia/src/gpu/batches/GrDrawVerticesBatch.h
gfx/skia/skia/src/gpu/batches/GrNinePatch.cpp
gfx/skia/skia/src/gpu/batches/GrNinePatch.h
gfx/skia/skia/src/gpu/batches/GrNonAAFillRectBatch.cpp
gfx/skia/skia/src/gpu/batches/GrNonAAFillRectBatch.h
gfx/skia/skia/src/gpu/batches/GrNonAAStrokeRectBatch.cpp
gfx/skia/skia/src/gpu/batches/GrNonAAStrokeRectBatch.h
gfx/skia/skia/src/gpu/batches/GrPLSPathRenderer.cpp
gfx/skia/skia/src/gpu/batches/GrPathStencilSettings.h
gfx/skia/skia/src/gpu/batches/GrRectBatchFactory.cpp
gfx/skia/skia/src/gpu/batches/GrRectBatchFactory.h
gfx/skia/skia/src/gpu/batches/GrStencilAndCoverPathRenderer.cpp
gfx/skia/skia/src/gpu/batches/GrStencilAndCoverPathRenderer.h
gfx/skia/skia/src/gpu/batches/GrStencilPathBatch.h
gfx/skia/skia/src/gpu/batches/GrTessellatingPathRenderer.cpp
gfx/skia/skia/src/gpu/batches/GrTessellatingPathRenderer.h
gfx/skia/skia/src/gpu/batches/GrTestBatch.h
gfx/skia/skia/src/gpu/batches/GrVertexBatch.cpp
gfx/skia/skia/src/gpu/batches/GrVertexBatch.h
gfx/skia/skia/src/gpu/effects/GrConvolutionEffect.cpp
gfx/skia/skia/src/gpu/effects/GrConvolutionEffect.h
gfx/skia/skia/src/gpu/effects/GrDashingEffect.cpp
gfx/skia/skia/src/gpu/effects/GrDashingEffect.h
gfx/skia/skia/src/gpu/gl/GrGLGLSL.cpp
gfx/skia/skia/src/gpu/gl/GrGLGLSL.h
gfx/skia/skia/src/gpu/glsl/GrGLSL.h
gfx/skia/skia/src/gpu/glsl/GrGLSLCaps.cpp
gfx/skia/skia/src/gpu/glsl/GrGLSLCaps.h
gfx/skia/skia/src/gpu/glsl/GrGLSLShaderVar.h
gfx/skia/skia/src/gpu/glsl/GrGLSL_impl.h
gfx/skia/skia/src/gpu/text/GrAtlasTextBlob_regenInBatch.cpp
gfx/skia/skia/src/gpu/text/GrBatchFontCache.cpp
gfx/skia/skia/src/gpu/text/GrBatchFontCache.h
gfx/skia/skia/src/images/SkForceLinking.cpp
gfx/skia/skia/src/images/SkImageEncoder_Factory.cpp
gfx/skia/skia/src/images/SkKTXImageEncoder.cpp
gfx/skia/skia/src/images/SkMovie.cpp
gfx/skia/skia/src/images/transform_scanline.h
gfx/skia/skia/src/lazy/SkDiscardablePixelRef.cpp
gfx/skia/skia/src/lazy/SkDiscardablePixelRef.h
gfx/skia/skia/src/opts/SkBitmapFilter_opts_SSE2.cpp
gfx/skia/skia/src/opts/SkBitmapFilter_opts_SSE2.h
gfx/skia/skia/src/opts/SkBitmapProcState_opts_arm.cpp
gfx/skia/skia/src/opts/SkBitmapProcState_opts_mips_dsp.cpp
gfx/skia/skia/src/opts/SkBlitRow_opts_mips_dsp.cpp
gfx/skia/skia/src/opts/SkColorCubeFilter_opts.h
gfx/skia/skia/src/opts/SkOpts_neon.cpp
gfx/skia/skia/src/opts/SkTextureCompressor_opts.h
gfx/skia/skia/src/pathops/SkOpCoincidence.cpp
gfx/skia/skia/src/pathops/SkOpSpan.cpp
gfx/skia/skia/src/utils/SkBoundaryPatch.cpp
gfx/skia/skia/src/utils/SkLayer.cpp
gfx/skia/skia/src/utils/SkMeshUtils.cpp
gfx/skia/skia/src/utils/SkOSFile.cpp
gfx/skia/skia/src/utils/SkPatchGrid.cpp
gfx/skia/skia/src/utils/SkPatchGrid.h
gfx/skia/skia/src/utils/SkTextureCompressor.cpp
gfx/skia/skia/src/utils/SkTextureCompressor.h
gfx/skia/skia/src/utils/SkTextureCompressor_ASTC.cpp
gfx/skia/skia/src/utils/SkTextureCompressor_ASTC.h
gfx/skia/skia/src/utils/SkTextureCompressor_Blitter.h
gfx/skia/skia/src/utils/SkTextureCompressor_LATC.cpp
gfx/skia/skia/src/utils/SkTextureCompressor_LATC.h
gfx/skia/skia/src/utils/SkTextureCompressor_R11EAC.cpp
gfx/skia/skia/src/utils/SkTextureCompressor_R11EAC.h
gfx/skia/skia/src/utils/SkTextureCompressor_Utils.h
gfx/skia/skia/src/views/sdl/SkOSWindow_SDL.cpp
gfx/skia/skia/src/xps/SkDocument_XPS.cpp
gfx/skia/skia/src/xps/SkDocument_XPS_None.cpp
image/ImageBlocker.cpp
image/ImageBlocker.h
js/src/jit/JSONPrinter.cpp
js/src/jit/JSONPrinter.h
layout/tables/nsTablePainter.cpp
layout/tables/nsTablePainter.h
media/libcubeb/cubeb-pulse-rs/cubeb-ffi/src/errors.rs
media/libcubeb/cubeb-pulse-rs/cubeb-ffi/src/internal.rs
media/libcubeb/cubeb-pulse-rs/cubeb-ffi/src/types/device_fmt.rs
media/libcubeb/cubeb-pulse-rs/cubeb-ffi/src/types/device_pref.rs
media/libcubeb/cubeb-pulse-rs/cubeb-ffi/src/types/device_type.rs
media/libcubeb/cubeb-pulse-rs/cubeb-ffi/src/types/mod.rs
mobile/android/.eslintrc
mobile/android/app/mobile.js
mobile/android/base/java/org/mozilla/gecko/tabs/TabsLayoutRecyclerAdapter.java
mobile/android/chrome/content/.eslintrc
parser/html/nsHtml5AtomList.h
parser/html/nsHtml5Atoms.cpp
parser/html/nsHtml5Atoms.h
python/mozbuild/mozbuild/backend/android_eclipse.py
python/mozbuild/mozbuild/backend/recursivemake.py
python/mozbuild/mozbuild/backend/templates/android_eclipse/.classpath
python/mozbuild/mozbuild/backend/templates/android_eclipse/.externalToolBuilders/com.android.ide.eclipse.adt.ApkBuilder.launch
python/mozbuild/mozbuild/backend/templates/android_eclipse/.externalToolBuilders/com.android.ide.eclipse.adt.PreCompilerBuilder.launch
python/mozbuild/mozbuild/backend/templates/android_eclipse/.externalToolBuilders/com.android.ide.eclipse.adt.ResourceManagerBuilder.launch
python/mozbuild/mozbuild/backend/templates/android_eclipse/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch
python/mozbuild/mozbuild/backend/templates/android_eclipse/.project
python/mozbuild/mozbuild/backend/templates/android_eclipse/.settings/org.eclipse.jdt.core.prefs
python/mozbuild/mozbuild/backend/templates/android_eclipse/.settings/org.eclipse.jdt.ui.prefs
python/mozbuild/mozbuild/backend/templates/android_eclipse/AndroidManifest.xml
python/mozbuild/mozbuild/backend/templates/android_eclipse/gen/tmp
python/mozbuild/mozbuild/backend/templates/android_eclipse/lint.xml
python/mozbuild/mozbuild/backend/templates/android_eclipse/project.properties
python/mozbuild/mozbuild/mach_commands.py
python/mozbuild/mozbuild/test/backend/data/android_eclipse/library1/resources/values/strings.xml
python/mozbuild/mozbuild/test/backend/data/android_eclipse/main1/AndroidManifest.xml
python/mozbuild/mozbuild/test/backend/data/android_eclipse/main2/AndroidManifest.xml
python/mozbuild/mozbuild/test/backend/data/android_eclipse/main2/assets/dummy.txt
python/mozbuild/mozbuild/test/backend/data/android_eclipse/main2/extra.jar
python/mozbuild/mozbuild/test/backend/data/android_eclipse/main2/res/values/strings.xml
python/mozbuild/mozbuild/test/backend/data/android_eclipse/main3/AndroidManifest.xml
python/mozbuild/mozbuild/test/backend/data/android_eclipse/main3/a/A.java
python/mozbuild/mozbuild/test/backend/data/android_eclipse/main3/b/B.java
python/mozbuild/mozbuild/test/backend/data/android_eclipse/main3/c/C.java
python/mozbuild/mozbuild/test/backend/data/android_eclipse/main4
python/mozbuild/mozbuild/test/backend/data/android_eclipse/moz.build
python/mozbuild/mozbuild/test/backend/data/android_eclipse/subdir/moz.build
python/mozbuild/mozbuild/test/backend/data/android_eclipse/subdir/submain/AndroidManifest.xml
python/mozbuild/mozbuild/test/backend/test_android_eclipse.py
security/manager/.eslintrc.js
security/manager/ssl/StaticHPKPins.h
services/cloudsync/CloudSync.jsm
services/cloudsync/CloudSyncAdapters.jsm
services/cloudsync/CloudSyncBookmarks.jsm
services/cloudsync/CloudSyncBookmarksFolderCache.jsm
services/cloudsync/CloudSyncEventSource.jsm
services/cloudsync/CloudSyncLocal.jsm
services/cloudsync/CloudSyncPlacesWrapper.jsm
services/cloudsync/CloudSyncTabs.jsm
services/cloudsync/docs/api.md
services/cloudsync/docs/architecture.rst
services/cloudsync/docs/dataformat.rst
services/cloudsync/docs/example.rst
services/cloudsync/docs/index.rst
services/cloudsync/moz.build
services/cloudsync/tests/mochitest/.eslintrc.js
services/cloudsync/tests/mochitest/browser.ini
services/cloudsync/tests/mochitest/browser_tabEvents.js
services/cloudsync/tests/mochitest/other_window.html
services/cloudsync/tests/xpcshell/.eslintrc.js
services/cloudsync/tests/xpcshell/head.js
services/cloudsync/tests/xpcshell/test_bookmarks.js
services/cloudsync/tests/xpcshell/test_lazyload.js
services/cloudsync/tests/xpcshell/test_module.js
services/cloudsync/tests/xpcshell/test_tabs.js
services/cloudsync/tests/xpcshell/xpcshell.ini
servo/components/style/gecko/generated/gecko_pseudo_element_helper.rs
servo/components/style/gecko_bindings/bindings.rs
servo/components/style/gecko_bindings/structs_debug.rs
servo/components/style/gecko_bindings/structs_release.rs
servo/components/style/gecko_string_cache/atom_macro.rs
taskcluster/ci/build-signing/kind.yml
taskcluster/ci/build/android.yml
taskcluster/ci/build/linux.yml
taskcluster/ci/hazard/kind.yml
taskcluster/ci/upload-symbols/kind.yml
taskcluster/taskgraph/target_tasks.py
taskcluster/taskgraph/test/test_optimize.py
taskcluster/taskgraph/transforms/beetmover.py
taskcluster/taskgraph/transforms/job/mozharness.py
taskcluster/taskgraph/transforms/job/mozharness_test.py
taskcluster/taskgraph/transforms/signing.py
taskcluster/taskgraph/transforms/task.py
taskcluster/taskgraph/transforms/tests.py
taskcluster/taskgraph/util/scriptworker.py
testing/mozharness/configs/builds/branch_specifics.py
testing/mozharness/configs/merge_day/aurora_to_beta.py
testing/mozharness/configs/merge_day/central_to_aurora.py
testing/mozharness/mozharness/mozilla/building/buildbase.py
testing/mozharness/scripts/desktop_l10n.py
testing/web-platform/meta/console/console-timeline-timelineEnd-historical.any.js.ini
testing/web-platform/meta/webvtt/rendering/cues-with-video/processing-model/disable_controls_reposition.html.ini
third_party/rust/bindgen/src/chooser.rs
third_party/rust/bindgen/tests/headers/16-byte-alignment.h
third_party/rust/bindgen/tests/headers/381-decltype-alias.hpp
third_party/rust/bindgen/tests/headers/accessors.hpp
third_party/rust/bindgen/tests/headers/annotation_hide.hpp
third_party/rust/bindgen/tests/headers/anon_enum.hpp
third_party/rust/bindgen/tests/headers/anon_enum_trait.hpp
third_party/rust/bindgen/tests/headers/anon_enum_whitelist.h
third_party/rust/bindgen/tests/headers/anon_union.hpp
third_party/rust/bindgen/tests/headers/arg_keyword.hpp
third_party/rust/bindgen/tests/headers/auto.hpp
third_party/rust/bindgen/tests/headers/bad-namespace-parenthood-inheritance.hpp
third_party/rust/bindgen/tests/headers/base-to-derived.hpp
third_party/rust/bindgen/tests/headers/bitfield-enum-basic.hpp
third_party/rust/bindgen/tests/headers/bitfield_align.h
third_party/rust/bindgen/tests/headers/bitfield_method_mangling.h
third_party/rust/bindgen/tests/headers/blocks.h
third_party/rust/bindgen/tests/headers/canonical_path_without_namespacing.hpp
third_party/rust/bindgen/tests/headers/class.hpp
third_party/rust/bindgen/tests/headers/class_nested.hpp
third_party/rust/bindgen/tests/headers/class_no_members.hpp
third_party/rust/bindgen/tests/headers/class_static.hpp
third_party/rust/bindgen/tests/headers/class_static_const.hpp
third_party/rust/bindgen/tests/headers/class_use_as.hpp
third_party/rust/bindgen/tests/headers/class_with_dtor.hpp
third_party/rust/bindgen/tests/headers/class_with_inner_struct.hpp
third_party/rust/bindgen/tests/headers/class_with_typedef.hpp
third_party/rust/bindgen/tests/headers/complex.h
third_party/rust/bindgen/tests/headers/complex_global.h
third_party/rust/bindgen/tests/headers/const_array_fn_arg.h
third_party/rust/bindgen/tests/headers/const_bool.hpp
third_party/rust/bindgen/tests/headers/const_enum_unnamed.hpp
third_party/rust/bindgen/tests/headers/const_ptr.hpp
third_party/rust/bindgen/tests/headers/const_resolved_ty.h
third_party/rust/bindgen/tests/headers/const_tparam.hpp
third_party/rust/bindgen/tests/headers/constant-evaluate.h
third_party/rust/bindgen/tests/headers/constant-non-specialized-tp.hpp
third_party/rust/bindgen/tests/headers/constify-all-enums.h
third_party/rust/bindgen/tests/headers/constify-enum.h
third_party/rust/bindgen/tests/headers/constructor-tp.hpp
third_party/rust/bindgen/tests/headers/constructors.hpp
third_party/rust/bindgen/tests/headers/convert-floats.h
third_party/rust/bindgen/tests/headers/crtp.hpp
third_party/rust/bindgen/tests/headers/dash_language.h
third_party/rust/bindgen/tests/headers/decl_extern_int_twice.h
third_party/rust/bindgen/tests/headers/decl_ptr_to_array.h
third_party/rust/bindgen/tests/headers/disable-namespacing.hpp
third_party/rust/bindgen/tests/headers/duplicated-namespaces-definitions.hpp
third_party/rust/bindgen/tests/headers/duplicated-namespaces.hpp
third_party/rust/bindgen/tests/headers/duplicated_constants_in_ns.hpp
third_party/rust/bindgen/tests/headers/elaborated.hpp
third_party/rust/bindgen/tests/headers/empty_template_param_name.hpp
third_party/rust/bindgen/tests/headers/enum.h
third_party/rust/bindgen/tests/headers/enum_alias.hpp
third_party/rust/bindgen/tests/headers/enum_and_vtable_mangling.hpp
third_party/rust/bindgen/tests/headers/enum_dupe.h
third_party/rust/bindgen/tests/headers/enum_explicit_type.hpp
third_party/rust/bindgen/tests/headers/enum_in_template_with_typedef.hpp
third_party/rust/bindgen/tests/headers/enum_negative.h
third_party/rust/bindgen/tests/headers/enum_packed.h
third_party/rust/bindgen/tests/headers/eval-variadic-template-parameter.hpp
third_party/rust/bindgen/tests/headers/extern.hpp
third_party/rust/bindgen/tests/headers/float128.hpp
third_party/rust/bindgen/tests/headers/forward-declaration-autoptr.hpp
third_party/rust/bindgen/tests/headers/forward-inherit-struct-with-fields.hpp
third_party/rust/bindgen/tests/headers/forward-inherit-struct.hpp
third_party/rust/bindgen/tests/headers/forward_declared_complex_types.hpp
third_party/rust/bindgen/tests/headers/forward_declared_struct.h
third_party/rust/bindgen/tests/headers/func_proto.h
third_party/rust/bindgen/tests/headers/func_ptr.h
third_party/rust/bindgen/tests/headers/func_ptr_in_struct.h
third_party/rust/bindgen/tests/headers/func_with_array_arg.h
third_party/rust/bindgen/tests/headers/func_with_func_ptr_arg.h
third_party/rust/bindgen/tests/headers/in_class_typedef.hpp
third_party/rust/bindgen/tests/headers/inherit-namespaced.hpp
third_party/rust/bindgen/tests/headers/inherit_named.hpp
third_party/rust/bindgen/tests/headers/inherit_typedef.hpp
third_party/rust/bindgen/tests/headers/inline-function.h
third_party/rust/bindgen/tests/headers/inline_namespace.hpp
third_party/rust/bindgen/tests/headers/inline_namespace_conservative.hpp
third_party/rust/bindgen/tests/headers/inline_namespace_whitelist.hpp
third_party/rust/bindgen/tests/headers/inner_const.hpp
third_party/rust/bindgen/tests/headers/inner_template_self.hpp
third_party/rust/bindgen/tests/headers/int128_t.h
third_party/rust/bindgen/tests/headers/issue-358.hpp
third_party/rust/bindgen/tests/headers/issue-372.hpp
third_party/rust/bindgen/tests/headers/issue-410.hpp
third_party/rust/bindgen/tests/headers/issue-446.hpp
third_party/rust/bindgen/tests/headers/issue-447.hpp
third_party/rust/bindgen/tests/headers/issue-493.hpp
third_party/rust/bindgen/tests/headers/issue_311.hpp
third_party/rust/bindgen/tests/headers/issue_315.hpp
third_party/rust/bindgen/tests/headers/jsval_layout_opaque.hpp
third_party/rust/bindgen/tests/headers/keywords.h
third_party/rust/bindgen/tests/headers/layout.h
third_party/rust/bindgen/tests/headers/layout_align.h
third_party/rust/bindgen/tests/headers/layout_arp.h
third_party/rust/bindgen/tests/headers/layout_array.h
third_party/rust/bindgen/tests/headers/layout_cmdline_token.h
third_party/rust/bindgen/tests/headers/layout_eth_conf.h
third_party/rust/bindgen/tests/headers/layout_kni_mbuf.h
third_party/rust/bindgen/tests/headers/layout_mbuf.h
third_party/rust/bindgen/tests/headers/macro-expr-basic.h
third_party/rust/bindgen/tests/headers/macro-redef.h
third_party/rust/bindgen/tests/headers/macro_const.h
third_party/rust/bindgen/tests/headers/maddness-is-avoidable.hpp
third_party/rust/bindgen/tests/headers/method-mangling.hpp
third_party/rust/bindgen/tests/headers/module-whitelisted.hpp
third_party/rust/bindgen/tests/headers/msvc-no-usr.hpp
third_party/rust/bindgen/tests/headers/multiple-inherit-empty-correct-layout.hpp
third_party/rust/bindgen/tests/headers/mutable.hpp
third_party/rust/bindgen/tests/headers/namespace.hpp
third_party/rust/bindgen/tests/headers/nested.hpp
third_party/rust/bindgen/tests/headers/nested_vtable.hpp
third_party/rust/bindgen/tests/headers/nested_within_namespace.hpp
third_party/rust/bindgen/tests/headers/no-comments.h
third_party/rust/bindgen/tests/headers/no-derive-debug.h
third_party/rust/bindgen/tests/headers/no-derive-default.h
third_party/rust/bindgen/tests/headers/no-recursive-whitelisting.h
third_party/rust/bindgen/tests/headers/no-std.h
third_party/rust/bindgen/tests/headers/no_copy.hpp
third_party/rust/bindgen/tests/headers/nsStyleAutoArray.hpp
third_party/rust/bindgen/tests/headers/objc_interface.h
third_party/rust/bindgen/tests/headers/objc_interface_type.h
third_party/rust/bindgen/tests/headers/objc_method.h
third_party/rust/bindgen/tests/headers/only_bitfields.hpp
third_party/rust/bindgen/tests/headers/opaque-tracing.hpp
third_party/rust/bindgen/tests/headers/opaque_in_struct.hpp
third_party/rust/bindgen/tests/headers/opaque_pointer.hpp
third_party/rust/bindgen/tests/headers/opaque_typedef.hpp
third_party/rust/bindgen/tests/headers/overflowed_enum.hpp
third_party/rust/bindgen/tests/headers/overloading.hpp
third_party/rust/bindgen/tests/headers/private.hpp
third_party/rust/bindgen/tests/headers/public-dtor.hpp
third_party/rust/bindgen/tests/headers/redeclaration.hpp
third_party/rust/bindgen/tests/headers/ref_argument_array.hpp
third_party/rust/bindgen/tests/headers/reparented_replacement.hpp
third_party/rust/bindgen/tests/headers/replace_template_alias.hpp
third_party/rust/bindgen/tests/headers/replace_use.hpp
third_party/rust/bindgen/tests/headers/replaces_double.hpp
third_party/rust/bindgen/tests/headers/resolved_type_def_function.h
third_party/rust/bindgen/tests/headers/same_struct_name_in_different_namespaces.hpp
third_party/rust/bindgen/tests/headers/size_t_template.hpp
third_party/rust/bindgen/tests/headers/struct_containing_forward_declared_struct.h
third_party/rust/bindgen/tests/headers/struct_typedef.h
third_party/rust/bindgen/tests/headers/struct_typedef_ns.hpp
third_party/rust/bindgen/tests/headers/struct_with_anon_struct.h
third_party/rust/bindgen/tests/headers/struct_with_anon_struct_array.h
third_party/rust/bindgen/tests/headers/struct_with_anon_struct_pointer.h
third_party/rust/bindgen/tests/headers/struct_with_anon_union.h
third_party/rust/bindgen/tests/headers/struct_with_anon_unnamed_struct.h
third_party/rust/bindgen/tests/headers/struct_with_anon_unnamed_union.h
third_party/rust/bindgen/tests/headers/struct_with_bitfields.h
third_party/rust/bindgen/tests/headers/struct_with_derive_debug.h
third_party/rust/bindgen/tests/headers/struct_with_nesting.h
third_party/rust/bindgen/tests/headers/struct_with_packing.h
third_party/rust/bindgen/tests/headers/struct_with_struct.h
third_party/rust/bindgen/tests/headers/struct_with_typedef_template_arg.hpp
third_party/rust/bindgen/tests/headers/template-fun-ty.hpp
third_party/rust/bindgen/tests/headers/template.hpp
third_party/rust/bindgen/tests/headers/template_alias.hpp
third_party/rust/bindgen/tests/headers/template_alias_basic.hpp
third_party/rust/bindgen/tests/headers/template_alias_namespace.hpp
third_party/rust/bindgen/tests/headers/template_partial_specification.hpp
third_party/rust/bindgen/tests/headers/template_typedef_transitive_param.hpp
third_party/rust/bindgen/tests/headers/template_typedefs.hpp
third_party/rust/bindgen/tests/headers/templateref_opaque.hpp
third_party/rust/bindgen/tests/headers/type-referenced-by-whitelisted-function.h
third_party/rust/bindgen/tests/headers/type_alias_empty.hpp
third_party/rust/bindgen/tests/headers/type_alias_partial_template_especialization.hpp
third_party/rust/bindgen/tests/headers/type_alias_template_specialized.hpp
third_party/rust/bindgen/tests/headers/typedefd-array-as-function-arg.h
third_party/rust/bindgen/tests/headers/typeref.hpp
third_party/rust/bindgen/tests/headers/union-in-ns.hpp
third_party/rust/bindgen/tests/headers/union_dtor.hpp
third_party/rust/bindgen/tests/headers/union_fields.hpp
third_party/rust/bindgen/tests/headers/union_template.hpp
third_party/rust/bindgen/tests/headers/union_with_anon_struct.h
third_party/rust/bindgen/tests/headers/union_with_anon_struct_bitfield.h
third_party/rust/bindgen/tests/headers/union_with_anon_union.h
third_party/rust/bindgen/tests/headers/union_with_anon_unnamed_struct.h
third_party/rust/bindgen/tests/headers/union_with_anon_unnamed_union.h
third_party/rust/bindgen/tests/headers/union_with_big_member.h
third_party/rust/bindgen/tests/headers/union_with_nesting.h
third_party/rust/bindgen/tests/headers/unknown_attr.h
third_party/rust/bindgen/tests/headers/use-core.h
third_party/rust/bindgen/tests/headers/using.hpp
third_party/rust/bindgen/tests/headers/var-tracing.hpp
third_party/rust/bindgen/tests/headers/variadic-method.hpp
third_party/rust/bindgen/tests/headers/variadic_template_function.hpp
third_party/rust/bindgen/tests/headers/vector.hpp
third_party/rust/bindgen/tests/headers/virtual_dtor.hpp
third_party/rust/bindgen/tests/headers/virtual_inheritance.hpp
third_party/rust/bindgen/tests/headers/virtual_overloaded.hpp
third_party/rust/bindgen/tests/headers/vtable_recursive_sig.hpp
third_party/rust/bindgen/tests/headers/weird_bitfields.hpp
third_party/rust/bindgen/tests/headers/what_is_going_on.hpp
third_party/rust/bindgen/tests/headers/whitelist-namespaces-basic.hpp
third_party/rust/bindgen/tests/headers/whitelist-namespaces.hpp
third_party/rust/bindgen/tests/headers/whitelist_basic.hpp
third_party/rust/bindgen/tests/headers/whitelist_fix.hpp
third_party/rust/bindgen/tests/headers/whitelist_vars.h
third_party/rust/bindgen/tests/tests.rs
third_party/rust/bindgen/tests/uses/.gitignore
third_party/rust/dtoa/.cargo-checksum.json
third_party/rust/dtoa/.cargo-ok
third_party/rust/dtoa/.gitignore
third_party/rust/dtoa/.travis.yml
third_party/rust/dtoa/Cargo.toml
third_party/rust/dtoa/LICENSE-APACHE
third_party/rust/dtoa/LICENSE-MIT
third_party/rust/dtoa/README.md
third_party/rust/dtoa/benches/bench.rs
third_party/rust/dtoa/performance.png
third_party/rust/dtoa/src/diyfp.rs
third_party/rust/dtoa/src/dtoa.rs
third_party/rust/dtoa/src/lib.rs
third_party/rust/dtoa/tests/test.rs
third_party/rust/itoa/.cargo-checksum.json
third_party/rust/itoa/.cargo-ok
third_party/rust/itoa/.gitignore
third_party/rust/itoa/.travis.yml
third_party/rust/itoa/Cargo.toml
third_party/rust/itoa/LICENSE-APACHE
third_party/rust/itoa/LICENSE-MIT
third_party/rust/itoa/README.md
third_party/rust/itoa/benches/bench.rs
third_party/rust/itoa/performance.png
third_party/rust/itoa/src/lib.rs
third_party/rust/itoa/tests/test.rs
third_party/rust/rayon/src/api.rs
third_party/rust/rayon/src/job.rs
third_party/rust/rayon/src/latch.rs
third_party/rust/rayon/src/log.rs
third_party/rust/rayon/src/par_iter/README.md
third_party/rust/rayon/src/par_iter/chain.rs
third_party/rust/rayon/src/par_iter/collect/consumer.rs
third_party/rust/rayon/src/par_iter/collect/mod.rs
third_party/rust/rayon/src/par_iter/collections.rs
third_party/rust/rayon/src/par_iter/enumerate.rs
third_party/rust/rayon/src/par_iter/filter.rs
third_party/rust/rayon/src/par_iter/filter_map.rs
third_party/rust/rayon/src/par_iter/find.rs
third_party/rust/rayon/src/par_iter/flat_map.rs
third_party/rust/rayon/src/par_iter/fold.rs
third_party/rust/rayon/src/par_iter/for_each.rs
third_party/rust/rayon/src/par_iter/from_par_iter.rs
third_party/rust/rayon/src/par_iter/internal.rs
third_party/rust/rayon/src/par_iter/len.rs
third_party/rust/rayon/src/par_iter/map.rs
third_party/rust/rayon/src/par_iter/misc.rs
third_party/rust/rayon/src/par_iter/mod.rs
third_party/rust/rayon/src/par_iter/noop.rs
third_party/rust/rayon/src/par_iter/option.rs
third_party/rust/rayon/src/par_iter/range.rs
third_party/rust/rayon/src/par_iter/reduce.rs
third_party/rust/rayon/src/par_iter/skip.rs
third_party/rust/rayon/src/par_iter/slice.rs
third_party/rust/rayon/src/par_iter/slice_mut.rs
third_party/rust/rayon/src/par_iter/string.rs
third_party/rust/rayon/src/par_iter/take.rs
third_party/rust/rayon/src/par_iter/test.rs
third_party/rust/rayon/src/par_iter/vec.rs
third_party/rust/rayon/src/par_iter/weight.rs
third_party/rust/rayon/src/par_iter/zip.rs
third_party/rust/rayon/src/scope/mod.rs
third_party/rust/rayon/src/scope/test.rs
third_party/rust/rayon/src/thread_pool.rs
third_party/rust/rayon/src/unwind.rs
third_party/rust/rayon/src/util.rs
third_party/rust/rayon/tests/compile-fail-unstable/scope_join_bad.rs
third_party/rust/rayon/tests/run-pass-unstable/scope_join.rs
third_party/rust/rayon/tests/run-pass/init_fail_thread_number_not_equal.rs
third_party/rust/rayon/tests/run-pass/init_fail_zero_threads.rs
third_party/rust/serde_json/.cargo-checksum.json
third_party/rust/serde_json/.cargo-ok
third_party/rust/serde_json/Cargo.toml
third_party/rust/serde_json/LICENSE-APACHE
third_party/rust/serde_json/LICENSE-MIT
third_party/rust/serde_json/README.md
third_party/rust/serde_json/src/de.rs
third_party/rust/serde_json/src/error.rs
third_party/rust/serde_json/src/lib.rs
third_party/rust/serde_json/src/macros.rs
third_party/rust/serde_json/src/map.rs
third_party/rust/serde_json/src/number.rs
third_party/rust/serde_json/src/read.rs
third_party/rust/serde_json/src/ser.rs
third_party/rust/serde_json/src/value.rs
third_party/rust/syntex_syntax/src/ext/proc_macro_shim.rs
third_party/rust/target_build_utils/.cargo-checksum.json
third_party/rust/target_build_utils/.cargo-ok
third_party/rust/target_build_utils/.gitignore
third_party/rust/target_build_utils/.travis.yml
third_party/rust/target_build_utils/Cargo.toml
third_party/rust/target_build_utils/README.md
third_party/rust/target_build_utils/appveyor.yml
third_party/rust/target_build_utils/build.rs
third_party/rust/target_build_utils/src/changelog.rs
third_party/rust/target_build_utils/src/lib.rs
third_party/rust/target_build_utils/src/my-great-target.json
toolkit/themes/linux/mozapps/extensions/dictionaryGeneric-16.png
toolkit/themes/linux/mozapps/extensions/themeGeneric-16.png
toolkit/themes/osx/global/linkTree.css
toolkit/themes/osx/mozapps/extensions/dictionaryGeneric-16.png
toolkit/themes/osx/mozapps/extensions/search.png
toolkit/themes/osx/mozapps/extensions/themeGeneric-16.png
toolkit/themes/windows/global/linkTree.css
toolkit/themes/windows/mozapps/extensions/dictionaryGeneric-16.png
toolkit/themes/windows/mozapps/extensions/themeGeneric-16.png
tools/profiler/gecko/Profiler.jsm
--- a/.cron.yml
+++ b/.cron.yml
@@ -13,17 +13,17 @@ jobs:
           - mozilla-central
           - mozilla-aurora
           - date
       when:
           by-project:
             # Match buildbot starts for now
             date: [{hour: 15, minute: 0}]
             mozilla-central: [{hour: 10, minute: 0}]
-            mozilla-aurora: [{hour: 7, minute: 45}]  # Buildbot uses minute 40
+            mozilla-aurora: [] # bug 1358976
             # No default
 
     - name: nightly-desktop-osx
       job:
           type: decision-task
           treeherder-symbol: Nd-OSX
           triggered-by: nightly
           target-tasks-method: nightly_macosx
--- a/.eslintignore
+++ b/.eslintignore
@@ -4,17 +4,16 @@
 # Exclude expected objdirs.
 obj*/**
 
 # We ignore all these directories by default, until we get them enabled.
 # If you are enabling a directory, please add directory specific exclusions
 # below.
 addon-sdk/**
 build/**
-caps/**
 chrome/**
 config/**
 db/**
 docshell/**
 editor/**
 embedding/**
 extensions/**
 gfx/**
@@ -73,16 +72,19 @@ browser/extensions/pocket/content/panels
 browser/extensions/pocket/content/panels/js/vendor/**
 browser/locales/**
 # generated or library files in activity-stream
 browser/extensions/activity-stream/data/content/activity-stream.bundle.js
 browser/extensions/activity-stream/vendor/**
 # imported from chromium
 browser/extensions/mortar/**
 
+# caps/ exclusions
+caps/tests/mochitest/browser_checkloaduri.js
+
 # devtools/ exclusions
 devtools/client/canvasdebugger/**
 devtools/client/commandline/**
 devtools/client/debugger/**
 devtools/client/framework/**
 !devtools/client/framework/devtools.js
 !devtools/client/framework/devtools-browser.js
 !devtools/client/framework/selection.js
@@ -122,21 +124,16 @@ devtools/client/webaudioeditor/**
 devtools/client/webconsole/net/**
 devtools/client/webconsole/test/**
 devtools/client/webconsole/console-output.js
 devtools/client/webconsole/hudservice.js
 devtools/client/webconsole/webconsole-connection-proxy.js
 devtools/client/webconsole/webconsole.js
 devtools/client/webide/**
 !devtools/client/webide/components/webideCli.js
-devtools/server/actors/webconsole.js
-devtools/server/actors/object.js
-devtools/server/actors/script.js
-devtools/server/actors/styleeditor.js
-devtools/server/actors/stylesheets.js
 devtools/server/tests/browser/storage-*.html
 !devtools/server/tests/browser/storage-unsecured-iframe.html
 devtools/server/tests/browser/stylesheets-nested-iframes.html
 devtools/server/tests/unit/xpcshell_debugging_script.js
 devtools/shared/platform/content/test/test_clipboard.html
 devtools/shared/qrcode/tests/mochitest/test_decode.html
 devtools/shared/tests/mochitest/*.html
 devtools/shared/webconsole/test/test_*.html
@@ -329,8 +326,9 @@ toolkit/components/urlformatter/nsURLFor
 toolkit/modules/AppConstants.jsm
 toolkit/mozapps/downloads/nsHelperAppDlg.js
 toolkit/mozapps/extensions/internal/AddonConstants.jsm
 toolkit/mozapps/update/tests/data/xpcshellConstantsPP.js
 toolkit/webapps/**
 
 # Third party
 toolkit/modules/third_party/**
+third_party/**
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -10,21 +10,21 @@ module.exports = {
     "mozilla/avoid-nsISupportsString-preferences": "error",
     "mozilla/import-browser-window-globals": "error",
     "mozilla/import-globals": "warn",
     "mozilla/no-import-into-var-and-global": "error",
     "mozilla/no-useless-parameters": "error",
     "mozilla/no-useless-removeEventListener": "error",
     "mozilla/use-default-preference-values": "error",
     "mozilla/use-ownerGlobal": "error",
-
     // No (!foo in bar) or (!object instanceof Class)
     "no-unsafe-negation": "error",
     // No eval() and no strings in the first param of setTimeout or setInterval
     "no-implied-eval": "error",
+    "no-eval": "error",
   },
   "env": {
     "es6": true
   },
   "parserOptions": {
     "ecmaVersion": 8,
   },
 };
--- a/CLOBBER
+++ b/CLOBBER
@@ -17,9 +17,9 @@
 #
 # Modifying this file will now automatically clobber the buildbot machines \o/
 #
 
 # Are you updating CLOBBER because you think it's needed for your WebIDL
 # changes to stick? As of bug 928195, this shouldn't be necessary! Please
 # don't change CLOBBER for WebIDL changes any more.
 
-Bug 1357107 - Removing a directory from extensions/ requires re-running configure to update MOZ_EXTENSIONS
+Bug 1356927 - Mac builds in automation require a clobber for a change in which ranlib they use
--- a/accessible/.eslintrc.js
+++ b/accessible/.eslintrc.js
@@ -1,24 +1,31 @@
 "use strict";
 
 module.exports = {
   "extends": [
-    "../.eslintrc.js"
+    "plugin:mozilla/recommended"
   ],
-  "globals": {
-    "Cc": true,
-    "Ci": true,
-    "Components": true,
-    "console": true,
-    "Cu": true,
-    "dump": true,
-    "Services": true,
-    "XPCOMUtils": true
-  },
   "rules": {
     // Warn about cyclomatic complexity in functions.
     "complexity": ["error", 42],
 
-    // Maximum depth callbacks can be nested.
-    "max-nested-callbacks": ["error", 10],
+    // XXX These are rules that are enabled in the recommended configuration, but
+    // disabled here due to failures when initially implemented. They should be
+    // removed (and hence enabled) at some stage.
+    "brace-style": "off",
+    "consistent-return": "off",
+    "func-call-spacing": "off",
+    "quotes": "off",
+    "object-shorthand": "off",
+    "space-before-function-paren": "off",
+    "space-infix-ops": "off",
+    "key-spacing": "off",
+    "keyword-spacing": "off",
+    "no-else-return": "off",
+    "no-multi-spaces": "off",
+    "no-trailing-spaces": "off",
+    "no-unexpected-multiline": "off",
+    "no-unsafe-finally": "off",
+    "no-useless-call": "off",
+    "spaced-comment": "off",
   }
 };
--- a/accessible/base/Logging.cpp
+++ b/accessible/base/Logging.cpp
@@ -391,17 +391,17 @@ static const char* sDocCreateTitle = "DO
 static const char* sDocDestroyTitle = "DOCDESTROY";
 static const char* sDocEventTitle = "DOCEVENT";
 static const char* sFocusTitle = "FOCUS";
 
 void
 logging::DocLoad(const char* aMsg, nsIWebProgress* aWebProgress,
                  nsIRequest* aRequest, uint32_t aStateFlags)
 {
-  MsgBegin(sDocLoadTitle, aMsg);
+  MsgBegin(sDocLoadTitle, "%s", aMsg);
 
   nsCOMPtr<mozIDOMWindowProxy> DOMWindow;
   aWebProgress->GetDOMWindow(getter_AddRefs(DOMWindow));
   nsPIDOMWindowOuter* window = nsPIDOMWindowOuter::From(DOMWindow);
   if (!window) {
     MsgEnd();
     return;
   }
@@ -428,17 +428,17 @@ logging::DocLoad(const char* aMsg, nsIWe
   printf(", document is %sloading\n", (isDocLoading ? "" : "not "));
 
   MsgEnd();
 }
 
 void
 logging::DocLoad(const char* aMsg, nsIDocument* aDocumentNode)
 {
-  MsgBegin(sDocLoadTitle, aMsg);
+  MsgBegin(sDocLoadTitle, "%s", aMsg);
 
   DocAccessible* document = GetExistingDocAccessible(aDocumentNode);
   LogDocInfo(aDocumentNode, document);
 
   MsgEnd();
 }
 
 void
@@ -492,64 +492,64 @@ logging::DocLoadEventHandled(AccEvent* a
 
 void
 logging::DocCreate(const char* aMsg, nsIDocument* aDocumentNode,
                    DocAccessible* aDocument)
 {
   DocAccessible* document = aDocument ?
     aDocument : GetExistingDocAccessible(aDocumentNode);
 
-  MsgBegin(sDocCreateTitle, aMsg);
+  MsgBegin(sDocCreateTitle, "%s", aMsg);
   LogDocInfo(aDocumentNode, document);
   MsgEnd();
 }
 
 void
 logging::DocDestroy(const char* aMsg, nsIDocument* aDocumentNode,
                     DocAccessible* aDocument)
 {
   DocAccessible* document = aDocument ?
     aDocument : GetExistingDocAccessible(aDocumentNode);
 
-  MsgBegin(sDocDestroyTitle, aMsg);
+  MsgBegin(sDocDestroyTitle, "%s", aMsg);
   LogDocInfo(aDocumentNode, document);
   MsgEnd();
 }
 
 void
 logging::OuterDocDestroy(OuterDocAccessible* aOuterDoc)
 {
   MsgBegin(sDocDestroyTitle, "outerdoc shutdown");
   logging::Address("outerdoc", aOuterDoc);
   MsgEnd();
 }
 
 void
 logging::FocusNotificationTarget(const char* aMsg, const char* aTargetDescr,
                                  Accessible* aTarget)
 {
-  MsgBegin(sFocusTitle, aMsg);
+  MsgBegin(sFocusTitle, "%s", aMsg);
   AccessibleNNode(aTargetDescr, aTarget);
   MsgEnd();
 }
 
 void
 logging::FocusNotificationTarget(const char* aMsg, const char* aTargetDescr,
                                  nsINode* aTargetNode)
 {
-  MsgBegin(sFocusTitle, aMsg);
+  MsgBegin(sFocusTitle, "%s", aMsg);
   Node(aTargetDescr, aTargetNode);
   MsgEnd();
 }
 
 void
 logging::FocusNotificationTarget(const char* aMsg, const char* aTargetDescr,
                                  nsISupports* aTargetThing)
 {
-  MsgBegin(sFocusTitle, aMsg);
+  MsgBegin(sFocusTitle, "%s", aMsg);
 
   if (aTargetThing) {
     nsCOMPtr<nsINode> targetNode(do_QueryInterface(aTargetThing));
     if (targetNode)
       AccessibleNNode(aTargetDescr, targetNode);
     else
       printf("    %s: %p, window\n", aTargetDescr,
              static_cast<void*>(aTargetThing));
@@ -623,17 +623,17 @@ logging::TreeInfo(const char* aMsg, uint
       Accessible* acc = va_arg(vl, Accessible*);
       MsgBegin("TREE", "%s; doc: %p", aMsg, acc ? acc->Document() : nullptr);
       AccessibleInfo(descr, acc);
       while ((descr = va_arg(vl, const char*))) {
         AccessibleInfo(descr, va_arg(vl, Accessible*));
       }
     }
     else {
-      MsgBegin("TREE", aMsg);
+      MsgBegin("TREE", "%s", aMsg);
     }
     va_end(vl);
     MsgEnd();
 
     if (aExtraFlags & eStack) {
       Stack();
     }
   }
@@ -672,17 +672,17 @@ logging::TreeInfo(const char* aMsg, uint
   }
 }
 
 void
 logging::Tree(const char* aTitle, const char* aMsgText,
               Accessible* aRoot, GetTreePrefix aPrefixFunc,
               void* aGetTreePrefixData)
 {
-  logging::MsgBegin(aTitle, aMsgText);
+  logging::MsgBegin(aTitle, "%s", aMsgText);
 
   nsAutoString level;
   Accessible* root = aRoot;
   do {
     const char* prefix = aPrefixFunc ? aPrefixFunc(aGetTreePrefixData, root) : "";
     printf("%s", NS_ConvertUTF16toUTF8(level).get());
     logging::AccessibleInfo(prefix, root);
     if (root->FirstChild() && !root->FirstChild()->IsDoc()) {
@@ -712,17 +712,17 @@ logging::Tree(const char* aTitle, const 
 
   logging::MsgEnd();
 }
 
 void
 logging::DOMTree(const char* aTitle, const char* aMsgText,
                  DocAccessible* aDocument)
 {
-  logging::MsgBegin(aTitle, aMsgText);
+  logging::MsgBegin(aTitle, "%s", aMsgText);
   nsAutoString level;
   nsINode* root = aDocument->DocumentNode();
   do {
     printf("%s", NS_ConvertUTF16toUTF8(level).get());
     logging::Node("", root);
     if (root->GetFirstChild()) {
       level.Append(NS_LITERAL_STRING("  "));
       root = root->GetFirstChild();
--- a/accessible/base/Logging.h
+++ b/accessible/base/Logging.h
@@ -4,16 +4,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_a11y_logs_h__
 #define mozilla_a11y_logs_h__
 
 #include "nscore.h"
 #include "nsStringFwd.h"
+#include "mozilla/Attributes.h"
 
 class nsIDocument;
 class nsINode;
 class nsIRequest;
 class nsISelection;
 class nsISupports;
 class nsIWebProgress;
 
@@ -147,30 +148,30 @@ void Tree(const char* aTitle, const char
           GetTreePrefix aPrefixFunc = nullptr, void* aGetTreePrefixData = nullptr);
 void DOMTree(const char* aTitle, const char* aMsgText, DocAccessible* aDoc);
 
 /**
  * Log the message ('title: text' format) on new line. Print the start and end
  * boundaries of the message body designated by '{' and '}' (2 spaces indent for
  * body).
  */
-void MsgBegin(const char* aTitle, const char* aMsgText, ...);
+void MsgBegin(const char* aTitle, const char* aMsgText, ...) MOZ_FORMAT_PRINTF(2, 3);
 void MsgEnd();
 
 /**
  * Print start and end boundaries of the message body designated by '{' and '}'
  * (2 spaces indent for body).
  */
 void SubMsgBegin();
 void SubMsgEnd();
 
 /**
  * Log the entry into message body (4 spaces indent).
  */
-void MsgEntry(const char* aEntryText, ...);
+void MsgEntry(const char* aEntryText, ...) MOZ_FORMAT_PRINTF(1, 2);
 
 /**
  * Log the text, two spaces offset is used.
  */
 void Text(const char* aText);
 
 /**
  * Log the accessible object address as message entry (4 spaces indent).
--- a/accessible/base/NotificationController.cpp
+++ b/accessible/base/NotificationController.cpp
@@ -790,20 +790,16 @@ NotificationController::WillRefresh(mozi
     if (!mDocument)
       return;
   }
 
   // Process invalidation list of the document after all accessible tree
   // modification are done.
   mDocument->ProcessInvalidationList();
 
-  // We cannot rely on DOM tree to keep aria-owns relations updated. Make
-  // a validation to remove dead links.
-  mDocument->ValidateARIAOwned();
-
   // Process relocation list.
   for (uint32_t idx = 0; idx < mRelocations.Length(); idx++) {
     if (mRelocations[idx]->IsInDocument()) {
       mDocument->DoARIAOwnsRelocation(mRelocations[idx]);
     }
   }
   mRelocations.Clear();
 
--- a/accessible/generic/DocAccessible.cpp
+++ b/accessible/generic/DocAccessible.cpp
@@ -1967,45 +1967,58 @@ DocAccessible::FireEventsOnInsertion(Acc
         break;
       }
     }
     while ((ancestor = ancestor->Parent()));
   }
 }
 
 void
-DocAccessible::ContentRemoved(Accessible* aContent)
+DocAccessible::ContentRemoved(Accessible* aChild)
 {
-  MOZ_DIAGNOSTIC_ASSERT(aContent->Parent(), "Unattached accessible from tree");
+  Accessible* parent = aChild->Parent();
+  MOZ_DIAGNOSTIC_ASSERT(parent, "Unattached accessible from tree");
 
 #ifdef A11Y_LOG
   logging::TreeInfo("process content removal", 0,
-                    "container", aContent->Parent(), "child", aContent, nullptr);
+                    "container", parent, "child", aChild, nullptr);
 #endif
 
-  TreeMutation mt(aContent->Parent());
-  mt.BeforeRemoval(aContent);
-  aContent->Parent()->RemoveChild(aContent);
-  UncacheChildrenInSubtree(aContent);
+  TreeMutation mt(parent);
+  mt.BeforeRemoval(aChild);
+  MOZ_DIAGNOSTIC_ASSERT(aChild->Parent(), "Unparented #1");
+
+  if (aChild->IsRelocated()) {
+    nsTArray<RefPtr<Accessible> >* owned = mARIAOwnsHash.Get(parent);
+    MOZ_ASSERT(owned, "IsRelocated flag is out of sync with mARIAOwnsHash");
+    owned->RemoveElement(aChild);
+    if (owned->Length() == 0) {
+      mARIAOwnsHash.Remove(parent);
+    }
+  }
+  MOZ_DIAGNOSTIC_ASSERT(aChild->Parent(), "Unparented #2");
+  parent->RemoveChild(aChild);
+  UncacheChildrenInSubtree(aChild);
+
   mt.Done();
 }
 
 void
 DocAccessible::ContentRemoved(nsIContent* aContentNode)
 {
   // If child node is not accessible then look for its accessible children.
   Accessible* acc = GetAccessible(aContentNode);
   if (acc) {
     ContentRemoved(acc);
   }
-  else {
-    TreeWalker walker(this, aContentNode);
-    while (Accessible* acc = walker.Next()) {
-      ContentRemoved(acc);
-    }
+
+  dom::AllChildrenIterator iter =
+    dom::AllChildrenIterator(aContentNode, nsIContent::eAllChildren, true);
+  while (nsIContent* childNode = iter.GetNextChild()) {
+    ContentRemoved(childNode);
   }
 }
 
 bool
 DocAccessible::RelocateARIAOwnedIfNeeded(nsIContent* aElement)
 {
   if (!aElement->HasID())
     return false;
@@ -2023,60 +2036,16 @@ DocAccessible::RelocateARIAOwnedIfNeeded
       }
     }
   }
 
   return false;
 }
 
 void
-DocAccessible::ValidateARIAOwned()
-{
-  for (auto it = mARIAOwnsHash.Iter(); !it.Done(); it.Next()) {
-    Accessible* owner = it.Key();
-    nsTArray<RefPtr<Accessible> >* children = it.UserData();
-
-    // Owner is about to die, put children back if applicable.
-    if (owner != this &&
-        (!mAccessibleCache.GetWeak(reinterpret_cast<void*>(owner)) ||
-         !owner->IsInDocument())) {
-      PutChildrenBack(children, 0);
-      it.Remove();
-      continue;
-    }
-
-    for (uint32_t idx = 0; idx < children->Length(); idx++) {
-      Accessible* child = children->ElementAt(idx);
-      if (!child->IsInDocument()) {
-        children->RemoveElementAt(idx);
-        idx--;
-        continue;
-      }
-
-      NS_ASSERTION(child->Parent(), "No parent for ARIA owned?");
-
-      // If DOM node doesn't have a frame anymore then shutdown its accessible.
-      if (child->Parent() && !child->GetFrame()) {
-        ContentRemoved(child);
-        children->RemoveElementAt(idx);
-        idx--;
-        continue;
-      }
-
-      NS_ASSERTION(child->Parent() == owner,
-                   "Illigally stolen ARIA owned child!");
-    }
-
-    if (children->Length() == 0) {
-      it.Remove();
-    }
-  }
-}
-
-void
 DocAccessible::DoARIAOwnsRelocation(Accessible* aOwner)
 {
   nsTArray<RefPtr<Accessible> >* children = mARIAOwnsHash.LookupOrAdd(aOwner);
 
   MOZ_ASSERT(aOwner, "aOwner must be a valid pointer");
   MOZ_ASSERT(aOwner->Elm(), "aOwner->Elm() must be a valid pointer");
 
 #ifdef A11Y_LOG
@@ -2189,17 +2158,17 @@ DocAccessible::PutChildrenBack(nsTArray<
     int32_t idxInParent = -1;
     Accessible* origContainer = GetContainerAccessible(child->GetContent());
     if (origContainer) {
       TreeWalker walker(origContainer);
       if (walker.Seek(child->GetContent())) {
         Accessible* prevChild = walker.Prev();
         if (prevChild) {
           idxInParent = prevChild->IndexInParent() + 1;
-          MOZ_ASSERT(origContainer == prevChild->Parent(), "Broken tree");
+          MOZ_DIAGNOSTIC_ASSERT(origContainer == prevChild->Parent(), "Broken tree");
           origContainer = prevChild->Parent();
         }
         else {
           idxInParent = 0;
         }
       }
     }
     MoveChild(child, origContainer, idxInParent);
@@ -2220,18 +2189,22 @@ DocAccessible::MoveChild(Accessible* aCh
 #ifdef A11Y_LOG
   logging::TreeInfo("move child", 0,
                     "old parent", curParent, "new parent", aNewParent,
                     "child", aChild, nullptr);
 #endif
 
   // If the child was taken from from an ARIA owns element.
   if (aChild->IsRelocated()) {
-    nsTArray<RefPtr<Accessible> >* children = mARIAOwnsHash.Get(curParent);
-    children->RemoveElement(aChild);
+    nsTArray<RefPtr<Accessible> >* owned = mARIAOwnsHash.Get(curParent);
+    MOZ_ASSERT(owned, "IsRelocated flag is out of sync with mARIAOwnsHash");
+    owned->RemoveElement(aChild);
+    if (owned->Length() == 0) {
+      mARIAOwnsHash.Remove(curParent);
+    }
   }
 
   NotificationController::MoveGuard mguard(mNotificationController);
 
   if (curParent == aNewParent) {
     MOZ_ASSERT(aChild->IndexInParent() != aIdxInParent, "No move case");
     curParent->MoveChild(aIdxInParent, aChild);
 
@@ -2322,20 +2295,29 @@ DocAccessible::CacheChildrenInSubtree(Ac
 }
 
 void
 DocAccessible::UncacheChildrenInSubtree(Accessible* aRoot)
 {
   aRoot->mStateFlags |= eIsNotInDocument;
   RemoveDependentIDsFor(aRoot);
 
+  nsTArray<RefPtr<Accessible> >* owned = mARIAOwnsHash.Get(aRoot);
   uint32_t count = aRoot->ContentChildCount();
   for (uint32_t idx = 0; idx < count; idx++) {
     Accessible* child = aRoot->ContentChildAt(idx);
 
+    if (child->IsRelocated()) {
+      MOZ_ASSERT(owned, "IsRelocated flag is out of sync with mARIAOwnsHash");
+      owned->RemoveElement(child);
+      if (owned->Length() == 0) {
+        mARIAOwnsHash.Remove(aRoot);
+      }
+    }
+
     // Removing this accessible from the document doesn't mean anything about
     // accessibles for subdocuments, so skip removing those from the tree.
     if (!child->IsDoc()) {
       UncacheChildrenInSubtree(child);
     }
   }
 
   if (aRoot->IsNodeMapEntry() &&
--- a/accessible/generic/DocAccessible.h
+++ b/accessible/generic/DocAccessible.h
@@ -339,17 +339,17 @@ public:
    */
   void ContentInserted(nsIContent* aContainerNode,
                        nsIContent* aStartChildNode,
                        nsIContent* aEndChildNode);
 
   /**
    * Update the tree on content removal.
    */
-  void ContentRemoved(Accessible* aContent);
+  void ContentRemoved(Accessible* aAccessible);
   void ContentRemoved(nsIContent* aContentNode);
 
   /**
    * Updates accessible tree when rendered text is changed.
    */
   void UpdateText(nsIContent* aTextNode);
 
   /**
@@ -500,21 +500,16 @@ protected:
    *
    * While children are cached we may encounter the case there's no accessible
    * for referred content by related accessible. Store these related nodes to
    * invalidate their containers later.
    */
   void ProcessInvalidationList();
 
   /**
-   * Validates all aria-owns connections and updates the tree accordingly.
-   */
-  void ValidateARIAOwned();
-
-  /**
    * Steals or puts back accessible subtrees.
    */
   void DoARIAOwnsRelocation(Accessible* aOwner);
 
   /**
    * Moves children back under their original parents.
    */
   void PutChildrenBack(nsTArray<RefPtr<Accessible> >* aChildren,
--- a/accessible/jsat/AccessFu.jsm
+++ b/accessible/jsat/AccessFu.jsm
@@ -1,14 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global AccessFu, Components, Utils, PrefCache, Logger, Services,
-          PointerAdapter, dump, Presentation, Rect */
 /* exported AccessFu */
 
 'use strict';
 
 const {utils: Cu, interfaces: Ci} = Components;
 
 this.EXPORTED_SYMBOLS = ['AccessFu']; // jshint ignore:line
 
--- a/accessible/jsat/EventManager.jsm
+++ b/accessible/jsat/EventManager.jsm
@@ -93,17 +93,16 @@ this.EventManager.prototype = {
     Logger.debug(() => {
       return ['DOMEvent', aEvent.type];
     });
 
     try {
       switch (aEvent.type) {
       case 'wheel':
       {
-        let attempts = 0;
         let delta = aEvent.deltaX || aEvent.deltaY;
         this.contentControl.autoMove(
          null,
          { moveMethod: delta > 0 ? 'moveNext' : 'movePrevious',
            onScreenOnly: true, noOpIfOnScreen: true, delay: 500 });
         break;
       }
       case 'scroll':
@@ -266,17 +265,16 @@ this.EventManager.prototype = {
           this._handleText(aEvent, liveRegion, isPolite);
         }
         break;
       }
       case Events.FOCUS:
       {
         // Put vc where the focus is at
         let acc = aEvent.accessible;
-        let doc = aEvent.accessibleDocument;
         this._setEditingMode(aEvent);
         if ([Roles.CHROME_WINDOW,
              Roles.DOCUMENT,
              Roles.APPLICATION].indexOf(acc.role) < 0) {
           this.contentControl.autoMove(acc);
        }
 
        if (this.inTest) {
@@ -481,17 +479,17 @@ this.EventManager.prototype = {
         liveAttrs = parseLiveAttrs(parent);
         if (liveAttrs) {
           return liveAttrs;
         }
         parent = parent.parent
       }
       return {};
     };
-    let {live, relevant, busy, atomic, memberOf} = getLiveAttributes(aEvent);
+    let {live, relevant, /* busy, atomic, memberOf */ } = getLiveAttributes(aEvent);
     // If container-live is not present or is set to |off| ignore the event.
     if (!live || live === 'off') {
       return {};
     }
     // XXX: support busy and atomic.
 
     // Determine if the type of the mutation is relevant. Default is additions
     // and text.
--- a/accessible/jsat/Gestures.jsm
+++ b/accessible/jsat/Gestures.jsm
@@ -1,13 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global Components, GestureSettings, XPCOMUtils, Utils, Promise, Logger */
 /* exported GestureSettings, GestureTracker */
 
 /******************************************************************************
   All gestures have the following pathways when being resolved(v)/rejected(x):
                Tap -> DoubleTap        (x)
                    -> Dwell            (x)
                    -> Swipe            (x)
 
--- a/accessible/jsat/OutputGenerator.jsm
+++ b/accessible/jsat/OutputGenerator.jsm
@@ -1,13 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global Components, XPCOMUtils, Utils, PrefCache, States, Roles, Logger */
 /* exported UtteranceGenerator, BrailleGenerator */
 
 'use strict';
 
 const {utils: Cu, interfaces: Ci} = Components;
 
 const INCLUDE_DESC = 0x01;
 const INCLUDE_NAME = 0x02;
--- a/accessible/jsat/PointerAdapter.jsm
+++ b/accessible/jsat/PointerAdapter.jsm
@@ -1,14 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global Components, XPCOMUtils, Utils, Logger, GestureSettings,
-   GestureTracker */
 /* exported PointerRelay, PointerAdapter */
 
 'use strict';
 
 const Ci = Components.interfaces;
 const Cu = Components.utils;
 
 this.EXPORTED_SYMBOLS = ['PointerRelay', 'PointerAdapter']; // jshint ignore:line
--- a/accessible/jsat/Presentation.jsm
+++ b/accessible/jsat/Presentation.jsm
@@ -1,14 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global Components, XPCOMUtils, Utils, Logger, BraillePresenter, Presentation,
-          UtteranceGenerator, BrailleGenerator, States, Roles, PivotContext */
 /* exported Presentation */
 
 'use strict';
 
 const {utils: Cu, interfaces: Ci} = Components;
 
 Cu.import('resource://gre/modules/XPCOMUtils.jsm');
 Cu.import('resource://gre/modules/accessibility/Utils.jsm');
--- a/accessible/jsat/Traversal.jsm
+++ b/accessible/jsat/Traversal.jsm
@@ -1,14 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global PrefCache, Roles, Prefilters, States, Filters, Utils,
-   TraversalRules, Components, XPCOMUtils */
 /* exported TraversalRules, TraversalHelper */
 
 'use strict';
 
 const Ci = Components.interfaces;
 const Cu = Components.utils;
 
 this.EXPORTED_SYMBOLS = ['TraversalRules', 'TraversalHelper']; // jshint ignore:line
--- a/accessible/jsat/Utils.jsm
+++ b/accessible/jsat/Utils.jsm
@@ -1,14 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global Components, XPCOMUtils, Services, PluralForm, Logger, Rect, Utils,
-          States, Relations, Roles, dump, Events, PivotContext, PrefCache */
 /* exported Utils, Logger, PivotContext, PrefCache */
 
 'use strict';
 
 const {classes: Cc, utils: Cu, interfaces: Ci} = Components;
 
 Cu.import('resource://gre/modules/XPCOMUtils.jsm');
 XPCOMUtils.defineLazyModuleGetter(this, 'Services', // jshint ignore:line
--- a/accessible/jsat/content-script.js
+++ b/accessible/jsat/content-script.js
@@ -1,12 +1,14 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
+/* eslint-env mozilla/frame-script */
+
 var Ci = Components.interfaces;
 var Cu = Components.utils;
 
 Cu.import('resource://gre/modules/XPCOMUtils.jsm');
 XPCOMUtils.defineLazyModuleGetter(this, 'Logger',
   'resource://gre/modules/accessibility/Utils.jsm');
 XPCOMUtils.defineLazyModuleGetter(this, 'Presentation',
   'resource://gre/modules/accessibility/Presentation.jsm');
--- a/accessible/tests/browser/.eslintrc.js
+++ b/accessible/tests/browser/.eslintrc.js
@@ -1,190 +1,100 @@
 "use strict";
 
-module.exports = { // eslint-disable-line no-undef
+module.exports = {
   "extends": [
     "plugin:mozilla/browser-test"
   ],
-  // All globals made available in the test environment.
-  "globals": {
-    // Content scripts have global 'content' object
-    "content": true,
-
-    "add_task": true,
-
-    // Defined in accessible/tests/mochitest/ common.js, name.js, states.js
-    "prettyName": true,
-    "statesToString": true,
-    "eventTypeToString": true,
-    "testAttrs": true,
-    "testAbsentAttrs": true,
-    "testName": true,
-    "testDescr": true,
-    "testStates": true,
-    "testRelation": true,
-    "testValue": true,
-    "testAccessibleTree": true,
-    "isAccessible": true,
-    "getAccessibleDOMNodeID": true,
-
-    // Defined for all top level accessibility browser tests.
-    "setE10sPrefs": true,
-    "unsetE10sPrefs": true,
-    "initPromise": true,
-    "shutdownPromise": true,
-    "forceGC": true,
-
-    // Defined for all e10s accessibility browser tests.
-    "addAccessibleTask": true,
-    "BrowserTestUtils": true,
-    "ContentTask": true,
-    "gBrowser": true,
-    "isDefunct": true,
-    "loadScripts": true,
-    "loadFrameScripts": true,
-    "Logger": true,
-    "MOCHITESTS_DIR": true,
-    "waitForEvent": true,
-    "waitForMultipleEvents": true,
-    "invokeSetAttribute": true,
-    "invokeSetStyle": true,
-    "invokeFocus": true,
-    "findAccessibleChildByID": true
-  },
   "rules": {
-    "mozilla/no-aArgs": "warn",
-    "mozilla/no-cpows-in-tests": "warn",
-    "mozilla/reject-importGlobalProperties": "warn",
-    "mozilla/var-only-at-top-level": "warn",
+    "mozilla/no-aArgs": "error",
+    "mozilla/no-cpows-in-tests": "error",
+    "mozilla/reject-importGlobalProperties": "error",
+    "mozilla/var-only-at-top-level": "error",
 
     "block-scoped-var": "error",
-    "brace-style": ["error", "1tbs"],
     "camelcase": "error",
     "comma-dangle": ["error", "never"],
-    "comma-spacing": "error",
     "comma-style": ["error", "last"],
     "complexity": ["error", 20],
     "consistent-this": "off",
     "curly": ["error", "multi-line"],
     "default-case": "off",
     "dot-location": ["error", "property"],
     "dot-notation": "error",
-    "eol-last": "error",
     "eqeqeq": "off",
-    "func-call-spacing": "error",
     "func-names": "off",
     "func-style": "off",
-    "generator-star": "off",
-    "global-strict": "off",
+    "generator-star-spacing": "off",
     "handle-callback-err": ["error", "er"],
     "indent": ["error", 2, {"SwitchCase": 1}],
-    "key-spacing": ["error", {"beforeColon": false, "afterColon": true}],
-    "linebreak-style": "off",
-    "max-depth": "off",
     "max-nested-callbacks": ["error", 4],
     "max-params": "off",
     "max-statements": "off",
     "new-cap": ["error", {"capIsNew": false}],
     "new-parens": "error",
     "no-array-constructor": "error",
     "no-bitwise": "off",
     "no-caller": "error",
     "no-catch-shadow": "error",
     "no-comma-dangle": "off",
-    "no-cond-assign": "error",
     "no-console": "off",
     "no-constant-condition": "off",
     "no-continue": "off",
     "no-control-regex": "error",
-    "no-debugger": "error",
-    "no-delete-var": "error",
     "no-div-regex": "off",
-    "no-dupe-args": "error",
-    "no-dupe-keys": "error",
-    "no-duplicate-case": "error",
-    "no-else-return": "error",
-    "no-empty": "error",
-    "no-empty-character-class": "error",
     "no-eval": "error",
-    "no-ex-assign": "error",
     "no-extend-native": "error",
-    "no-extra-bind": "error",
-    "no-extra-boolean-cast": "error",
     "no-extra-parens": "off",
     "no-extra-semi": "error",
     "no-extra-strict": "off",
     "no-fallthrough": "error",
     "no-floating-decimal": "off",
     "no-inline-comments": "off",
-    "no-lonely-if": "error",
     "no-mixed-requires": "off",
-    "no-mixed-spaces-and-tabs": "error",
-    "no-multi-spaces": "error",
     "no-multi-str": "error",
     "no-multiple-empty-lines": ["error", {"max": 1}],
-    "no-native-reassign": "error",
-    "no-nested-ternary": "error",
     "no-new-require": "off",
-    "no-octal": "error",
     "no-param-reassign": "off",
     "no-path-concat": "off",
     "no-plusplus": "off",
     "no-process-env": "off",
     "no-process-exit": "off",
     "no-proto": "error",
-    "no-redeclare": "error",
-    "no-regex-spaces": "error",
     "no-reserved-keys": "off",
     "no-restricted-modules": "off",
     "no-return-assign": "error",
     "no-script-url": "off",
-    "no-self-compare": "error",
     "no-sequences": "error",
     "no-shadow": "error",
-    "no-shadow-restricted-names": "error",
     "no-space-before-semi": "off",
     "no-sparse-arrays": "error",
     "no-sync": "off",
     "no-ternary": "off",
     "no-throw-literal": "error",
-    "no-trailing-spaces": "error",
-    "no-undef": "error",
     "no-underscore-dangle": "off",
     "no-undefined": "off",
     "no-unneeded-ternary": "error",
-    "no-unreachable": "error",
     "no-unused-vars": ["error", {"vars": "all", "args": "none"}],
     "no-use-before-define": "off",
     "no-var": "off",
     "no-warning-comments": "off",
-    "no-with": "error",
     "object-shorthand": "off",
     "one-var": ["error", "never"],
     "padded-blocks": ["error", "never"],
     "quote-props": "off",
     "radix": "error",
     "semi": ["error", "always"],
     "semi-spacing": ["error", {"before": false, "after": true}],
     "sort-vars": "off",
-    "space-after-function-name": "off",
-    "keyword-spacing": "error",
-    "space-before-blocks": "error",
-    "space-before-function-parentheses": "off",
-    "space-before-function-paren": ["error", "never"],
     "space-in-brackets": "off",
     "space-in-parens": ["error", "never"],
-    "space-infix-ops": ["error", {"int32Hint": true}],
-    "space-unary-ops": ["error", { "words": true, "nonwords": false }],
     "space-unary-word-ops": "off",
-    "spaced-comment": ["error", "always"],
     "strict": ["error", "global"],
-    "use-isnan": "error",
     "valid-jsdoc": "off",
-    "valid-typeof": "error",
     "vars-on-top": "off",
     "wrap-iife": "off",
     "wrap-regex": "off",
     "yoda": "error",
 
     "guard-for-in": "off",
     "newline-after-var": "off",
     "no-alert": "off",
--- a/accessible/tests/browser/e10s/browser_caching_attributes.js
+++ b/accessible/tests/browser/e10s/browser_caching_attributes.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_FOCUS */
-
+/* import-globals-from ../../mochitest/attributes.js */
 loadScripts({ name: 'attributes.js', dir: MOCHITESTS_DIR });
 
 /**
  * Default textbox accessible attributes.
  */
 const defaultAttributes = {
   'margin-top': '0px',
   'margin-right': '0px',
--- a/accessible/tests/browser/e10s/browser_caching_description.js
+++ b/accessible/tests/browser/e10s/browser_caching_description.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_DESCRIPTION_CHANGE, EVENT_NAME_CHANGE, EVENT_REORDER */
-
+/* import-globals-from ../../mochitest/name.js */
 loadScripts({ name: 'name.js', dir: MOCHITESTS_DIR });
 
 /**
  * Test data has the format of:
  * {
  *   desc      {String}   description for better logging
  *   expected  {String}   expected description value for a given accessible
  *   attrs     {?Array}   an optional list of attributes to update
--- a/accessible/tests/browser/e10s/browser_caching_name.js
+++ b/accessible/tests/browser/e10s/browser_caching_name.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER, EVENT_TEXT_INSERTED */
-
+/* import-globals-from ../../mochitest/name.js */
 loadScripts({ name: 'name.js', dir: MOCHITESTS_DIR });
 
 /**
  * Rules for name tests that are inspired by
  *   accessible/tests/mochitest/name/markuprules.xul
  *
  * Each element in the list of rules represents a name calculation rule for a
  * particular test case.
--- a/accessible/tests/browser/e10s/browser_caching_relations.js
+++ b/accessible/tests/browser/e10s/browser_caching_relations.js
@@ -1,18 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global RELATION_LABELLED_BY, RELATION_LABEL_FOR, RELATION_DESCRIBED_BY,
-          RELATION_DESCRIPTION_FOR, RELATION_CONTROLLER_FOR,
-          RELATION_CONTROLLED_BY, RELATION_FLOWS_TO, RELATION_FLOWS_FROM */
-
+/* import-globals-from ../../mochitest/relations.js */
 loadScripts({ name: 'relations.js', dir: MOCHITESTS_DIR });
 
 /**
  * A test specification that has the following format:
  * [
  *   attr                 relevant aria attribute
  *   hostRelation         corresponding host relation type
  *   dependantRelation    corresponding dependant relation type
--- a/accessible/tests/browser/e10s/browser_caching_states.js
+++ b/accessible/tests/browser/e10s/browser_caching_states.js
@@ -1,17 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_STATE_CHANGE, STATE_CHECKED, STATE_BUSY, STATE_REQUIRED,
-          STATE_INVALID, EXT_STATE_ENABLED */
-
+/* import-globals-from ../../mochitest/role.js */
+/* import-globals-from ../../mochitest/states.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR },
             { name: 'states.js', dir: MOCHITESTS_DIR });
 
 /**
  * Test data has the format of:
  * {
  *   desc      {String}   description for better logging
  *   expected  {Array}    expected states for a given accessible that have the
--- a/accessible/tests/browser/e10s/browser_caching_value.js
+++ b/accessible/tests/browser/e10s/browser_caching_value.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global nsIAccessibleValue, EVENT_VALUE_CHANGE, EVENT_TEXT_VALUE_CHANGE */
-
+/* import-globals-from ../../mochitest/value.js */
 loadScripts({ name: 'value.js', dir: MOCHITESTS_DIR });
 
 /**
  * Test data has the format of:
  * {
  *   desc      {String}       description for better logging
  *   id        {String}       given accessible DOMNode ID
  *   expected  {String}       expected value for a given accessible
--- a/accessible/tests/browser/e10s/browser_events_caretmove.js
+++ b/accessible/tests/browser/e10s/browser_events_caretmove.js
@@ -1,14 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global EVENT_TEXT_CARET_MOVED, nsIAccessibleCaretMoveEvent */
-
 'use strict';
 
 /**
  * Test caret move event and its interface:
  *   - caretOffset
  */
 addAccessibleTask('<input id="textbox" value="hello"/>', function*(browser) {
   let onCaretMoved = waitForEvent(EVENT_TEXT_CARET_MOVED, 'textbox');
--- a/accessible/tests/browser/e10s/browser_events_hide.js
+++ b/accessible/tests/browser/e10s/browser_events_hide.js
@@ -1,14 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global EVENT_HIDE */
-
 'use strict';
 
 /**
  * Test hide event and its interface:
  *   - targetParent
  *   - targetNextSibling
  *   - targetPrevSibling
  */
--- a/accessible/tests/browser/e10s/browser_events_show.js
+++ b/accessible/tests/browser/e10s/browser_events_show.js
@@ -1,14 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global EVENT_SHOW */
-
 'use strict';
 
 /**
  * Test show event
  */
 addAccessibleTask('<div id="div" style="visibility: hidden;"></div>',
   function*(browser) {
     let onShow = waitForEvent(EVENT_SHOW, 'div');
--- a/accessible/tests/browser/e10s/browser_events_statechange.js
+++ b/accessible/tests/browser/e10s/browser_events_statechange.js
@@ -1,17 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global STATE_CHECKED, EXT_STATE_EDITABLE, nsIAccessibleStateChangeEvent,
-          EVENT_STATE_CHANGE */
-
 'use strict';
 
+/* import-globals-from ../../mochitest/role.js */
+/* import-globals-from ../../mochitest/states.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR },
             { name: 'states.js', dir: MOCHITESTS_DIR });
 
 function checkStateChangeEvent(event, state, isExtraState, isEnabled) {
   let scEvent = event.QueryInterface(nsIAccessibleStateChangeEvent);
   is(scEvent.state, state, 'Correct state of the statechange event.');
   is(scEvent.isExtraState, isExtraState,
     'Correct extra state bit of the statechange event.');
--- a/accessible/tests/browser/e10s/browser_events_textchange.js
+++ b/accessible/tests/browser/e10s/browser_events_textchange.js
@@ -1,15 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global EVENT_TEXT_INSERTED, EVENT_TEXT_REMOVED,
-          nsIAccessibleTextChangeEvent */
-
 'use strict';
 
 function checkTextChangeEvent(event, id, text, start, end, isInserted, isFromUserInput) {
   let tcEvent = event.QueryInterface(nsIAccessibleTextChangeEvent);
   is(tcEvent.start, start, `Correct start offset for ${prettyName(id)}`);
   is(tcEvent.length, end - start, `Correct length for ${prettyName(id)}`);
   is(tcEvent.isInserted, isInserted,
     `Correct isInserted flag for ${prettyName(id)}`);
--- a/accessible/tests/browser/e10s/browser_treeupdate_ariadialog.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_ariadialog.js
@@ -1,17 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_SHOW, ROLE_DIALOG, ROLE_PUSHBUTTON, ROLE_TEXT_LEAF, ROLE_ENTRY,
-          ROLE_DOCUMENT */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 // Test ARIA Dialog
 addAccessibleTask('doc_treeupdate_ariadialog.html', function*(browser, accDoc) {
   testAccessibleTree(accDoc, {
     role: ROLE_DOCUMENT,
     children: [ ]
   });
--- a/accessible/tests/browser/e10s/browser_treeupdate_ariaowns.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_ariaowns.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 function* testContainer1(browser, accDoc) {
   const id = 't1_container';
   const docID = getAccessibleDOMNodeID(accDoc);
   const acc = findAccessibleChildByID(accDoc, id);
 
   /* ================= Initial tree test ==================================== */
--- a/accessible/tests/browser/e10s/browser_treeupdate_canvas.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_canvas.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_SHOW */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 addAccessibleTask(`
   <canvas id="canvas">
     <div id="dialog" role="dialog" style="display: none;"></div>
   </canvas>`, function*(browser, accDoc) {
   let canvas = findAccessibleChildByID(accDoc, 'canvas');
   let dialog = findAccessibleChildByID(accDoc, 'dialog');
--- a/accessible/tests/browser/e10s/browser_treeupdate_cssoverflow.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_cssoverflow.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 addAccessibleTask(`
   <div id="container"><div id="scrollarea" style="overflow:auto;"><input>
   </div></div>
   <div id="container2"><div id="scrollarea2" style="overflow:hidden;">
   </div></div>`, function*(browser, accDoc) {
   const id1 = 'container';
--- a/accessible/tests/browser/e10s/browser_treeupdate_doc.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_doc.js
@@ -1,17 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global ROLE_PUSHBUTTON, ROLE_TEXT_LEAF, EVENT_REORDER, ROLE_DOCUMENT,
-          nsIAccessibleDocument */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 const iframeSrc = `data:text/html,
   <html>
     <head>
       <meta charset='utf-8'/>
       <title>Inner Iframe</title>
     </head>
--- a/accessible/tests/browser/e10s/browser_treeupdate_gencontent.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_gencontent.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 addAccessibleTask(`
   <style>
     .gentext:before {
       content: "START"
     }
     .gentext:after {
--- a/accessible/tests/browser/e10s/browser_treeupdate_hidden.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_hidden.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 function* setHidden(browser, value) {
   let onReorder = waitForEvent(EVENT_REORDER, 'container');
   yield invokeSetAttribute(browser, 'child', 'hidden', value);
   yield onReorder;
 }
 
--- a/accessible/tests/browser/e10s/browser_treeupdate_imagemap.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_imagemap.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER, ROLE_LINK */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 function* testImageMap(browser, accDoc) {
   const id = 'imgmap';
   const acc = findAccessibleChildByID(accDoc, id);
 
   /* ================= Initial tree test ==================================== */
   let tree = {
--- a/accessible/tests/browser/e10s/browser_treeupdate_list.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_list.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global ROLE_TEXT_LEAF, EVENT_REORDER, ROLE_STATICTEXT, ROLE_LISTITEM */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 function* setDisplayAndWaitForReorder(browser, value) {
   let onReorder = waitForEvent(EVENT_REORDER, 'ul');
   yield invokeSetStyle(browser, 'li', 'display', value);
   return yield onReorder;
 }
 
--- a/accessible/tests/browser/e10s/browser_treeupdate_list_editabledoc.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_list_editabledoc.js
@@ -1,17 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global ROLE_TEXT_LEAF, EVENT_REORDER, ROLE_LISTITEM, ROLE_LIST,
-          ROLE_STATICTEXT */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 addAccessibleTask('<ol id="list"></ol>', function*(browser, accDoc) {
   let list = findAccessibleChildByID(accDoc, 'list');
 
   testAccessibleTree(list, {
     role: ROLE_LIST,
     children: [ ]
--- a/accessible/tests/browser/e10s/browser_treeupdate_listener.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_listener.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 addAccessibleTask('<span id="parent"><span id="child"></span></span>',
   function*(browser, accDoc) {
     is(findAccessibleChildByID(accDoc, 'parent'), null,
       'Check that parent is not accessible.');
     is(findAccessibleChildByID(accDoc, 'child'), null,
       'Check that child is not accessible.');
--- a/accessible/tests/browser/e10s/browser_treeupdate_optgroup.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_optgroup.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 addAccessibleTask('<select id="select"></select>', function*(browser, accDoc) {
   let select = findAccessibleChildByID(accDoc, 'select');
 
   let onEvent = waitForEvent(EVENT_REORDER, 'select');
   // Create a combobox with grouping and 2 standalone options
   yield ContentTask.spawn(browser, {}, () => {
--- a/accessible/tests/browser/e10s/browser_treeupdate_removal.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_removal.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 addAccessibleTask('doc_treeupdate_removal.xhtml', function*(browser, accDoc) {
   ok(isAccessible(findAccessibleChildByID(accDoc, 'the_table')),
     'table should be accessible');
 
   // Move the_table element into hidden subtree.
   let onReorder = waitForEvent(EVENT_REORDER, 'body');
--- a/accessible/tests/browser/e10s/browser_treeupdate_table.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_table.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 addAccessibleTask(`
   <table id="table">
     <tr>
       <td>cell1</td>
       <td>cell2</td>
     </tr>
--- a/accessible/tests/browser/e10s/browser_treeupdate_textleaf.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_textleaf.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER, ROLE_TEXT_CONTAINER ROLE_PARAGRAPH, ROLE_TEXT_LEAF */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 function* removeTextData(browser, accessible, id, role) {
   let tree = {
     role: role,
     children: [ { role: ROLE_TEXT_LEAF, name: "text" } ]
   };
   testAccessibleTree(accessible, tree);
--- a/accessible/tests/browser/e10s/browser_treeupdate_visibility.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_visibility.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 function* testTreeOnHide(browser, accDoc, containerID, id, before, after) {
   let acc = findAccessibleChildByID(accDoc, containerID);
   testAccessibleTree(acc, before);
 
   let onReorder = waitForEvent(EVENT_REORDER, containerID);
   yield invokeSetStyle(browser, id, 'visibility', 'hidden');
--- a/accessible/tests/browser/e10s/browser_treeupdate_whitespace.js
+++ b/accessible/tests/browser/e10s/browser_treeupdate_whitespace.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_REORDER */
-
+/* import-globals-from ../../mochitest/role.js */
 loadScripts({ name: 'role.js', dir: MOCHITESTS_DIR });
 
 addAccessibleTask('doc_treeupdate_whitespace.html', function*(browser, accDoc) {
   let container1 = findAccessibleChildByID(accDoc, 'container1');
   let container2Parent = findAccessibleChildByID(accDoc, 'container2-parent');
 
   let tree = {
     SECTION: [
--- a/accessible/tests/browser/e10s/events.js
+++ b/accessible/tests/browser/e10s/events.js
@@ -1,16 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global nsIAccessibleEvent, nsIAccessibleDocument,
-          nsIAccessibleStateChangeEvent, nsIAccessibleTextChangeEvent */
+// This is loaded by head.js, so has the same globals, hence we import the
+// globals from there.
+/* import-globals-from head.js */
 
 /* exported EVENT_REORDER, EVENT_SHOW, EVENT_TEXT_INSERTED, EVENT_TEXT_REMOVED,
             EVENT_DOCUMENT_LOAD_COMPLETE, EVENT_HIDE, EVENT_TEXT_CARET_MOVED,
             EVENT_DESCRIPTION_CHANGE, EVENT_NAME_CHANGE, EVENT_STATE_CHANGE,
             EVENT_VALUE_CHANGE, EVENT_TEXT_VALUE_CHANGE, EVENT_FOCUS,
             waitForEvent, waitForMultipleEvents */
 
 const EVENT_DOCUMENT_LOAD_COMPLETE = nsIAccessibleEvent.EVENT_DOCUMENT_LOAD_COMPLETE;
--- a/accessible/tests/browser/e10s/head.js
+++ b/accessible/tests/browser/e10s/head.js
@@ -1,19 +1,18 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* global EVENT_DOCUMENT_LOAD_COMPLETE, CURRENT_CONTENT_DIR, loadFrameScripts */
-
-/* exported addAccessibleTask */
+/* exported addAccessibleTask, findAccessibleChildByID, isDefunct */
 
 // Load the shared-head file first.
+/* import-globals-from ../shared-head.js */
 Services.scriptloader.loadSubScript(
   'chrome://mochitests/content/browser/accessible/tests/browser/shared-head.js',
   this);
 
 /**
  * A wrapper around browser test add_task that triggers an accessible test task
  * as a new browser test task with given document, data URL or markup snippet.
  * @param  {String}             doc    URL (relative to current directory) or
@@ -74,11 +73,53 @@ function addAccessibleTask(doc, task) {
       Logger.log(`Actually remote browser: ${browser.isRemoteBrowser}`);
 
       let event = yield onDocLoad;
       yield task(browser, event.accessible);
     });
   });
 }
 
+/**
+ * Check if an accessible object has a defunct test.
+ * @param  {nsIAccessible}  accessible object to test defunct state for
+ * @return {Boolean}        flag indicating defunct state
+ */
+function isDefunct(accessible) {
+  let defunct = false;
+  try {
+    let extState = {};
+    accessible.getState({}, extState);
+    defunct = extState.value & Ci.nsIAccessibleStates.EXT_STATE_DEFUNCT;
+  } catch (x) {
+    defunct = true;
+  } finally {
+    if (defunct) {
+      Logger.log(`Defunct accessible: ${prettyName(accessible)}`);
+    }
+  }
+  return defunct;
+}
+
+/**
+ * Traverses the accessible tree starting from a given accessible as a root and
+ * looks for an accessible that matches based on its DOMNode id.
+ * @param  {nsIAccessible}  accessible root accessible
+ * @param  {String}         id         id to look up accessible for
+ * @return {nsIAccessible?}            found accessible if any
+ */
+function findAccessibleChildByID(accessible, id) {
+  if (getAccessibleDOMNodeID(accessible) === id) {
+    return accessible;
+  }
+  for (let i = 0; i < accessible.children.length; ++i) {
+    let found = findAccessibleChildByID(accessible.getChildAt(i), id);
+    if (found) {
+      return found;
+    }
+  }
+}
+
 // Loading and common.js from accessible/tests/mochitest/ for all tests, as
 // well as events.js.
+/* import-globals-from ../../mochitest/common.js */
+/* import-globals-from events.js */
 loadScripts({ name: 'common.js', dir: MOCHITESTS_DIR }, 'e10s/events.js');
--- a/accessible/tests/browser/head.js
+++ b/accessible/tests/browser/head.js
@@ -28,16 +28,17 @@ function setE10sPrefs() {
  */
 function unsetE10sPrefs() {
   return new Promise(resolve => {
     SpecialPowers.popPrefEnv(resolve);
   });
 }
 
 // Load the shared-head file first.
+/* import-globals-from shared-head.js */
 Services.scriptloader.loadSubScript(
   'chrome://mochitests/content/browser/accessible/tests/browser/shared-head.js',
   this);
 
 /**
  * Returns a promise that resolves when 'a11y-init-or-shutdown' event is fired.
  * @return {Promise} event promise evaluating to event's data
  */
--- a/accessible/tests/browser/shared-head.js
+++ b/accessible/tests/browser/shared-head.js
@@ -1,16 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 'use strict';
 
-/* exported Logger, MOCHITESTS_DIR, isDefunct, invokeSetAttribute, invokeFocus,
-            invokeSetStyle, findAccessibleChildByID, getAccessibleDOMNodeID,
+/* exported Logger, MOCHITESTS_DIR, invokeSetAttribute, invokeFocus,
+            invokeSetStyle, getAccessibleDOMNodeID,
             CURRENT_CONTENT_DIR, loadScripts, loadFrameScripts, Cc, Cu */
 
 const { interfaces: Ci, utils: Cu, classes: Cc } = Components;
 
 /**
  * Current browser test directory path used to load subscripts.
  */
 const CURRENT_DIR =
@@ -73,37 +73,16 @@ let Logger = {
   logToAppConsole(msg) {
     if (this.dumpToAppConsole) {
       Services.console.logStringMessage(`${msg}`);
     }
   }
 };
 
 /**
- * Check if an accessible object has a defunct test.
- * @param  {nsIAccessible}  accessible object to test defunct state for
- * @return {Boolean}        flag indicating defunct state
- */
-function isDefunct(accessible) {
-  let defunct = false;
-  try {
-    let extState = {};
-    accessible.getState({}, extState);
-    defunct = extState.value & Ci.nsIAccessibleStates.EXT_STATE_DEFUNCT;
-  } catch (x) {
-    defunct = true;
-  } finally {
-    if (defunct) {
-      Logger.log(`Defunct accessible: ${prettyName(accessible)}`);
-    }
-  }
-  return defunct;
-}
-
-/**
  * Asynchronously set or remove content element's attribute (in content process
  * if e10s is enabled).
  * @param  {Object}  browser  current "tabbrowser" element
  * @param  {String}  id       content element id
  * @param  {String}  attr     attribute name
  * @param  {String?} value    optional attribute value, if not present, remove
  *                            attribute
  * @return {Promise}          promise indicating that attribute is set/removed
@@ -167,35 +146,16 @@ function invokeFocus(browser, id) {
         elm instanceof Ci.nsIDOMXULTextBoxElement) {
       elm.selectionStart = elm.selectionEnd = elm.value.length;
     }
     elm.focus();
   });
 }
 
 /**
- * Traverses the accessible tree starting from a given accessible as a root and
- * looks for an accessible that matches based on its DOMNode id.
- * @param  {nsIAccessible}  accessible root accessible
- * @param  {String}         id         id to look up accessible for
- * @return {nsIAccessible?}            found accessible if any
- */
-function findAccessibleChildByID(accessible, id) {
-  if (getAccessibleDOMNodeID(accessible) === id) {
-    return accessible;
-  }
-  for (let i = 0; i < accessible.children.length; ++i) {
-    let found = findAccessibleChildByID(accessible.getChildAt(i), id);
-    if (found) {
-      return found;
-    }
-  }
-}
-
-/**
  * Load a list of scripts into the test
  * @param {Array} scripts  a list of scripts to load
  */
 function loadScripts(...scripts) {
   for (let script of scripts) {
     let path = typeof script === 'string' ? `${CURRENT_DIR}${script}` :
       `${script.dir}${script.name}`;
     Services.scriptloader.loadSubScript(path, this);
new file mode 100644
--- /dev/null
+++ b/accessible/tests/crashtests/.eslintrc.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = {
+  "extends": [
+    "plugin:mozilla/mochitest-test"
+  ],
+};
--- a/accessible/tests/crashtests/448064.xhtml
+++ b/accessible/tests/crashtests/448064.xhtml
@@ -15,56 +15,56 @@
 </div>
 
 <input id="mw_a"/>
 
 
 <script>
 function dumpAccessibleNode(aNode, level) {
 	var msg = "";
-	
+
 	try {
 		msg += "name=\"" + aNode.name + "\" ";
 	} catch (e) {
 		msg += " noName ";
 	}
-	
+
 	dump(msg + '\n');
 }
 
 
 function dumpAccessibleTree(aNode, level) {
 	level = level || 0;
 
 	dumpAccessibleNode(aNode, level);
-	try {	
+	try {
 		var child = aNode.firstChild;
 		while (child) {
 			dumpAccessibleTree(child, level + 1);
 			child = child.nextSibling;
 		}
 	} catch (e) {
 		dump("Error visiting child nodes: " + e + '\n');
 	}
 }
 
-function A(o) { 
+function A(o) {
   var acc = SpecialPowers.Cc['@mozilla.org/accessibilityService;1']
                          .getService(SpecialPowers.Ci.nsIAccessibilityService);
   return acc.getAccessibleFor(o);
 }
 
 function beginAccessible() {
-  dumpAccessibleTree(A(document),0);
+  dumpAccessibleTree(A(document), 0);
 }
 setTimeout(beginAccessible, 100);
 
 
 setTimeout(doe, 200);
 function doe() {
    document.getElementById('mw_a').appendChild(document.getElementById('mw_b'));
    document.getElementById('mw_c').appendChild(document.getElementById('mw_d'));
-   document.getElementById('mw_e').appendChild(document.getElementById('mw_f')); 
-   document.getElementById('mw_g').appendChild(document.getElementById('mw_b')); 
+   document.getElementById('mw_e').appendChild(document.getElementById('mw_f'));
+   document.getElementById('mw_g').appendChild(document.getElementById('mw_b'));
 }
 </script>
 </body>
-</html>
\ No newline at end of file
+</html>
new file mode 100644
--- /dev/null
+++ b/accessible/tests/mochitest/.eslintrc.js
@@ -0,0 +1,24 @@
+"use strict";
+
+module.exports = {
+  "extends": [
+    "plugin:mozilla/mochitest-test"
+  ],
+  "rules": {
+    "mozilla/no-cpows-in-tests": "error",
+    "mozilla/reject-importGlobalProperties": "error",
+
+    // XXX These are rules that are enabled in the recommended configuration, but
+    // disabled here due to failures when initially implemented. They should be
+    // removed (and hence enabled) at some stage.
+    "comma-spacing": "off",
+    "no-cond-assign": "off",
+    "no-lonely-if": "off",
+    "no-nested-ternary": "off",
+    "no-new-object": "off",
+    "no-redeclare": "off",
+    "no-shadow": "off",
+    "no-undef": "off",
+    "space-unary-ops": "off",
+  }
+};
--- a/accessible/tests/mochitest/actions.js
+++ b/accessible/tests/mochitest/actions.js
@@ -36,17 +36,17 @@ const XUL_EVENTS = CLICK_EVENTS | COMMAN
  *    get targetID() {},
  *
  *    // [optional] perform checks when 'click' event is handled if 'events'
  *    // is used.
  *    checkOnClickEvent: function() {},
  *
  *    // [optional] an array of invoker's checker objects (see eventQueue
  *    // constructor events.js)
- *    get eventSeq() {} 
+ *    get eventSeq() {}
  *  };
  *
  *
  * @param  aArray [in] an array of action cheker objects
  */
 function testActions(aArray)
 {
   gActionsQueue = new eventQueue();
@@ -129,17 +129,17 @@ function actionInvoker(aAccOrElmOrId, aA
       return INVOKER_ACTION_FAILED;
 
     is(acc.getActionName(aActionIndex), aActionName,
        "Wrong action name of the accessible for " + prettyName(aAccOrElmOrId));
 
     try {
       acc.doAction(aActionIndex);
     }
-    catch (e){
+    catch (e) {
       ok(false, "doAction(" + aActionIndex + ") failed with: " + e.name);
       return INVOKER_ACTION_FAILED;
     }
   }
 
   this.eventSeq = aEventSeq;
 
   this.getID = function actionInvoker_getID()
--- a/accessible/tests/mochitest/actions/test_media.html
+++ b/accessible/tests/mochitest/actions/test_media.html
@@ -59,17 +59,17 @@ https://bugzilla.mozilla.org/show_bug.cg
     {
       //////////////////////////////////////////////////////////////////////////
       // test actions of audio controls
 
       todo(false, "Focus test are disabled until bug 494175 is fixed.");
 
       var audioElm = getAccessible("audio");
       var playBtn = audioElm.firstChild;
-      var scrubber = playBtn.nextSibling.nextSibling.nextSibling;
+      // var scrubber = playBtn.nextSibling.nextSibling.nextSibling;
       var muteBtn = audioElm.lastChild.previousSibling;
 
       var actions = [
         {
           ID: muteBtn,
           actionName: "press",
           events: CLICK_EVENTS,
           eventSeq: [
--- a/accessible/tests/mochitest/editabletext/editabletext.js
+++ b/accessible/tests/mochitest/editabletext/editabletext.js
@@ -128,17 +128,17 @@ function editableTextTest(aID)
     function copyNPasteTextInvoke()
     {
       var acc = getAccessible(aID, nsIAccessibleEditableText);
       acc.copyText(aStartPos, aEndPos);
       acc.pasteText(aPos);
     }
 
     this.generateTest(aID, null, [aStartPos, aEndPos, getTextFromClipboard],
-                      copyNPasteInvoke, getValueChecker(aID, aResStr), testID);
+                      copyNPasteTextInvoke, getValueChecker(aID, aResStr), testID);
   }
 
   /**
    * cutText test.
    */
   this.cutText = function cutText(aStartPos, aEndPos, aResStr,
                                   aResStartPos, aResEndPos)
   {
@@ -217,17 +217,16 @@ function editableTextTest(aID)
                       getValueChecker(aID, aResStr), testID);
   }
 
   //////////////////////////////////////////////////////////////////////////////
   // Implementation details.
 
   function getValue(aID)
   {
-    var value = "";
     var elm = getNode(aID);
     if (elm instanceof Components.interfaces.nsIDOMNSEditableElement)
       return elm.value;
 
     if (elm instanceof Components.interfaces.nsIDOMHTMLDocument)
       return elm.body.textContent;
 
     return elm.textContent;
@@ -253,31 +252,16 @@ function editableTextTest(aID)
       check: function clipboardChecker_check()
       {
         is(getTextFromClipboard(), aText, "Wrong text in clipboard.");
       }
     };
     return checker;
   }
 
-  function getValueNClipboardChecker(aID, aValue, aText)
-  {
-    var valueChecker = getValueChecker(aID, aValue);
-    var clipboardChecker = getClipboardChecker(aID, aText);
-
-    var checker = {
-      check: function()
-      {
-        valueChecker.check();
-        clipboardChecker.check();
-      }
-    };
-    return checker;
-  }
-
   /**
    * Process next scheduled test.
    */
   this.unwrapNextTest = function unwrapNextTest()
   {
     var data = this.mEventQueue.mInvokers[this.mEventQueue.mIndex + 1];
     if (data)
       data.func.apply(this, data.funcArgs);
@@ -345,9 +329,8 @@ function editableTextTest(aID)
     }
 
     this.mEventQueue.invoke();
   }
 
   this.mEventQueue = new eventQueue();
   this.mEventQueueReady = false;
 }
-
--- a/accessible/tests/mochitest/elm/test_canvas.html
+++ b/accessible/tests/mochitest/elm/test_canvas.html
@@ -24,17 +24,17 @@
       var canv = document.getElementById("c");
       var context = canv.getContext('2d');
       var element = document.getElementById("showA");
       context.beginPath();
       context.rect(kX, kY, kWidth, kHeight);
       context.addHitRegion({control: element});
 
       var input = getAccessible("showA");
-      var [cnvX, cnvY, cnvWidth, cnvHeight] = getBoundsForDOMElm(canv);
+      var [cnvX, cnvY, /*cnvWidth*/, /*cnvHeight*/] = getBoundsForDOMElm(canv);
       var [accX, accY, accWidth, accHeight] = getBounds(input);
 
       var [x, y, w, h] = CSSToDevicePixels(window, kX, kY, kWidth, kHeight);
       is(accX, cnvX + x, "wrong accX");
       is(accY, cnvY + y, "wrong accY");
       is(accWidth, w, "wrong accWidth");
       is(accHeight, h, "wrong accHeight");
 
--- a/accessible/tests/mochitest/events.js
+++ b/accessible/tests/mochitest/events.js
@@ -500,17 +500,17 @@ function eventQueue(aEventType)
           checker.wasCaught++;
           continue;
         }
 
         // Report an error if we hanlded not expected event of unique type
         // (i.e. event types are matched, targets differs).
         if (!checker.unexpected && checker.unique &&
             eventQueue.compareEventTypes(checker, aEvent)) {
-          var isExppected = false;
+          var isExpected = false;
           for (var jdx = 0; jdx < eventSeq.length; jdx++) {
             isExpected = eventQueue.compareEvents(eventSeq[jdx], aEvent);
             if (isExpected)
               break;
           }
 
           if (!isExpected) {
             ok(false,
@@ -964,17 +964,17 @@ eventQueue.logEvent = function eventQueu
     gLogger.logToDOM(info);
   }
 
   var infoMsg = "unhandled expected events: " + aAreExpectedEventsLeft +
     ", "  + eventQueue.invokerStatusToMsg(aInvokerStatus);
 
   var currType = eventQueue.getEventTypeAsString(aMatchedChecker);
   var currTargetDescr = eventQueue.getEventTargetDescr(aMatchedChecker);
-  var consoleMsg = "*****\nScenario " + aScenarioIdx + 
+  var consoleMsg = "*****\nScenario " + aScenarioIdx +
     ", event " + aEventIdx + " matched: " + currType + "\n" + infoMsg + "\n*****";
   gLogger.logToConsole(consoleMsg);
 
   var emphText = "matched ";
   var msg = "EQ event, type: " + currType + ", target: " + currTargetDescr +
     ", " + infoMsg;
   gLogger.logToDOM(msg, true, emphText);
 }
@@ -1310,18 +1310,18 @@ function synthFocus(aNodeOrID, aCheckerO
     if (this.DOMNode instanceof Components.interfaces.nsIDOMNSEditableElement &&
         this.DOMNode.editor ||
         this.DOMNode instanceof Components.interfaces.nsIDOMXULTextBoxElement) {
       this.DOMNode.selectionStart = this.DOMNode.selectionEnd = this.DOMNode.value.length;
     }
     this.DOMNode.focus();
   }
 
-  this.getID = function synthFocus_getID() 
-  { 
+  this.getID = function synthFocus_getID()
+  {
     return prettyName(aNodeOrID) + " focus";
   }
 }
 
 /**
  * Focus invoker. Focus the HTML body of content document of iframe.
  */
 function synthFocusOnFrame(aNodeOrID, aCheckerOrEventSeq)
@@ -1331,18 +1331,18 @@ function synthFocusOnFrame(aNodeOrID, aC
     aCheckerOrEventSeq ? aCheckerOrEventSeq : new focusChecker(frameDoc);
   this.__proto__ = new synthAction(frameDoc, checkerOrEventSeq);
 
   this.invoke = function synthFocus_invoke()
   {
     this.DOMNode.body.focus();
   }
 
-  this.getID = function synthFocus_getID() 
-  { 
+  this.getID = function synthFocus_getID()
+  {
     return prettyName(aNodeOrID) + " frame document focus";
   }
 }
 
 /**
  * Change the current item when the widget doesn't have a focus.
  */
 function changeCurrentItem(aID, aItemID)
@@ -1986,17 +1986,17 @@ function selChangeSeq(aUnselectedID, aSe
   if (!aUnselectedID) {
     return [
       new stateChangeChecker(STATE_SELECTED, false, true, aSelectedID),
       new invokerChecker(EVENT_SELECTION, aSelectedID)
     ];
   }
 
   // Return two possible scenarios: depending on widget type when selection is
-  // moved the the order of items that get selected and unselected may vary. 
+  // moved the the order of items that get selected and unselected may vary.
   return [
     [
       new stateChangeChecker(STATE_SELECTED, false, false, aUnselectedID),
       new stateChangeChecker(STATE_SELECTED, false, true, aSelectedID),
       new invokerChecker(EVENT_SELECTION, aSelectedID)
     ],
     [
       new stateChangeChecker(STATE_SELECTED, false, true, aSelectedID),
@@ -2146,17 +2146,17 @@ function removeA11yEventListener(aEventT
   if (!listenersArray)
     return false;
 
   var index = listenersArray.indexOf(aEventHandler);
   if (index == -1)
     return false;
 
   listenersArray.splice(index, 1);
-  
+
   if (!listenersArray.length) {
     gA11yEventListeners[aEventType] = null;
     delete gA11yEventListeners[aEventType];
   }
 
   return true;
 }
 
@@ -2265,42 +2265,40 @@ var gLogger =
 // Sequence
 
 /**
  * Base class of sequence item.
  */
 function sequenceItem(aProcessor, aEventType, aTarget, aItemID)
 {
   // private
-  
+
   this.startProcess = function sequenceItem_startProcess()
   {
     this.queue.invoke();
   }
-  
-  var item = this;
-  
+
   this.queue = new eventQueue();
   this.queue.onFinish = function()
   {
     aProcessor.onProcessed();
     return DO_NOT_FINISH_TEST;
   }
-  
+
   var invoker = {
     invoke: function invoker_invoke() {
       return aProcessor.process();
     },
     getID: function invoker_getID()
     {
       return aItemID;
     },
     eventSeq: [ new invokerChecker(aEventType, aTarget) ]
   };
-  
+
   this.queue.push(invoker);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 // Event queue invokers
 
 /**
  * Invoker base class for prepare an action.
--- a/accessible/tests/mochitest/events/test_fromUserInput.html
+++ b/accessible/tests/mochitest/events/test_fromUserInput.html
@@ -26,19 +26,16 @@
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
         new textChangeChecker(aID, aStart, aEnd, aText, false, aFromUser)
       ];
 
       this.invoke = function removeTextFromInput_invoke()
       {
-        const nsIDOMNSEditableElement =
-          Components.interfaces.nsIDOMNSEditableElement;
-
         this.DOMNode.focus();
         this.DOMNode.setSelectionRange(aStart, aEnd);
 
         synthesizeKey("VK_DELETE", {});
       }
 
       this.getID = function removeTextFromInput_getID()
       {
@@ -55,19 +52,16 @@
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
         new textChangeChecker(aID, aStart, aEnd, aText, false, aFromUser)
       ];
 
       this.invoke = function removeTextFromContentEditable_invoke()
       {
-        const nsIDOMNSEditableElement =
-          Components.interfaces.nsIDOMNSEditableElement;
-
         this.DOMNode.focus();
         this.textNode = getNode(aID).firstChild;
         var selection = window.getSelection();
         var range = document.createRange();
         range.setStart(this.textNode, aStart);
         range.setEnd(this.textNode, aEnd);
         selection.addRange(range);
 
--- a/accessible/tests/mochitest/events/test_text.html
+++ b/accessible/tests/mochitest/events/test_text.html
@@ -180,19 +180,16 @@
     {
       this.__proto__ = new textRemoveInvoker(aID, aStart, aEnd, aText);
 
       this.eventSeq.push(new invokerChecker(EVENT_TEXT_VALUE_CHANGE,
                                             this.DOMNode));
 
       this.invoke = function removeTextFromInput_invoke()
       {
-        const nsIDOMNSEditableElement =
-          Components.interfaces.nsIDOMNSEditableElement;
-
         this.DOMNode.focus();
         this.DOMNode.setSelectionRange(aStart, aEnd);
 
         synthesizeKey("VK_DELETE", {});
       }
 
       this.getID = function removeTextFromInput_getID()
       {
--- a/accessible/tests/mochitest/grid.js
+++ b/accessible/tests/mochitest/grid.js
@@ -21,17 +21,16 @@ function grid(aTableIdentifier)
 
   this.getMaxIndex = function getMaxIndex()
   {
     return this.getRowCount() * this.getColsCount() - 1;
   }
 
   this.getCellAtIndex = function getCellAtIndex(aIndex)
   {
-    var rowCount = this.getRowCount();
     var colsCount = this.getColsCount();
 
     var rowIdx = Math.floor(aIndex / colsCount);
     var colIdx = aIndex % colsCount;
 
     var row = this.getRowAtIndex(rowIdx);
     return row.cells[colIdx];
   }
@@ -128,17 +127,17 @@ function grid(aTableIdentifier)
         break;
     }
   }
 
   this.handleClickEvent = function handleClickEvent(aEvent)
   {
     if (aEvent.target.localName != "td")
       return;
-    
+
     var curCell = this.getCurrentCell();
     var cell = aEvent.target;
 
     if (cell != curCell) {
       curCell.removeAttribute("tabindex");
       cell.setAttribute("tabindex", "0");
       cell.focus();
     }
--- a/accessible/tests/mochitest/hittest/test_canvas_hitregion.html
+++ b/accessible/tests/mochitest/hittest/test_canvas_hitregion.html
@@ -46,17 +46,17 @@
 
       var context = document.getElementById("hitcanvas").getContext('2d');
       redrawCheckbox(context, document.getElementById('hitcheck'),
                      offsetX, offsetY);
 
       var hitcanvas = getAccessible("hitcanvas");
       var hitcheck = getAccessible("hitcheck");
 
-      var [hitX, hitY, hitWidth, hitHeight] = getBounds(hitcanvas);
+      var [hitX, hitY, /*hitWidth, hitHeight */] = getBounds(hitcanvas);
       var [deltaX, deltaY] = CSSToDevicePixels(window, offsetX, offsetY);
 
       var docAcc = getAccessible(document);
 
       // test if we hit the region associated with the shadow dom checkbox
       var tgtX = hitX + deltaX;
       var tgtY = hitY + deltaY;
       hitAcc = docAcc.getDeepestChildAtPoint(tgtX, tgtY);
--- a/accessible/tests/mochitest/hittest/test_general.html
+++ b/accessible/tests/mochitest/hittest/test_general.html
@@ -43,19 +43,18 @@ if (!MAC) {
       // document.
       testChildAtPoint(txt, -1, 1, null, null);
 
       // ::MustPrune case, point is outside of root accessible.
       testChildAtPoint(txt, -10000, 10000, null, null);
 
       // Not specific case, point is inside of btn accessible.
       var btn = getAccessible("btn");
-      var btnText = btn.firstChild;
       testChildAtPoint(btn, 1, 1, btn, btn);
-  
+
       // Not specific case, point is outside of btn accessible.
       testChildAtPoint(btn, -1, 1, null, null);
 
       // Out of flow accessible testing, do not return out of flow accessible
       // because it's not a child of the accessible even visually it is.
       var rectArea = getNode("area").getBoundingClientRect();
       var outOfFlow = getNode("outofflow");
       outOfFlow.style.left = rectArea.left + "px";
--- a/accessible/tests/mochitest/hyperlink/test_general.html
+++ b/accessible/tests/mochitest/hyperlink/test_general.html
@@ -67,17 +67,17 @@ https://bugzilla.mozilla.org/show_bug.cg
     function doTest()
     {
       //////////////////////////////////////////////////////////////////////////
       // normal hyperlink
       var normalHyperlinkAcc = getAccessible("NormalHyperlink",
                                              [nsIAccessibleHyperLink]);
       testThis("NormalHyperlink", normalHyperlinkAcc, ROLE_LINK, 1,
                "Mozilla Foundation", true, 17, 18);
-      is(normalHyperlinkAcc.getURI(0).spec, "http://www.mozilla.org/", 
+      is(normalHyperlinkAcc.getURI(0).spec, "http://www.mozilla.org/",
          "URI wrong for normalHyperlinkElement!");
       testStates(normalHyperlinkAcc, STATE_LINKED, 0);
 
       //////////////////////////////////////////////////////////////////////////
       // ARIA hyperlink
       var ariaHyperlinkAcc = getAccessible("AriaHyperlink",
                                            [nsIAccessibleHyperLink]);
       testThis("AriaHyperlink", ariaHyperlinkAcc, ROLE_LINK, 1,
@@ -128,17 +128,17 @@ https://bugzilla.mozilla.org/show_bug.cg
       testAction("emptyLink", EmptyHLAcc, "jump");
 
       //////////////////////////////////////////////////////////////////////////
       // normal hyperlink with embedded span
       var hyperlinkWithSpanAcc = getAccessible("LinkWithSpan",
                                                [nsIAccessibleHyperLink]);
       testThis("LinkWithSpan", hyperlinkWithSpanAcc, ROLE_LINK, 1,
                "Heise Online", true, 119, 120);
-      is(hyperlinkWithSpanAcc.getURI(0).spec, "http://www.heise.de/", 
+      is(hyperlinkWithSpanAcc.getURI(0).spec, "http://www.heise.de/",
          "URI wrong for hyperlinkElementWithSpan!");
       testStates(hyperlinkWithSpanAcc, STATE_LINKED, 0);
       testAction("LinkWithSpan", hyperlinkWithSpanAcc, "jump");
 
       //////////////////////////////////////////////////////////////////////////
       // Named anchor, should never have state_linked
       var namedAnchorAcc = getAccessible("namedAnchor",
                                          [nsIAccessibleHyperLink]);
@@ -163,17 +163,17 @@ https://bugzilla.mozilla.org/show_bug.cg
                                            [nsIAccessibleHyperLink]);
       testThis("linkWithClick", linkWithClickAcc, ROLE_LINK, 1,
                "This should have state_linked", true, 292, 293);
       testStates(linkWithClickAcc, STATE_LINKED, 0);
       testAction("linkWithClick", linkWithClickAcc, "click");
 
       //////////////////////////////////////////////////////////////////////////
       // Maps to group links (bug 431615).
-      var linksMapAcc = getAccessible("linksmap");
+      // var linksMapAcc = getAccessible("linksmap");
 
       //////////////////////////////////////////////////////////////////////////
       // Link with title attribute, no name from the subtree (bug 438325).
       var id = "linkWithTitleNoNameFromSubtree";
       var linkAcc = getAccessible(id, [nsIAccessibleHyperLink]);
       testThis(id, linkAcc, ROLE_LINK, 1, "Link with title", true, 344, 345);
       testStates(linkAcc, STATE_LINKED, 0);
       testAction(id, linkAcc, "jump");
@@ -255,23 +255,23 @@ https://bugzilla.mozilla.org/show_bug.cg
   ><br>Link with embedded span<br
   ><a id="LinkWithSpan" href="http://www.heise.de/"><span lang="de">Heise Online</span></a
   ><br>Named anchor, must not have "linked" state for it to be exposed correctly:<br
   ><a id="namedAnchor" name="named_anchor">This should never be of state_linked</a
   ><br>Link having no attributes, must not have "linked" state:<a id="noLink"
   >This should never be of state_linked</a
   ><br>Link with registered 'click' event: <a id="linkWithClick" onclick="var clicked = true;"
   >This should have state_linked</a
-  ><br>Link with title attribute (no name from subtree): <a 
+  ><br>Link with title attribute (no name from subtree): <a
       id="linkWithTitleNoNameFromSubtree" href="http://www.heise.de/"
       title="Link with title"><img src=""/></a
-  ><br>Link with title attribute (name from subtree): <a 
+  ><br>Link with title attribute (name from subtree): <a
       id="linkWithTitleNameFromSubtree" href="http://www.heise.de/"
       title="Link with title">the name from subtree</a
-  ><br>Link with title attribute (name from nested image): <a 
+  ><br>Link with title attribute (name from nested image): <a
       id="linkWithTitleNameFromImg" href="http://www.heise.de/"
       title="Link with title"><img src="" alt="The title for link"/></a
   ><br><br>Map that is used to group links (www.w3.org/TR/WCAG10-HTML-TECHS/#group-bypass), also see the bug 431615:<br
   ><map id="linksmap" title="Site navigation"><ul
     ><li><a href="http://mozilla.org">About the project</a></li
     ><li><a href="http://mozilla.org">Sites and sounds</a></li
     ></ul
   ></map
--- a/accessible/tests/mochitest/jsat/dom_helper.js
+++ b/accessible/tests/mochitest/jsat/dom_helper.js
@@ -1,12 +1,10 @@
 'use strict';
 
-/* global getMainChromeWindow, AccessFuTest, GestureSettings, GestureTracker,
-   SimpleTest, getBoundsForDOMElm, Point, Utils */
 /* exported loadJSON, eventMap */
 
 var Ci = Components.interfaces;
 var Cu = Components.utils;
 
 Cu.import('resource://gre/modules/Geometry.jsm');
 
 var win = getMainChromeWindow(window);
--- a/accessible/tests/mochitest/jsat/test_live_regions.html
+++ b/accessible/tests/mochitest/jsat/test_live_regions.html
@@ -295,17 +295,16 @@
       expected: {
         "eventType": "liveregion-change",
         "data": ["I am replaced", {"string": "main"}],
         "options": {
           "enqueue": true
         }
       },
       action: function action() {
-        var region = document.getElementById("to_replace_region");
         var child = document.getElementById("to_replace");
         child.setAttribute("role", "main");
       }
     }, {
       expected: {
         "eventType": "liveregion-change",
         "data": ["I am a replaced text"],
         "options": {
--- a/accessible/tests/mochitest/name/markup.js
+++ b/accessible/tests/mochitest/name/markup.js
@@ -134,18 +134,16 @@ function testNamesForMarkup(aMarkupElm)
 }
 
 function testNamesForMarkupRules(aMarkupElm, aContainer)
 {
   var testID = aMarkupElm.getAttribute("id");
   if (gDumpToConsole)
     dump("\nProcessing markup rules '" + testID + "'\n");
 
-  var serializer = new XMLSerializer();
-
   var expr = "//html/body/div[@id='test']/" + aMarkupElm.getAttribute("ref");
   var elm = evaluateXPath(document, expr, htmlDocResolver)[0];
 
   var ruleId = aMarkupElm.getAttribute("ruleset");
   var ruleElm = gRuleDoc.querySelector("[id='" + ruleId + "']");
   var ruleElms = getRuleElmsByRulesetId(ruleId);
 
   var processMarkupRules =
--- a/accessible/tests/mochitest/relations.js
+++ b/accessible/tests/mochitest/relations.js
@@ -110,17 +110,16 @@ function testRelation(aIdentifier, aRelT
  *                              accessibles that shouldn't exist for this
  *                              relation.
  */
 function testAbsentRelation(aIdentifier, aRelType, aUnrelatedIdentifiers)
 {
   var relation = getRelationByType(aIdentifier, aRelType);
 
   var relDescr = getRelationErrorMsg(aIdentifier, aRelType);
-  var relDescrStart = getRelationErrorMsg(aIdentifier, aRelType, true);
 
   if (!aUnrelatedIdentifiers) {
     ok(false, "No identifiers given for unrelated accessibles.");
     return;
   }
 
   if (!relation || !relation.targetsCount) {
     ok(true, "No relations exist.");
--- a/accessible/tests/mochitest/scroll/test_zoom.html
+++ b/accessible/tests/mochitest/scroll/test_zoom.html
@@ -17,35 +17,35 @@
   <script type="application/javascript"
           src="../layout.js"></script>
 
   <script type="application/javascript">
     function testScrollToPoint()
     {
       // scrollToPoint relative screen
       var anchor = getAccessible("bottom1");
-      var [x, y] = getPos(anchor);
+      var [x, /*y*/] = getPos(anchor);
       var [docX, docY] = getPos(document);
 
       anchor.scrollToPoint(COORDTYPE_SCREEN_RELATIVE, docX, docY);
       testPos(anchor, [x, docY]);
 
       // scrollToPoint relative window
       anchor = getAccessible("bottom2");
-      var [x, y] = getPos(anchor);
+      var [x, /*y*/] = getPos(anchor);
       var wnd = getRootAccessible().DOMDocument.defaultView;
       var [screenX, screenY] = CSSToDevicePixels(wnd, wnd.screenX, wnd.screenY);
       var scrollToX = docX - screenX, scrollToY = docY - screenY;
 
       anchor.scrollToPoint(COORDTYPE_WINDOW_RELATIVE, scrollToX, scrollToY);
       testPos(anchor, [x, docY]);
 
       // scrollToPoint relative parent
       anchor = getAccessible("bottom3");
-      var [x, y] = getPos(anchor);
+      var [x, /*y*/] = getPos(anchor);
       var [parentX, parentY] = getPos(anchor.parent);
       var scrollToX = parentX - docX, scrollToY = parentY - docY;
 
       anchor.scrollToPoint(COORDTYPE_PARENT_RELATIVE, scrollToX, scrollToY);
       testPos(anchor, [x, docY]);
     }
 
     function doTest()
--- a/accessible/tests/mochitest/scroll/test_zoom_text.html
+++ b/accessible/tests/mochitest/scroll/test_zoom_text.html
@@ -22,29 +22,29 @@
   <script type="application/javascript">
     function doTest()
     {
       var tabDocument = currentTabDocument();
       var paragraphNode = tabDocument.getElementById("paragraph");
       var paragraph = getAccessible(paragraphNode, [nsIAccessibleText]);
       var offset = 64; // beginning of 4th stanza
 
-      var [x, y] = getPos(paragraph);
+      var [x, /*y*/] = getPos(paragraph);
       var [docX, docY] = getPos(tabDocument);
 
       paragraph.scrollSubstringToPoint(offset, offset,
                                        COORDTYPE_SCREEN_RELATIVE, docX, docY);
       testTextPos(paragraph, offset, [x, docY], COORDTYPE_SCREEN_RELATIVE);
 
       zoomDocument(tabDocument, 2.0);
 
       paragraphNode = tabDocument.getElementById("paragraph2");
       paragraph = getAccessible(paragraphNode, [nsIAccessibleText]);
       offset = 52; // // beginning of 4th stanza
-      var [x, y] = getPos(paragraph);
+      var [x, /*y*/] = getPos(paragraph);
       paragraph.scrollSubstringToPoint(offset, offset,
                                        COORDTYPE_SCREEN_RELATIVE, docX, docY);
       testTextPos(paragraph, offset, [x, docY], COORDTYPE_SCREEN_RELATIVE);
 
       closeBrowserWindow();
       SimpleTest.finish();
     }
 
--- a/accessible/tests/mochitest/selectable.js
+++ b/accessible/tests/mochitest/selectable.js
@@ -47,17 +47,17 @@ function testSelectableSelection(aIdenti
 /**
  * Test isItemSelected method, helper for testSelectableSelection
  */
 function testIsItemSelected(aSelectAcc, aTraversedAcc, aIndexObj, aSelectedChildren, aMsg)
 {
   var childCount = aTraversedAcc.childCount;
   for (var idx = 0; idx < childCount; idx++) {
     var child = aTraversedAcc.getChildAt(idx);
-    var [state, extraState] = getStates(child);
+    var [state, /*extraState*/] = getStates(child);
     if (state & STATE_SELECTABLE) {
       var isSelected = false;
       var len = aSelectedChildren.length;
       for (var jdx = 0; jdx < len; jdx++) {
         if (child == getAccessible(aSelectedChildren[jdx])) {
           isSelected = true;
           break;
         }
--- a/accessible/tests/mochitest/states.js
+++ b/accessible/tests/mochitest/states.js
@@ -199,17 +199,17 @@ function testStatesInSubtree(aAccOrElmOr
 }
 
 /**
  * Fails if no defunct state on the accessible.
  */
 function testIsDefunct(aAccessible, aTestName)
 {
   var id = prettyName(aAccessible) + (aTestName ? " [" + aTestName + "]" : "");
-  var [state, extraState] = getStates(aAccessible);
+  var [/*state*/, extraState] = getStates(aAccessible);
   isState(extraState & EXT_STATE_DEFUNCT, EXT_STATE_DEFUNCT, true,
           "no defuct state for " + id + "!");
 }
 
 function getStringStates(aAccOrElmOrID)
 {
   var [state, extraState] = getStates(aAccOrElmOrID);
   return statesToString(state, extraState);
--- a/accessible/tests/mochitest/states/test_aria.html
+++ b/accessible/tests/mochitest/states/test_aria.html
@@ -29,17 +29,17 @@
   <script type="application/javascript">
     function testAriaDisabledTree(aAccOrElmOrID)
     {
       // test accessible and its subtree for propagated state.
       var acc = getAccessible(aAccOrElmOrID);
       if (!acc)
         return;
 
-      var [state, extraState] = getStates(aAccOrElmOrID);
+      var [state, /*extraState*/] = getStates(aAccOrElmOrID);
       if (state & STATE_UNAVAILABLE) {
         var role = getRole(acc);
         if (role != ROLE_GROUPING) {
           testStates(acc, STATE_FOCUSABLE);
         }
       }
 
       // Iterate over its children to see if the state got propagated.
--- a/accessible/tests/mochitest/table.js
+++ b/accessible/tests/mochitest/table.js
@@ -11,17 +11,17 @@
 /**
  * Constants used to describe cells array.
  */
 const kDataCell = 1; // Indicates the cell is origin data cell
 const kRowHeaderCell = 2; // Indicates the cell is row header cell
 const kColHeaderCell = 4; // Indicated the cell is column header cell
 const kOrigin = kDataCell | kRowHeaderCell | kColHeaderCell;
 
-const kRowSpanned = 8; // Indicates the cell is not origin and row spanned 
+const kRowSpanned = 8; // Indicates the cell is not origin and row spanned
 const kColSpanned = 16; // Indicates the cell is not origin and column spanned
 const kSpanned = kRowSpanned | kColSpanned;
 
 /**
  * Constants to define column header type.
  */
 const kNoColumnHeader = 0;
 const kListboxColumnHeader = 1;
@@ -412,17 +412,16 @@ function testTableSelection(aIdentifier,
     is (actualSelCols[i], selCols[i],
         msg + "Column at index " + selCols[i] + " should be selected.");
   }
 
   // Rows selection tests.
   var selRows = new Array();
 
   // isRowSelected test
-  var selrowCount = 0;
   for (var rowIdx = 0; rowIdx < rowCount; rowIdx++) {
     var isRowSelected = true;
     for (var colIdx = 0; colIdx < colsCount; colIdx++) {
       if (aCellsArray[rowIdx][colIdx] == false ||
           aCellsArray[rowIdx][colIdx] == undefined) {
         isRowSelected = false;
         break;
       }
@@ -534,17 +533,16 @@ function testTableSelection(aIdentifier,
 function testUnselectTableColumn(aIdentifier, aColIdx, aCellsArray)
 {
   var acc = getAccessible(aIdentifier, [nsIAccessibleTable]);
   if (!acc)
     return;
 
   var rowCount = aCellsArray.length;
   for (var rowIdx = 0; rowIdx < rowCount; rowIdx++) {
-    var cellState = aCellsArray[rowIdx][aColIdx];
     // Unselect origin cell.
     var [origRowIdx, origColIdx] =
       getOrigRowAndColumn(aCellsArray, rowIdx, aColIdx);
     aCellsArray[origRowIdx][origColIdx] = false;
   }
 
   acc.unselectColumn(aColIdx);
   testTableSelection(aIdentifier, aCellsArray,
--- a/accessible/tests/mochitest/table/test_table_1.html
+++ b/accessible/tests/mochitest/table/test_table_1.html
@@ -45,19 +45,23 @@ function doTest()
   s.addRange(range);
   range = document.createRange();
   cell = getNode("row2c");
   range.selectNode(cell);
   s.addRange(range);
 
   is(accTable.selectedRowCount, 1, "no cells selected");
 
-  var columnDescription = accTable.getColumnDescription(1);
-  var rowDescription = accTable.getRowDescription(1);
-
+  // These shouldn't throw.
+  try {
+    accTable.getColumnDescription(1);
+    accTable.getRowDescription(1);
+  } catch (ex) {
+    ok(false, "getColumnDescription/getRowDescription shouldn't throw.");
+  }
   SimpleTest.finish();
 }
 SimpleTest.waitForExplicitFinish();
 addA11yLoadEvent(doTest);
   </script>
  </head>
  <body >
 
--- a/accessible/tests/mochitest/test_OuterDocAccessible.html
+++ b/accessible/tests/mochitest/test_OuterDocAccessible.html
@@ -35,19 +35,19 @@ https://bugzilla.mozilla.org/show_bug.cg
           testStates(outerDocAcc, STATE_FOCUSABLE, 0);
 
           // see bug 428954: No name wanted for internal frame
           is(outerDocAcc.name, null, "Wrong name for internal frame!");
 
           // see bug 440770, no actions wanted on outer doc
           is(outerDocAcc.actionCount, 0,
              "Wrong number of actions for internal frame!");
-          var actionTempStr; // not really used, just needs to receive a value
+
           try {
-            actionTempStr = outerDocAcc.getActionName(0);
+            outerDocAcc.getActionName(0);
             do_throw("No exception thrown for actionName!");
           } catch(e) {
             ok(e.result, ns_error_invalid_arg,
                "Wrong return value for actionName call!");
           }
 
           try {
             actionTempStr = outerDocAcc.getActionDescription(0);
--- a/accessible/tests/mochitest/text.js
+++ b/accessible/tests/mochitest/text.js
@@ -256,18 +256,18 @@ function testWordCount(aElement, aCount,
 {
   var isFunc = (aToDoFlag == kTodo) ? todo_is : is;
   var acc = getAccessible(aElement, nsIAccessibleText);
   var startOffsetObj = {}, endOffsetObj = {};
   var length = acc.characterCount;
   var offset = 0;
   var wordCount = 0;
   while (true) {
-    var text = acc.getTextAtOffset(offset, BOUNDARY_WORD_START,
-                                   startOffsetObj, endOffsetObj);
+    acc.getTextAtOffset(offset, BOUNDARY_WORD_START,
+                        startOffsetObj, endOffsetObj);
     if (offset >= length)
       break;
 
     wordCount++;
     offset = endOffsetObj.value;
   }
   isFunc(wordCount, aCount,
         "wrong words count for '" + acc.getText(0, -1) + "': " + wordCount +
--- a/accessible/tests/mochitest/tree/test_aria_globals.html
+++ b/accessible/tests/mochitest/tree/test_aria_globals.html
@@ -37,17 +37,17 @@
 
       // Elements having ARIA global state or properties or referred by another
       // element must be accessible.
       ok(isAccessible("pawn"),
          "Must be accessible because referred by another element.");
 
       for (var idx = 0; idx < globalIds.length; idx++) {
         ok(isAccessible(globalIds[idx]),
-           "Must be accessible becuase of " + "aria-" + globalIds[idx] +
+           "Must be accessible becuase of aria-" + globalIds[idx] +
            " presence");
       }
 
       // Unfocusable elements, having ARIA global state or property with a valid
       // IDREF value, and an inherited presentation role. A generic accessible
       // is created (to prevent table cells text jamming).
       ok(!isAccessible("td_nothing", nsIAccessibleTableCell),
          "inherited presentation role takes a place");
--- a/accessible/tests/mochitest/treeupdate/test_ariaowns.html
+++ b/accessible/tests/mochitest/treeupdate/test_ariaowns.html
@@ -582,25 +582,26 @@
       this.eventSeq = [
         new invokerChecker(EVENT_SHOW, () => {
           let doc = getNode('t9_container').contentDocument;
           return doc && doc.getElementById('container');
         })
       ];
 
       this.invoke = () => {
-        getNode('t9_container').src =
-          `data:text/html,
-            <html><body></body>
-            <script>
-              let el = document.createElement('div');
-              el.id = 'container';
-              el.innerHTML = "<input id='input'>";
-              document.documentElement.appendChild(el);
-            </` + `script></html>`;
+        // The \ before the final /script avoids the script from being terminated
+        // by the html parser.
+        getNode('t9_container').src = `data:text/html,
+          <html><body></body>
+          <script>
+            let el = document.createElement('div');
+            el.id = 'container';
+            el.innerHTML = "<input id='input'>";
+            document.documentElement.appendChild(el);
+          <\/script></html>`;
       }
 
       this.finalCheck = () => {
         var tree =
           { INTERNAL_FRAME: [
             { DOCUMENT: [
               { SECTION: [
                 { ENTRY: [] }
@@ -671,16 +672,68 @@
         testAccessibleTree("t9_container", tree);
       }
 
       this.getID = () => {
         return `Set ARIA owns on a document (part3)`;
       }
     }
 
+    /**
+     * Put ARIA owned child back when ARIA owner removed.
+     */
+    function test10_removeARIAOwner()
+    {
+      this.eventSeq = [
+        new invokerChecker(EVENT_HIDE, getAccessible('t10_owner'))
+      ];
+
+      this.invoke = () => {
+        let tree =
+          { SECTION: [ // t10_container
+            { SECTION: [ // t10_owner
+              { ENTRY: [] } // t10_child
+            ] }
+          ] };
+        testAccessibleTree('t10_container', tree);
+
+        getNode('t10_owner').remove();
+      }
+
+      this.getID = () => {
+        return 'Put aria owned child back when aria owner removed';
+      }
+    }
+
+    function test10_finishTest()
+    {
+      this.eventSeq = [
+        new invokerChecker(EVENT_REORDER, 't10_container')
+      ];
+
+      this.invoke = () => {
+        // trigger a tree update.
+        getNode('t10_container').append(document.createElement('p'));
+      }
+
+      this.finalCheck = () => {
+        let tree =
+          { SECTION: [ // t10_container
+            // { ENTRY: [] }, // t10_child
+            { PARAGRAPH: [] }
+          ] };
+        testAccessibleTree('t10_container', tree);
+        todo(false, 'Input accessible has be moved back in the tree');
+      }
+
+      this.getID = () => {
+        return `Put aria owned child back when aria owner removed (finish test)`;
+      }
+    }
+
     ////////////////////////////////////////////////////////////////////////////
     // Test
     ////////////////////////////////////////////////////////////////////////////
 
     //gA11yEventDumpToConsole = true;
     //enableLogging("tree,eventTree,verbose"); // debug stuff
 
     var gQueue = null;
@@ -723,16 +776,19 @@
 
       gQueue.push(new setARIAOwnsOnElToRemove("t7_parent", "t7_child"));
 
       gQueue.push(new test8());
       gQueue.push(new test9_prepare());
       gQueue.push(new test9_setARIAOwns());
       gQueue.push(new test9_finish());
 
+      gQueue.push(new test10_removeARIAOwner());
+      gQueue.push(new test10_finishTest());
+
       gQueue.invoke(); // SimpleTest.finish() will be called in the end
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
 
   </script>
 </head>
@@ -787,11 +843,16 @@
     </div>
   </div>
 
   <div id="t8_container">
     <input id="t8_button" type="button"><span id="t8_span"><input><input><input></span>
   </div>
 
   <iframe id="t9_container"></iframe>
+
+  <div id="t10_container">
+    <div id="t10_owner" aria-owns="t10_child"></div>
+    <input id="t10_child">
+  </div>
 </body>
 
 </html>
--- a/accessible/tests/mochitest/treeupdate/test_list.html
+++ b/accessible/tests/mochitest/treeupdate/test_list.html
@@ -63,33 +63,33 @@
             testDefunctAccessible(aLiAcc, aLiNode);
             testDefunctAccessible(aBulletAcc);
 
             gSequence.processNext();
           },
           0, this.li, this.liNode, this.bullet
         );
       }
-    };
+    }
 
     function showProcessor()
     {
       this.liNode = getNode("li");
 
       this.process = function showProcessor_process()
       {
         this.liNode.style.display = "list-item";
       }
 
       this.onProcessed = function showProcessor_onProcessed()
       {
         testLiAccessibleTree();
         gSequence.processNext();
       }
-    };
+    }
 
     function textReplaceProcessor()
     {
       this.liNode = getNode("li");
 
       this.process = function textReplaceProcessor_process()
       {
         this.liNode.textContent = "hey";
@@ -101,17 +101,17 @@
           LISTITEM: [
             { STATICTEXT: [] },
             { TEXT_LEAF: [] }
           ]
         };
         testAccessibleTree(this.liNode, tree);
         SimpleTest.finish();
       }
-    };
+    }
 
     ////////////////////////////////////////////////////////////////////////////
     // Test
 
     //gA11yEventDumpToConsole = true;
 
     var gSequence = null;
     function doTest()
--- a/accessible/tests/mochitest/treeupdate/test_list_editabledoc.html
+++ b/accessible/tests/mochitest/treeupdate/test_list_editabledoc.html
@@ -60,17 +60,17 @@
         };
         testAccessibleTree(aID, tree);
       }
 
       this.getID = function addLi_getID()
       {
         return "add li";
       }
-    };
+    }
 
     ////////////////////////////////////////////////////////////////////////////
     // Test
 
     //gA11yEventDumpID = "eventdump"; // debug stuff
 
     var gQueue = null;
 
--- a/accessible/tests/mochitest/value/test_general.html
+++ b/accessible/tests/mochitest/value/test_general.html
@@ -31,17 +31,16 @@
       function testValue(aID, aValue)
       {
         var acc = getAccessible(aID);
         if (!acc)
           return;
         is(acc.value, aValue, "Wrong value for " + aID + "!");
       }
 
-      var rootDir = getRootDirectory(window.location.href);
       var href = getRootDirectory(window.location.href) + "foo";
 
       // roles that can't live as HTMLLinkAccessibles
       testValue("aria_menuitem_link", "");
       testValue("aria_button_link", "");
       testValue("aria_checkbox_link", "");
       testValue("aria_application_link", "");
 
--- a/addon-sdk/source/lib/sdk/content/sandbox.js
+++ b/addon-sdk/source/lib/sdk/content/sandbox.js
@@ -254,19 +254,16 @@ const WorkerSandbox = Class({
         profile: genPropDesc('profile'),
         profileEnd: genPropDesc('profileEnd'),
         exception: genPropDesc('exception'),
         assert: genPropDesc('assert'),
         count: genPropDesc('count'),
         table: genPropDesc('table'),
         clear: genPropDesc('clear'),
         dirxml: genPropDesc('dirxml'),
-        markTimeline: genPropDesc('markTimeline'),
-        timeline: genPropDesc('timeline'),
-        timelineEnd: genPropDesc('timelineEnd'),
         timeStamp: genPropDesc('timeStamp'),
       };
 
       Object.defineProperties(con, properties);
       Cu.makeObjectPropsNormal(con);
 
       win.console = con;
     };
--- a/addon-sdk/source/lib/sdk/io/buffer.js
+++ b/addon-sdk/source/lib/sdk/io/buffer.js
@@ -42,17 +42,17 @@ function Buffer(subject, encoding /*, bu
 
   switch (type) {
     case 'number':
       // Create typed array of the given size if number.
       try {
         let buffer = new Uint8Array(subject > 0 ? Math.floor(subject) : 0);
         return buffer;
       } catch (e) {
-        if (/size and count too large/.test(e.message) ||
+        if (/invalid array length/.test(e.message) ||
             /invalid arguments/.test(e.message))
           throw new RangeError('Could not instantiate buffer: size of buffer may be too large');
         else
           throw new Error('Could not instantiate buffer');
       }
       break;
     case 'string':
       // If string encode it and use buffer for the returned Uint8Array
--- a/addon-sdk/source/lib/sdk/loader/sandbox.js
+++ b/addon-sdk/source/lib/sdk/loader/sandbox.js
@@ -10,39 +10,28 @@ module.metadata = {
 const { Cc, Ci, CC, Cu } = require('chrome');
 const systemPrincipal = CC('@mozilla.org/systemprincipal;1', 'nsIPrincipal')();
 const scriptLoader = Cc['@mozilla.org/moz/jssubscript-loader;1'].
                      getService(Ci.mozIJSSubScriptLoader);
 const self = require('sdk/self');
 const { getTabId } = require('../tabs/utils');
 const { getInnerId } = require('../window/utils');
 
-const { devtools } = Cu.import("resource://devtools/shared/Loader.jsm", {});
-const { require: devtoolsRequire } = devtools;
-const { addContentGlobal, removeContentGlobal } = devtoolsRequire("devtools/server/content-globals");
-
 /**
  * Make a new sandbox that inherits given `source`'s principals. Source can be
  * URI string, DOMWindow or `null` for system principals.
  */
 function sandbox(target, options) {
   options = options || {};
   options.metadata = options.metadata ? options.metadata : {};
   options.metadata.addonID = options.metadata.addonID ?
     options.metadata.addonID : self.id;
 
   let sandbox = Cu.Sandbox(target || systemPrincipal, options);
   Cu.setSandboxMetadata(sandbox, options.metadata);
-  let innerWindowID = options.metadata['inner-window-id']
-  if (innerWindowID) {
-    addContentGlobal({
-      global: sandbox,
-      'inner-window-id': innerWindowID
-    });
-  }
   return sandbox;
 }
 exports.sandbox = sandbox;
 
 /**
  * Evaluates given `source` in a given `sandbox` and returns result.
  */
 function evaluate(sandbox, code, uri, line, version) {
--- a/addon-sdk/source/python-lib/cuddlefish/prefs.py
+++ b/addon-sdk/source/python-lib/cuddlefish/prefs.py
@@ -64,19 +64,18 @@ DEFAULT_NO_CONNECTIONS_PREFS = {
     'browser.selfsupport.url': 'https://localhost/selfsupport-dummy',
     'browser.safebrowsing.provider.mozilla.gethashURL': 'http://localhost/safebrowsing-dummy/gethash',
     'browser.safebrowsing.provider.mozilla.updateURL': 'http://localhost/safebrowsing-dummy/update',
 
     # Disable app update
     'app.update.enabled' : False,
     'app.update.staging.enabled': False,
 
-    # Disable about:newtab content fetch and ping
+    # Disable about:newtab content fetch
     'browser.newtabpage.directory.source': 'data:application/json,{"jetpack":1}',
-    'browser.newtabpage.directory.ping': '',
 
     # Point update checks to a nonexistent local URL for fast failures.
     'extensions.update.url' : 'http://localhost/extensions-dummy/updateURL',
     'extensions.update.background.url': 'http://localhost/extensions-dummy/updateBackgroundURL',
     'extensions.blocklist.url' : 'http://localhost/extensions-dummy/blocklistURL',
     # Make sure opening about:addons won't hit the network.
     'extensions.webservice.discoverURL' : 'http://localhost/extensions-dummy/discoveryURL',
     'extensions.getAddons.maxResults': 0,
@@ -211,18 +210,16 @@ DEFAULT_TEST_PREFS = {
     'security.default_personal_cert': 'Select Automatically',
     'network.http.prompt-temp-redirect': False,
     'security.warn_viewing_mixed': False,
     'extensions.defaultProviders.enabled': True,
     'datareporting.policy.dataSubmissionPolicyBypassNotification': True,
     'layout.css.report_errors': True,
     'layout.css.grid.enabled': True,
     'layout.spammy_warnings.enabled': False,
-    # Make sure the disk cache doesn't get auto disabled
-    'network.http.bypass-cachelock-threshold': 200000,
     # Always use network provider for geolocation tests
     # so we bypass the OSX dialog raised by the corelocation provider
     'geo.provider.testing': True,
     # Background thumbnails in particular cause grief, and disabling thumbnails
     # in general can't hurt - we re-enable them when tests need them.
     'browser.pagethumbnails.capturing_disabled': True,
     # Indicate that the download panel has been shown once so that whichever
     # download test runs first doesn't show the popup inconsistently.
--- a/addon-sdk/source/test/preferences/no-connections.json
+++ b/addon-sdk/source/test/preferences/no-connections.json
@@ -21,17 +21,16 @@
   "browser.safebrowsing.provider.google.reportURL": "http://localhost/safebrowsing-dummy/malwarereport",
   "browser.safebrowsing.provider.google4.updateURL": "http://localhost/safebrowsing4-dummy/update",
   "browser.safebrowsing.provider.google4.gethashURL": "http://localhost/safebrowsing4-dummy/gethash",
   "browser.safebrowsing.provider.google4.reportURL": "http://localhost/safebrowsing4-dummy/malwarereport",
   "browser.selfsupport.url": "https://localhost/selfsupport-dummy",
   "browser.safebrowsing.provider.mozilla.gethashURL": "http://localhost/safebrowsing-dummy/gethash",
   "browser.safebrowsing.provider.mozilla.updateURL": "http://localhost/safebrowsing-dummy/update",
   "browser.newtabpage.directory.source": "data:application/json,{'jetpack':1}",
-  "browser.newtabpage.directory.ping": "",
   "extensions.update.url": "http://localhost/extensions-dummy/updateURL",
   "extensions.update.background.url": "http://localhost/extensions-dummy/updateBackgroundURL",
   "extensions.blocklist.url": "http://localhost/extensions-dummy/blocklistURL",
   "extensions.webservice.discoverURL": "http://localhost/extensions-dummy/discoveryURL",
   "extensions.getAddons.maxResults": 0,
   "services.blocklist.base": "http://localhost/dummy-kinto/v1",
   "geo.wifi.uri": "http://localhost/location-dummy/locationURL",
   "browser.search.geoip.url": "http://localhost/location-dummy/locationURL",
--- a/addon-sdk/source/test/preferences/test.json
+++ b/addon-sdk/source/test/preferences/test.json
@@ -26,17 +26,16 @@
   "security.default_personal_cert": "Select Automatically",
   "network.http.prompt-temp-redirect": false,
   "security.warn_viewing_mixed": false,
   "extensions.defaultProviders.enabled": true,
   "datareporting.policy.dataSubmissionPolicyBypassNotification": true,
   "layout.css.report_errors": true,
   "layout.css.grid.enabled": true,
   "layout.spammy_warnings.enabled": false,
-  "network.http.bypass-cachelock-threshold": 200000,
   "geo.provider.testing": true,
   "browser.pagethumbnails.capturing_disabled": true,
   "browser.download.panel.shown": true,
   "general.useragent.updates.enabled": false,
   "media.eme.enabled": true,
   "dom.ipc.tabs.shutdownTimeoutSecs": 0,
   "general.useragent.locale": "en-US",
   "intl.locale.matchOS": "en-US",
--- a/addon-sdk/source/test/test-page-mod-debug.js
+++ b/addon-sdk/source/test/test-page-mod-debug.js
@@ -5,20 +5,16 @@
 
 const { Cc, Ci, Cu } = require("chrome");
 const { PageMod } = require("sdk/page-mod");
 const { testPageMod, handleReadyState, openNewTab,
         contentScriptWhenServer, createLoader } = require("./page-mod/helpers");
 const { cleanUI, after } = require("sdk/test/utils");
 const { open, getFrames, getMostRecentBrowserWindow, getInnerId } = require("sdk/window/utils");
 
-const { devtools } = Cu.import("resource://devtools/shared/Loader.jsm", {});
-const { require: devtoolsRequire } = devtools;
-const contentGlobals = devtoolsRequire("devtools/server/content-globals");
-
 // The following adds Debugger constructor to the global namespace.
 const { addDebuggerToGlobal } = require('resource://gre/modules/jsdebugger.jsm');
 addDebuggerToGlobal(this);
 
 exports.testDebugMetadata = function(assert, done) {
   let dbg = new Debugger;
   let globalDebuggees = [];
   dbg.onNewGlobalObject = function(global) {
@@ -41,26 +37,14 @@ exports.testDebugMetadata = function(ass
           return false;
         }
       }), "one of the globals is a content script");
       done();
     }
   );
 };
 
-exports.testDevToolsExtensionsGetContentGlobals = function(assert, done) {
-  let mods = testPageMod(assert, done, "about:", [{
-      include: "about:",
-      contentScriptWhen: "start",
-      contentScript: "null;",
-    }], function(win, done) {
-      assert.equal(contentGlobals.getContentGlobals({ 'inner-window-id': getInnerId(win) }).length, 1);
-      done();
-    }
-  );
-};
-
 after(exports, function*(name, assert) {
   assert.pass("cleaning ui.");
   yield cleanUI();
 });
 
 require('sdk/test').run(exports);
--- a/addon-sdk/source/test/test-xpcom.js
+++ b/addon-sdk/source/test/test-xpcom.js
@@ -140,16 +140,17 @@ function testRegister(assert, text) {
       newChannel : function(aURI, aLoadInfo) {
         var ios = Cc["@mozilla.org/network/io-service;1"].
                   getService(Ci.nsIIOService);
 
         var uri = ios.newURI("data:text/plain;charset=utf-8," + text);
         var channel = ios.newChannelFromURIWithLoadInfo(uri, aLoadInfo);
 
         channel.originalURI = aURI;
+        aLoadInfo.resultPrincipalURI = aURI;
         return channel;
       },
       getURIFlags: function(aURI) {
         return Ci.nsIAboutModule.ALLOW_SCRIPT;
       }
     })
   });
 
--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -112,16 +112,20 @@
     <emItem blockID="i523" id="/^({7e8a1050-cf67-4575-92df-dcc60e7d952d}|{b3420a9c-a397-4409-b90d-bcf22da1a08a}|{eca6641f-2176-42ba-bdbe-f3e327f8e0af}|{707dca12-3f99-4d94-afea-06dcc0ae0108}|{aea20431-87fc-40be-bc5b-18066fe2819c}|{30ee6676-1ba6-455a-a7e8-298fa863a546})$/">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i732" id="{e935dd68-f90d-46a6-b89e-c4657534b353}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
+    <emItem blockID="edad04eb-ea16-42f3-a4a7-20dded33cc37" id="@safesearchscoutee">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
     <emItem blockID="i436" id="/(\{7aeae561-714b-45f6-ace3-4a8aed6e227b\})|(\{01e86e69-a2f8-48a0-b068-83869bdba3d0\})|(\{77f5fe49-12e3-4cf5-abb4-d993a0164d9e\})/">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
     <emItem blockID="i700" id="2bbadf1f-a5af-499f-9642-9942fcdb7c76@f05a14cc-8842-4eee-be17-744677a917ed.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
@@ -176,16 +180,20 @@
     <emItem blockID="i626" id="{20AD702C-661E-4534-8CE9-BA4EC9AD6ECC}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i334" id="{0F827075-B026-42F3-885D-98981EE7B1AE}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
+    <emItem blockID="3fd71895-7fc6-4f3f-aa22-1cbb0c5fd922" id="/^({95E84BD3-3604-4AAC-B2CA-D9AC3E55B64B}|{E3605470-291B-44EB-8648-745EE356599A}|{95E5E0AD-65F9-4FFC-A2A2-0008DCF6ED25}|{FF20459C-DA6E-41A7-80BC-8F4FEFD9C575}|{6E727987-C8EA-44DA-8749-310C0FBE3C3E}|{12E8A6C2-B125-479F-AB3C-13B8757C7F04}|{EB6628CF-0675-4DAE-95CE-EFFA23169743})$/">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
     <emItem blockID="i716" id="{cc6cc772-f121-49e0-b1f0-c26583cb0c5e}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i501" id="xivars@aol.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
@@ -3642,18 +3650,18 @@
       <serialNumber>BAAAAAABJ/v3ZwA=</serialNumber>
     </certItem>
     <certItem issuerName="MDIxCzAJBgNVBAYTAkNOMQ4wDAYDVQQKEwVDTk5JQzETMBEGA1UEAxMKQ05OSUMgUk9PVA==">
       <serialNumber>STMAjg==</serialNumber>
     </certItem>
     <certItem issuerName="MCgxCzAJBgNVBAYTAkJFMRkwFwYDVQQDExBCZWxnaXVtIFJvb3QgQ0Ey">
       <serialNumber>frj5jTuqBnQ4fljPvVU3KA==</serialNumber>
     </certItem>
-    <certItem issuerName="MFwxCzAJBgNVBAYTAlVTMRkwFwYDVQQKDBBWZXJpem9uIEJ1c2luZXNzMREwDwYDVQQLDAhPbW5pUm9vdDEfMB0GA1UEAwwWVmVyaXpvbiBHbG9iYWwgUm9vdCBDQQ==">
-      <serialNumber>A4g</serialNumber>
+    <certItem issuerName="MIGFMQswCQYDVQQGEwJVUzEgMB4GA1UECgwXV2VsbHMgRmFyZ28gV2VsbHNTZWN1cmUxHDAaBgNVBAsME1dlbGxzIEZhcmdvIEJhbmsgTkExNjA0BgNVBAMMLVdlbGxzU2VjdXJlIFB1YmxpYyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eQ==">
+      <serialNumber>AMs=</serialNumber>
     </certItem>
     <certItem issuerName="MHExKDAmBgNVBAMTH0dsb2JhbFNpZ24gUm9vdFNpZ24gUGFydG5lcnMgQ0ExHTAbBgNVBAsTFFJvb3RTaWduIFBhcnRuZXJzIENBMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMQswCQYDVQQGEwJCRQ==">
       <serialNumber>BAAAAAABFqoAZoI=</serialNumber>
     </certItem>
     <certItem issuerName="MIGVMQswCQYDVQQGEwJHUjFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTE=">
       <serialNumber>GN2Hrh9LtnM=</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
@@ -3696,19 +3704,16 @@
       <serialNumber>fbsHfUkagQtznc3rtY1uDg==</serialNumber>
     </certItem>
     <certItem issuerName="MD0xCzAJBgNVBAYTAkZSMREwDwYDVQQKEwhDZXJ0cGx1czEbMBkGA1UEAxMSQ2xhc3MgMiBQcmltYXJ5IENB">
       <serialNumber>ESBqoILo90ntDW7OTK43MS2F</serialNumber>
     </certItem>
     <certItem issuerName="MIG8MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTEwMTYwNAYDVQQDEy1WZXJpU2lnbiBDbGFzcyAzIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gRzM=">
       <serialNumber>BYyEX2b5+K+myAIR7eXaRQ==</serialNumber>
     </certItem>
-    <certItem issuerName="MIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp">
-      <serialNumber>OGPFrg=</serialNumber>
-    </certItem>
     <certItem issuerName="MFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxTaWduIFJvb3QgQ0E=">
       <serialNumber>BAAAAAABLF5/Gog=</serialNumber>
     </certItem>
     <certItem issuerName="MIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp">
       <serialNumber>TA6BjA==</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdERk4tUEtJMSQwIgYDVQQDExtERk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDE=">
       <serialNumber>CqnbFQ==</serialNumber>
@@ -3753,19 +3758,16 @@
       <serialNumber>Er0moq4zwH8ke2pYafIKdg==</serialNumber>
     </certItem>
     <certItem issuerName="MIGBMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTElMCMGA1UECxMcUHJpbWFyeSBPYmplY3QgUHVibGlzaGluZyBDQTEwMC4GA1UEAxMnR2xvYmFsU2lnbiBQcmltYXJ5IE9iamVjdCBQdWJsaXNoaW5nIENB">
       <serialNumber>BAAAAAABHkSl7L4=</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
       <serialNumber>BydiAg==</serialNumber>
     </certItem>
-    <certItem issuerName="MF8xCzAJBgNVBAYTAlRXMRIwEAYDVQQKDAlUQUlXQU4tQ0ExEDAOBgNVBAsMB1Jvb3QgQ0ExKjAoBgNVBAMMIVRXQ0EgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==">
-      <serialNumber>QAEy3RIAAAAAAAAMweH5dw=</serialNumber>
-    </certItem>
     <certItem issuerName="MDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTQ==">
       <serialNumber>Eg==</serialNumber>
     </certItem>
     <certItem issuerName="MEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDM=">
       <serialNumber>Cj0=</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
       <serialNumber>Bydxog==</serialNumber>
@@ -3777,18 +3779,18 @@
       <serialNumber>MABJSw==</serialNumber>
     </certItem>
     <certItem issuerName="MD0xCzAJBgNVBAYTAkZSMREwDwYDVQQKEwhDZXJ0cGx1czEbMBkGA1UEAxMSQ2xhc3MgMiBQcmltYXJ5IENB">
       <serialNumber>ESCVop+Q4/OBgtf4WJkr01Gh</serialNumber>
     </certItem>
     <certItem issuerName="MIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMw==">
       <serialNumber>Pgyeh2mqlVzqI9hFntRbUQ==</serialNumber>
     </certItem>
-    <certItem issuerName="MFwxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExGzAZBgNVBAMTElRydXN0ZWQgUm9vdCBDQSBHMg==">
-      <serialNumber>LAVIFm0MWZYH+Sv8Vf+IqkM</serialNumber>
+    <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
+      <serialNumber>ByfDtA==</serialNumber>
     </certItem>
     <certItem issuerName="MIG8MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTEwMTYwNAYDVQQDEy1WZXJpU2lnbiBDbGFzcyAzIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gRzM=">
       <serialNumber>Gd/pPu+qLnXUdvP9sW73CQ==</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdERk4tUEtJMSQwIgYDVQQDExtERk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDE=">
       <serialNumber>F5Bg6C237Q==</serialNumber>
     </certItem>
     <certItem issuerName="MD0xCzAJBgNVBAYTAkZSMREwDwYDVQQKEwhDZXJ0cGx1czEbMBkGA1UEAxMSQ2xhc3MgMiBQcmltYXJ5IENB">
@@ -3816,19 +3818,16 @@
       <serialNumber>AKrMYlJmUUin8FOM/0TJrmk=</serialNumber>
     </certItem>
     <certItem issuerName="MEQxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR0wGwYDVQQDExRHZW9UcnVzdCBTU0wgQ0EgLSBHMw==">
       <serialNumber>RUT1Gehd1KKYPfqOlgspoQ==</serialNumber>
     </certItem>
     <certItem issuerName="MHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWU=">
       <serialNumber>KuzHPJLdK5hNgJRo3R47Ag==</serialNumber>
     </certItem>
-    <certItem issuerName="MFwxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExGzAZBgNVBAMTElRydXN0ZWQgUm9vdCBDQSBHMg==">
-      <serialNumber>YUlF+VXF2FWFqCo472HfZlw</serialNumber>
-    </certItem>
     <certItem issuerName="MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==">
       <serialNumber>WJ2qHzWUqTk=</serialNumber>
     </certItem>
     <certItem issuerName="MIGVMQswCQYDVQQGEwJHUjFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTE=">
       <serialNumber>AQAAAAQ=</serialNumber>
     </certItem>
     <certItem issuerName="MGgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR0wGwYDVQQLExREb21haW4gVmFsaWRhdGVkIFNTTDEiMCAGA1UEAxMZR2VvVHJ1c3QgRFYgU1NMIFNIQTI1NiBDQQ==">
       <serialNumber>OE4/d+p3YRzzcSl+kmZ8Mw==</serialNumber>
@@ -3846,16 +3845,19 @@
       <serialNumber>OYBKgxEHpW/8XGAGAlvJyMA=</serialNumber>
     </certItem>
     <certItem issuerName="MIG8MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTEwMTYwNAYDVQQDEy1WZXJpU2lnbiBDbGFzcyAzIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gRzM=">
       <serialNumber>bzTw0uq05TUYEGS98bh0Ww==</serialNumber>
     </certItem>
     <certItem issuerName="MIGXMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTEfMB0GA1UEAxMWVVROLVVTRVJGaXJzdC1IYXJkd2FyZQ==">
       <serialNumber>EEpERSryZFMagbsNw/WoWQ==</serialNumber>
     </certItem>
+    <certItem issuerName="MFwxCzAJBgNVBAYTAlVTMRkwFwYDVQQKDBBWZXJpem9uIEJ1c2luZXNzMREwDwYDVQQLDAhPbW5pUm9vdDEfMB0GA1UEAwwWVmVyaXpvbiBHbG9iYWwgUm9vdCBDQQ==">
+      <serialNumber>A4w=</serialNumber>
+    </certItem>
     <certItem issuerName="MFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RDQTEx">
       <serialNumber>Aw==</serialNumber>
     </certItem>
     <certItem issuerName="MEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDM=">
       <serialNumber>CSU=</serialNumber>
     </certItem>
     <certItem issuerName="MHExKDAmBgNVBAMTH0dsb2JhbFNpZ24gUm9vdFNpZ24gUGFydG5lcnMgQ0ExHTAbBgNVBAsTFFJvb3RTaWduIFBhcnRuZXJzIENBMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMQswCQYDVQQGEwJCRQ==">
       <serialNumber>BAAAAAABHkSHlSo=</serialNumber>
@@ -3864,40 +3866,37 @@
       <serialNumber>QDi5sA==</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
       <serialNumber>Bydp0g==</serialNumber>
     </certItem>
     <certItem issuerName="MHExKDAmBgNVBAMTH0dsb2JhbFNpZ24gUm9vdFNpZ24gUGFydG5lcnMgQ0ExHTAbBgNVBAsTFFJvb3RTaWduIFBhcnRuZXJzIENBMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMQswCQYDVQQGEwJCRQ==">
       <serialNumber>BAAAAAABM6d3Z0s=</serialNumber>
     </certItem>
+    <certItem issuerName="MD8xJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjEXMBUGA1UEAxMORFNUIFJvb3QgQ0EgWDM=">
+      <serialNumber>APt5i5rs4dIIQPwZdk9/ISc=</serialNumber>
+    </certItem>
     <certItem issuerName="MEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDM=">
       <serialNumber>CjM=</serialNumber>
     </certItem>
     <certItem issuerName="MHExKDAmBgNVBAMTH0dsb2JhbFNpZ24gUm9vdFNpZ24gUGFydG5lcnMgQ0ExHTAbBgNVBAsTFFJvb3RTaWduIFBhcnRuZXJzIENBMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMQswCQYDVQQGEwJCRQ==">
       <serialNumber>BAAAAAABGMG0Gmw=</serialNumber>
     </certItem>
     <certItem issuerName="MG0xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRswGQYDVQQLExJQcmltYXJ5IENsYXNzIDIgQ0ExJjAkBgNVBAMTHUdsb2JhbFNpZ24gUHJpbWFyeSBDbGFzcyAyIENB">
       <serialNumber>BAAAAAABHkSl6Co=</serialNumber>
     </certItem>
     <certItem issuerName="MGExCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR0wGwYDVQQLExREb21haW4gVmFsaWRhdGVkIFNTTDEbMBkGA1UEAxMSR2VvVHJ1c3QgRFYgU1NMIENB">
       <serialNumber>CWhp</serialNumber>
     </certItem>
     <certItem issuerName="MEExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxUaGF3dGUsIEluYy4xGzAZBgNVBAMTElRoYXd0ZSBTR0MgQ0EgLSBHMg==">
       <serialNumber>cDggUYfwJ3A1YcdoeT6s4A==</serialNumber>
     </certItem>
-    <certItem issuerName="MFwxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExGzAZBgNVBAMTElRydXN0ZWQgUm9vdCBDQSBHMg==">
-      <serialNumber>RVWTeb5EKqE7cy7MUD2oJ3M</serialNumber>
-    </certItem>
     <certItem issuerName="MEQxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUsIEluYy4xHjAcBgNVBAMTFXRoYXd0ZSBFViBTU0wgQ0EgLSBHMw==">
       <serialNumber>CrTHPEE6AZSfI3jysin2bA==</serialNumber>
     </certItem>
-    <certItem issuerName="MGMxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExIjAgBgNVBAMTGVRydXN0ZWQgUm9vdCBDQSBTSEEyNTYgRzI=">
-      <serialNumber>RdHgEmEIjdyRFWDRRlk</serialNumber>
-    </certItem>
     <certItem issuerName="MFwxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xLTArBgNVBAMMJFN0YWF0IGRlciBOZWRlcmxhbmRlbiBCdXJnZXIgQ0EgLSBHMg==">
       <serialNumber>ATE3ew==</serialNumber>
     </certItem>
     <certItem issuerName="MFYxCzAJBgNVBAYTAkpQMQ8wDQYDVQQKEwZKSVBERUMxGjAYBgNVBAsTEUpDQU4gU3ViIFJvb3QgQ0EwMRowGAYDVQQDExFKQ0FOIFN1YiBSb290IENBMA==">
       <serialNumber>BAAAAAABL07hTcY=</serialNumber>
     </certItem>
     <certItem issuerName="MGMxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUsIEluYy4xHTAbBgNVBAsTFERvbWFpbiBWYWxpZGF0ZWQgU1NMMR4wHAYDVQQDExV0aGF3dGUgRFYgU1NMIENBIC0gRzI=">
       <serialNumber>E5I2y6sIonl4a+TmlXc7fw==</serialNumber>
@@ -3945,46 +3944,46 @@
       <serialNumber>YRJNfMoc12IpmW+Enpv3Pdo=</serialNumber>
     </certItem>
     <certItem issuerName="MEQxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR0wGwYDVQQDExRHZW9UcnVzdCBTU0wgQ0EgLSBHMg==">
       <serialNumber>VfTSum25nb65YPlpuhJAvg==</serialNumber>
     </certItem>
     <certItem issuerName="MGYxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR0wGwYDVQQLExREb21haW4gVmFsaWRhdGVkIFNTTDEgMB4GA1UEAxMXR2VvVHJ1c3QgRFYgU1NMIENBIC0gRzM=">
       <serialNumber>UW3oKZKTDsrPy/rfwmGNaQ==</serialNumber>
     </certItem>
+    <certItem issuerName="MF8xCzAJBgNVBAYTAlRXMRIwEAYDVQQKDAlUQUlXQU4tQ0ExEDAOBgNVBAsMB1Jvb3QgQ0ExKjAoBgNVBAMMIVRXQ0EgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==">
+      <serialNumber>QAEy3RIAAAAAAAAMweH5dw==</serialNumber>
+    </certItem>
     <certItem issuerName="MEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0E=">
       <serialNumber>AjpW</serialNumber>
     </certItem>
     <certItem issuerName="MH4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazEvMC0GA1UEAxMmU3ltYW50ZWMgQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzQ=">
       <serialNumber>E77H6yvyFQjO0PcN3x0H+Q==</serialNumber>
     </certItem>
+    <certItem issuerName="MF8xCzAJBgNVBAYTAlRXMRIwEAYDVQQKDAlUQUlXQU4tQ0ExEDAOBgNVBAsMB1Jvb3QgQ0ExKjAoBgNVBAMMIVRXQ0EgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==">
+      <serialNumber>DL8=</serialNumber>
+    </certItem>
     <certItem issuerName="MEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDM=">
       <serialNumber>B+U=</serialNumber>
     </certItem>
-    <certItem issuerName="MIGFMQswCQYDVQQGEwJVUzEgMB4GA1UECgwXV2VsbHMgRmFyZ28gV2VsbHNTZWN1cmUxHDAaBgNVBAsME1dlbGxzIEZhcmdvIEJhbmsgTkExNjA0BgNVBAMMLVdlbGxzU2VjdXJlIFB1YmxpYyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eQ==">
-      <serialNumber>AZ0</serialNumber>
-    </certItem>
     <certItem issuerName="MEYxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR8wHQYDVQQDExZHZW9UcnVzdCBTSEEyNTYgU1NMIENB">
       <serialNumber>OUvvVscW0/NltofkmV9qmg==</serialNumber>
     </certItem>
     <certItem issuerName="MGYxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR0wGwYDVQQLExREb21haW4gVmFsaWRhdGVkIFNTTDEgMB4GA1UEAxMXR2VvVHJ1c3QgRFYgU1NMIENBIC0gRzI=">
       <serialNumber>EDQMI0tR4kSntv1O37N10g==</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdERk4tUEtJMSQwIgYDVQQDExtERk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDE=">
       <serialNumber>Cbssdw==</serialNumber>
     </certItem>
     <certItem issuerName="MEQxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR0wGwYDVQQDExRHZW9UcnVzdCBTU0wgQ0EgLSBHMg==">
       <serialNumber>WX89jn8yGZVvoKTD9jDfRQ==</serialNumber>
     </certItem>
     <certItem issuerName="MIG8MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTEwMTYwNAYDVQQDEy1WZXJpU2lnbiBDbGFzcyAzIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gRzM=">
       <serialNumber>JV/LVzSKI/wsDgg3UuZHlA==</serialNumber>
     </certItem>
-    <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
-      <serialNumber>Byemag=</serialNumber>
-    </certItem>
     <certItem issuerName="MGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAx">
       <serialNumber>U+1Y1QpJc0FOR5JdCJ01gQ==</serialNumber>
     </certItem>
     <certItem issuerName="MD0xCzAJBgNVBAYTAkZSMREwDwYDVQQKEwhDZXJ0cGx1czEbMBkGA1UEAxMSQ2xhc3MgMiBQcmltYXJ5IENB">
       <serialNumber>ESISuBo/wdW2tBztKmHdFCFz</serialNumber>
     </certItem>
     <certItem issuerName="MIG8MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTEwMTYwNAYDVQQDEy1WZXJpU2lnbiBDbGFzcyAzIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gRzM=">
       <serialNumber>NMpMcEnex3eXx4ohk9glcQ==</serialNumber>
@@ -3999,22 +3998,22 @@
       <serialNumber>LizeWXFWP5pZPI/dLc+PVQ==</serialNumber>
     </certItem>
     <certItem issuerName="MIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMw==">
       <serialNumber>TrKEMhb2PKktH8lHg0AV5A==</serialNumber>
     </certItem>
     <certItem issuerName="MIGVMQswCQYDVQQGEwJHUjFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTE=">
       <serialNumber>GN2Hrh9LtnA=</serialNumber>
     </certItem>
-    <certItem issuerName="MFwxCzAJBgNVBAYTAlVTMRkwFwYDVQQKDBBWZXJpem9uIEJ1c2luZXNzMREwDwYDVQQLDAhPbW5pUm9vdDEfMB0GA1UEAwwWVmVyaXpvbiBHbG9iYWwgUm9vdCBDQQ==">
-      <serialNumber>A4w</serialNumber>
-    </certItem>
     <certItem issuerName="MHMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazEkMCIGA1UEAxMbU3ltYW50ZWMgQ2xhc3MgMyBEU0EgU1NMIENB">
       <serialNumber>AuhvPsYZfVP6UDsuyjeZ4Q==</serialNumber>
     </certItem>
+    <certItem issuerName="MDMxCzAJBgNVBAYTAlBUMQ0wCwYDVQQKDARTQ0VFMRUwEwYDVQQDDAxFQ1JhaXpFc3RhZG8=">
+      <serialNumber>cx0HrIEQg8JHWTP7DzOxSQ==</serialNumber>
+    </certItem>
     <certItem issuerName="MHExKDAmBgNVBAMTH0dsb2JhbFNpZ24gUm9vdFNpZ24gUGFydG5lcnMgQ0ExHTAbBgNVBAsTFFJvb3RTaWduIFBhcnRuZXJzIENBMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMQswCQYDVQQGEwJCRQ==">
       <serialNumber>BAAAAAABJ/ufRdg=</serialNumber>
     </certItem>
     <certItem issuerName="MIGVMQswCQYDVQQGEwJHUjFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTE=">
       <serialNumber>FJl6tXgNpSg=</serialNumber>
     </certItem>
     <certItem issuerName="MFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxTaWduIFJvb3QgQ0E=">
       <serialNumber>BAAAAAABIBnBjWg=</serialNumber>
@@ -4035,40 +4034,43 @@
       <serialNumber>Qh/O5w==</serialNumber>
     </certItem>
     <certItem issuerName="MH4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazEvMC0GA1UEAxMmU3ltYW50ZWMgQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzQ=">
       <serialNumber>UMUwXwT1Z4juyQ/CNTf4mw==</serialNumber>
     </certItem>
     <certItem issuerName="MEoxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEZMBcGA1UEAxMQU2VjdXJlIEdsb2JhbCBDQQ==">
       <serialNumber>QAAnEQ==</serialNumber>
     </certItem>
+    <certItem issuerName="MFwxCzAJBgNVBAYTAlVTMRkwFwYDVQQKDBBWZXJpem9uIEJ1c2luZXNzMREwDwYDVQQLDAhPbW5pUm9vdDEfMB0GA1UEAwwWVmVyaXpvbiBHbG9iYWwgUm9vdCBDQQ==">
+      <serialNumber>A4g=</serialNumber>
+    </certItem>
     <certItem issuerName="MH4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazEvMC0GA1UEAxMmU3ltYW50ZWMgQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzQ=">
       <serialNumber>d8AtKymQwkOPDBj+hjPzFg==</serialNumber>
     </certItem>
     <certItem issuerName="MHExKDAmBgNVBAMTH0dsb2JhbFNpZ24gUm9vdFNpZ24gUGFydG5lcnMgQ0ExHTAbBgNVBAsTFFJvb3RTaWduIFBhcnRuZXJzIENBMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMQswCQYDVQQGEwJCRQ==">
       <serialNumber>BAAAAAABJZbEU4I=</serialNumber>
     </certItem>
     <certItem issuerName="MGMxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUsIEluYy4xHTAbBgNVBAsTFERvbWFpbiBWYWxpZGF0ZWQgU1NMMR4wHAYDVQQDExV0aGF3dGUgRFYgU1NMIENBIC0gRzI=">
       <serialNumber>IIxFSyNM6mWtCgTG0IL3Og==</serialNumber>
     </certItem>
     <certItem issuerName="MEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0E=">
       <serialNumber>Ajp/</serialNumber>
     </certItem>
     <certItem issuerName="MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dD">
       <serialNumber>Ew1ee9Jq7Q/Dig3ACF4V6Q==</serialNumber>
     </certItem>
+    <certItem issuerName="MFwxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExGzAZBgNVBAMTElRydXN0ZWQgUm9vdCBDQSBHMg==">
+      <serialNumber>RVWTeb5EKqE7cy7MUD2oJ3M=</serialNumber>
+    </certItem>
     <certItem issuerName="MGYxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR0wGwYDVQQLExREb21haW4gVmFsaWRhdGVkIFNTTDEgMB4GA1UEAxMXR2VvVHJ1c3QgRFYgU1NMIENBIC0gRzM=">
       <serialNumber>ORFgmCj072NjcJnrxOMfQA==</serialNumber>
     </certItem>
     <certItem issuerName="MGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAx">
       <serialNumber>HxT1XSjIpzjMprp9Qu1gYQ==</serialNumber>
     </certItem>
-    <certItem issuerName="MF8xCzAJBgNVBAYTAlRXMRIwEAYDVQQKDAlUQUlXQU4tQ0ExEDAOBgNVBAsMB1Jvb3QgQ0ExKjAoBgNVBAMMIVRXQ0EgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==">
-      <serialNumber>DL8</serialNumber>
-    </certItem>
     <certItem issuerName="MFYxCzAJBgNVBAYTAkpQMQ8wDQYDVQQKEwZKSVBERUMxGjAYBgNVBAsTEUpDQU4gU3ViIFJvb3QgQ0EwMRowGAYDVQQDExFKQ0FOIFN1YiBSb290IENBMA==">
       <serialNumber>BAAAAAABL07hUBg=</serialNumber>
     </certItem>
     <certItem issuerName="MIGQMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDE2MDQGA1UEAxMtQ09NT0RPIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB">
       <serialNumber>UoRGnb96CUDTxIqVry6LBg==</serialNumber>
     </certItem>
     <certItem issuerName="MD0xCzAJBgNVBAYTAkZSMREwDwYDVQQKEwhDZXJ0cGx1czEbMBkGA1UEAxMSQ2xhc3MgMiBQcmltYXJ5IENB">
       <serialNumber>ESDYXNBhF+dePFjojs7u2vj1</serialNumber>
@@ -4080,28 +4082,22 @@
       <serialNumber>Cfk9qg==</serialNumber>
     </certItem>
     <certItem issuerName="MGExCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xMjAwBgNVBAMMKVN0YWF0IGRlciBOZWRlcmxhbmRlbiBPcmdhbmlzYXRpZSBDQSAtIEcy">
       <serialNumber>ATE0vw==</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
       <serialNumber>BydInw==</serialNumber>
     </certItem>
-    <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
-      <serialNumber>ByemaQ=</serialNumber>
-    </certItem>
     <certItem issuerName="MFwxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExGzAZBgNVBAMTElRydXN0ZWQgUm9vdCBDQSBHMg==">
       <serialNumber>F7PAjw2k0dTX5escPnyVOBo=</serialNumber>
     </certItem>
     <certItem issuerName="ME0xCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxJzAlBgNVBAMTHkRpZ2lDZXJ0IFNIQTIgU2VjdXJlIFNlcnZlciBDQQ==">
       <serialNumber>Aa8e+91erglSMgsk/mtVaA==</serialNumber>
     </certItem>
-    <certItem issuerName="MEgxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEXMBUGA1UEAxMOU2VjdXJlVHJ1c3QgQ0E=">
-      <serialNumber>R/j2qA=</serialNumber>
-    </certItem>
     <certItem issuerName="MEoxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEZMBcGA1UEAxMQU2VjdXJlIEdsb2JhbCBDQQ==">
       <serialNumber>TXxtAQ==</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdERk4tUEtJMSQwIgYDVQQDExtERk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDE=">
       <serialNumber>CskruA==</serialNumber>
     </certItem>
     <certItem issuerName="MDQxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25h">
       <serialNumber>Ig==</serialNumber>
@@ -4119,34 +4115,31 @@
       <serialNumber>Byc68g==</serialNumber>
     </certItem>
     <certItem issuerName="MEQxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR0wGwYDVQQDExRHZW9UcnVzdCBTU0wgQ0EgLSBHMg==">
       <serialNumber>SdegFrLaFTCsoMAW5ED+zA==</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdERk4tUEtJMSQwIgYDVQQDExtERk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDE=">
       <serialNumber>EAdmaA==</serialNumber>
     </certItem>
-    <certItem issuerName="MGMxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExIjAgBgNVBAMTGVRydXN0ZWQgUm9vdCBDQSBTSEEyNTYgRzI=">
-      <serialNumber>RvCM2iRdkCE82ZOO2dU</serialNumber>
-    </certItem>
-    <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
-      <serialNumber>Bydvrw=</serialNumber>
-    </certItem>
     <certItem issuerName="MDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTQ==">
       <serialNumber>EQ==</serialNumber>
     </certItem>
     <certItem issuerName="MHExKDAmBgNVBAMTH0dsb2JhbFNpZ24gUm9vdFNpZ24gUGFydG5lcnMgQ0ExHTAbBgNVBAsTFFJvb3RTaWduIFBhcnRuZXJzIENBMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMQswCQYDVQQGEwJCRQ==">
       <serialNumber>BAAAAAABGMGjftY=</serialNumber>
     </certItem>
     <certItem issuerName="MD8xCzAJBgNVBAYTAlRXMTAwLgYDVQQKDCdHb3Zlcm5tZW50IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHk=">
       <serialNumber>APdCebq8ZyZr/T0luxlicNw=</serialNumber>
     </certItem>
     <certItem issuerName="MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==">
       <serialNumber>OfJBIhFwAdQ=</serialNumber>
     </certItem>
+    <certItem issuerName="MFwxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExGzAZBgNVBAMTElRydXN0ZWQgUm9vdCBDQSBHMg==">
+      <serialNumber>YUlF+VXF2FWFqCo472HfZlw=</serialNumber>
+    </certItem>
     <certItem issuerName="MHExKDAmBgNVBAMTH0dsb2JhbFNpZ24gUm9vdFNpZ24gUGFydG5lcnMgQ0ExHTAbBgNVBAsTFFJvb3RTaWduIFBhcnRuZXJzIENBMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMQswCQYDVQQGEwJCRQ==">
       <serialNumber>BAAAAAABHkSHjz8=</serialNumber>
     </certItem>
     <certItem issuerName="MF8xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRQwEgYDVQQLEwtQYXJ0bmVycyBDQTEfMB0GA1UEAxMWR2xvYmFsU2lnbiBQYXJ0bmVycyBDQQ==">
       <serialNumber>BAAAAAABF2Tb8Bc=</serialNumber>
     </certItem>
     <certItem issuerName="MGMxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUsIEluYy4xHTAbBgNVBAsTFERvbWFpbiBWYWxpZGF0ZWQgU1NMMR4wHAYDVQQDExV0aGF3dGUgRFYgU1NMIENBIC0gRzI=">
       <serialNumber>BUrYjru5px1ym4QUN33TOQ==</serialNumber>
@@ -4167,40 +4160,43 @@
       <serialNumber>P6G7IYSL2RZxtzTh8I6qPA==</serialNumber>
     </certItem>
     <certItem issuerName="MGcxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpGcmF1bmhvZmVyMSEwHwYDVQQLExhGcmF1bmhvZmVyIENvcnBvcmF0ZSBQS0kxIDAeBgNVBAMTF0ZyYXVuaG9mZXIgUm9vdCBDQSAyMDA3">
       <serialNumber>YR3YYQAAAAAABA==</serialNumber>
     </certItem>
     <certItem issuerName="MEcxCzAJBgNVBAYTAkhLMRYwFAYDVQQKEw1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25na29uZyBQb3N0IFJvb3QgQ0EgMQ==">
       <serialNumber>BHk=</serialNumber>
     </certItem>
-    <certItem issuerName="MIG+MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMDkgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MTIwMAYDVQQDEylFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMg==">
-      <serialNumber>UdNjvA=</serialNumber>
-    </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
       <serialNumber>ByfNeA==</serialNumber>
     </certItem>
     <certItem issuerName="MIGQMQswCQYDVQQGEwJHUjFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxOzA5BgNVBAMTMkFyaXN0b3RsZSBVbml2ZXJzaXR5IG9mIFRoZXNzYWxvbmlraSBDZW50cmFsIENBIFI0">
       <serialNumber>EqthLKdUgwI=</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAkZSMRMwEQYDVQQKEwpDZXJ0aW5vbWlzMRcwFQYDVQQLEw4wMDAyIDQzMzk5ODkwMzEdMBsGA1UEAxMUQ2VydGlub21pcyAtIFJvb3QgQ0E=">
       <serialNumber>J8mznxvTvOR5p4Br3a3sm5j5iM0=</serialNumber>
     </certItem>
     <certItem issuerName="MHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWU=">
       <serialNumber>M64Z5ufZzDRVTHkJR1uXzw==</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
       <serialNumber>BydKkg==</serialNumber>
     </certItem>
+    <certItem issuerName="MIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp">
+      <serialNumber>OGPFrg==</serialNumber>
+    </certItem>
     <certItem issuerName="MIG8MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTEwMTYwNAYDVQQDEy1WZXJpU2lnbiBDbGFzcyAzIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gRzM=">
       <serialNumber>LdbnCbsA9sOgI4mkUpWXPw==</serialNumber>
     </certItem>
     <certItem issuerName="MD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQQ==">
       <serialNumber>e7wSpVxmgAS5/ioLi2iBIA==</serialNumber>
     </certItem>
+    <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
+      <serialNumber>Byemag==</serialNumber>
+    </certItem>
     <certItem issuerName="MEExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUsIEluYy4xGzAZBgNVBAMTEnRoYXd0ZSBTU0wgQ0EgLSBHMg==">
       <serialNumber>FNISyWWTGi5Yco6fGh58/A==</serialNumber>
     </certItem>
     <certItem issuerName="MIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA3IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHNA==">
       <serialNumber>cXXMzbWDHMIdCotb3h64yw==</serialNumber>
     </certItem>
     <certItem issuerName="MHExKDAmBgNVBAMTH0dsb2JhbFNpZ24gUm9vdFNpZ24gUGFydG5lcnMgQ0ExHTAbBgNVBAsTFFJvb3RTaWduIFBhcnRuZXJzIENBMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMQswCQYDVQQGEwJCRQ==">
       <serialNumber>BAAAAAABA/A35EU=</serialNumber>
@@ -4251,34 +4247,31 @@
       <serialNumber>BAAAAAABKUXDqA8=</serialNumber>
     </certItem>
     <certItem issuerName="MH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5">
       <serialNumber>Qh/SnQ==</serialNumber>
     </certItem>
     <certItem issuerName="MIGXMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTEfMB0GA1UEAxMWVVROLVVTRVJGaXJzdC1IYXJkd2FyZQ==">
       <serialNumber>Xrr31RF0DoIzMKXS6XtD+g==</serialNumber>
     </certItem>
-    <certItem issuerName="MGMxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExIjAgBgNVBAMTGVRydXN0ZWQgUm9vdCBDQSBTSEEyNTYgRzI=">
-      <serialNumber>Rea7UUYH3jl33BryPIo</serialNumber>
-    </certItem>
-    <certItem issuerName="MFwxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExGzAZBgNVBAMTElRydXN0ZWQgUm9vdCBDQSBHMg==">
-      <serialNumber>QM1zZ4GZ4gfwpQtUYye3Ne0</serialNumber>
-    </certItem>
     <certItem issuerName="MF8xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRQwEgYDVQQLEwtQYXJ0bmVycyBDQTEfMB0GA1UEAxMWR2xvYmFsU2lnbiBQYXJ0bmVycyBDQQ==">
       <serialNumber>BAAAAAABCFiEp9s=</serialNumber>
     </certItem>
     <certItem issuerName="MH4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazEvMC0GA1UEAxMmU3ltYW50ZWMgQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzQ=">
       <serialNumber>PAdKZPiaac2CvPxbOrsHOw==</serialNumber>
     </certItem>
-    <certItem issuerName="MFwxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExGzAZBgNVBAMTElRydXN0ZWQgUm9vdCBDQSBHMg==">
-      <serialNumber>IHj3eiEK3K1Xrpu1uvtBuvE</serialNumber>
-    </certItem>
     <certItem issuerName="MIGVMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTEdMBsGA1UEAxMUVVROLVVTRVJGaXJzdC1PYmplY3Q=">
       <serialNumber>a9rf7/BmG9JkKvRuy7J5QA==</serialNumber>
     </certItem>
+    <certItem issuerName="MFwxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExGzAZBgNVBAMTElRydXN0ZWQgUm9vdCBDQSBHMg==">
+      <serialNumber>QM1zZ4GZ4gfwpQtUYye3Ne0=</serialNumber>
+    </certItem>
+    <certItem issuerName="MFcxCzAJBgNVBAYTAlRXMQ4wDAYDVQQKEwVUYWlDQTESMBAGA1UECxMJUG9saWN5IENBMSQwIgYDVQQDExtUYWlDQSBJbmZvcm1hdGlvbiBQb2xpY3kgQ0E=">
+      <serialNumber>UbQGvw==</serialNumber>
+    </certItem>
     <certItem issuerName="MDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMCREU=">
       <serialNumber>M0VSOewW3WI=</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdERk4tUEtJMSQwIgYDVQQDExtERk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDE=">
       <serialNumber>CcHC/g==</serialNumber>
     </certItem>
     <certItem issuerName="MIG9MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5">
       <serialNumber>Xbevr3ut3Z9m1GuXC9SonA==</serialNumber>
@@ -4347,16 +4340,19 @@
       <serialNumber>ByfFnw==</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdERk4tUEtJMSQwIgYDVQQDExtERk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDE=">
       <serialNumber>F5BhENPfVw==</serialNumber>
     </certItem>
     <certItem issuerName="MIGVMQswCQYDVQQGEwJHUjFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTE=">
       <serialNumber>GN2Hrh9Ltm4=</serialNumber>
     </certItem>
+    <certItem issuerName="MIG+MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMDkgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MTIwMAYDVQQDEylFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMg==">
+      <serialNumber>UdNjvA==</serialNumber>
+    </certItem>
     <certItem issuerName="MG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3Q=">
       <serialNumber>Os2rnHWYhryvdOXfgan06A==</serialNumber>
     </certItem>
     <certItem issuerName="MD0xCzAJBgNVBAYTAkZSMREwDwYDVQQKEwhDZXJ0cGx1czEbMBkGA1UEAxMSQ2xhc3MgMiBQcmltYXJ5IENB">
       <serialNumber>ESJJweWBPhoXAaB9c8SHwI4O</serialNumber>
     </certItem>
     <certItem issuerName="MH8xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBFQ0MgMjU2IGJpdCBFViBDQSAtIEcy">
       <serialNumber>OhrtngFwotLcm4i+z00SjA==</serialNumber>
@@ -4365,19 +4361,16 @@
       <serialNumber>BGU=</serialNumber>
     </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdERk4tUEtJMSQwIgYDVQQDExtERk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDE=">
       <serialNumber>CcL+EA==</serialNumber>
     </certItem>
     <certItem issuerName="MEwxIDAeBgNVBAsTF0dsb2JhbFNpZ24gUm9vdCBDQSAtIFIzMRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu">
       <serialNumber>BAAAAAABJQcQRNU=</serialNumber>
     </certItem>
-    <certItem issuerName="MFoxCzAJBgNVBAYTAklFMRIwEAYDVQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxIjAgBgNVBAMTGUJhbHRpbW9yZSBDeWJlclRydXN0IFJvb3Q=">
-      <serialNumber>ByfDtA=</serialNumber>
-    </certItem>
     <certItem issuerName="MIG8MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTEwMTYwNAYDVQQDEy1WZXJpU2lnbiBDbGFzcyAzIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gRzM=">
       <serialNumber>VOcIuNbTqkpOMUyI108FOg==</serialNumber>
     </certItem>
     <certItem issuerName="MFAxJDAiBgNVBAsTG0dsb2JhbFNpZ24gRUNDIFJvb3QgQ0EgLSBSNDETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbg==">
       <serialNumber>RnQ3dYovwvB0D5q2YGY=</serialNumber>
     </certItem>
     <certItem issuerName="MIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp">
       <serialNumber>TA5iEg==</serialNumber>
@@ -4392,22 +4385,28 @@
       <serialNumber>ezdAeCxKH7BFs7vn3byYaw==</serialNumber>
     </certItem>
     <certItem issuerName="MDQxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25h">
       <serialNumber>HA==</serialNumber>
     </certItem>
     <certItem issuerName="MD8xJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjEXMBUGA1UEAxMORFNUIFJvb3QgQ0EgWDM=">
       <serialNumber>AJiU+bpWh2Uc4xFRf8GM9yA=</serialNumber>
     </certItem>
+    <certItem issuerName="MIGFMQswCQYDVQQGEwJVUzEgMB4GA1UECgwXV2VsbHMgRmFyZ28gV2VsbHNTZWN1cmUxHDAaBgNVBAsME1dlbGxzIEZhcmdvIEJhbmsgTkExNjA0BgNVBAMMLVdlbGxzU2VjdXJlIFB1YmxpYyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eQ==">
+      <serialNumber>AZ0=</serialNumber>
+    </certItem>
     <certItem issuerName="MFoxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdERk4tUEtJMSQwIgYDVQQDExtERk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDE=">
       <serialNumber>CcHC1w==</serialNumber>
     </certItem>
     <certItem issuerName="MFwxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExGzAZBgNVBAMTElRydXN0ZWQgUm9vdCBDQSBHMg==">
       <serialNumber>UV9aaDeNRNtQuXjRYk4Skhg=</serialNumber>
     </certItem>
+    <certItem issuerName="MGMxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVzdGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExIjAgBgNVBAMTGVRydXN0ZWQgUm9vdCBDQSBTSEEyNTYgRzI=">
+      <serialNumber>RdHgEmEIjdyRFWDRRlk=</serialNumber>
+    </certItem>
     <certItem issuerName="MHExCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNEZXV0c2NoZSBUZWxla29tIEFHMR8wHQYDVQQLExZULVRlbGVTZWMgVHJ1c3QgQ2VudGVyMSMwIQYDVQQDExpEZXV0c2NoZSBUZWxla29tIFJvb3QgQ0EgMg==">
       <serialNumber>AQw=</serialNumber>
     </certItem>
     <certItem issuerName="MFYxCzAJBgNVBAYTAkpQMQ8wDQYDVQQKEwZKSVBERUMxGjAYBgNVBAsTEUpDQU4gU3ViIFJvb3QgQ0EwMRowGAYDVQQDExFKQ0FOIFN1YiBSb290IENBMA==">
       <serialNumber>BAAAAAABK84yjs8=</serialNumber>
     </certItem>
     <certItem issuerName="MIGVMQswCQYDVQQGEwJHUjFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTE=">
       <serialNumber>FJl6tXgNpSk=</serialNumber>
@@ -4455,31 +4454,28 @@
       <serialNumber>AUa47POQ1dN5</serialNumber>
     </certItem>
     <certItem issuerName="MHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aW