|  | @@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfCombined = {}));
 | 
	
		
			
				|  |  |    // Use strict in our context only - users might not want it
 | 
	
		
			
				|  |  |    'use strict';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -var pdfjsVersion = '1.4.221';
 | 
	
		
			
				|  |  | -var pdfjsBuild = 'b282885';
 | 
	
		
			
				|  |  | +var pdfjsVersion = '1.4.225';
 | 
	
		
			
				|  |  | +var pdfjsBuild = 'be6754a';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    var pdfjsFilePath =
 | 
	
		
			
				|  |  |      typeof document !== 'undefined' && document.currentScript ?
 | 
	
	
		
			
				|  | @@ -32255,7 +32255,8 @@ var CanvasExtraState = (function CanvasExtraStateClosure() {
 | 
	
		
			
				|  |  |      this.fillAlpha = 1;
 | 
	
		
			
				|  |  |      this.strokeAlpha = 1;
 | 
	
		
			
				|  |  |      this.lineWidth = 1;
 | 
	
		
			
				|  |  | -    this.activeSMask = null; // nonclonable field (see the save method below)
 | 
	
		
			
				|  |  | +    this.activeSMask = null;
 | 
	
		
			
				|  |  | +    this.resumeSMaskCtx = null; // nonclonable field (see the save method below)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      this.old = old;
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -32692,6 +32693,11 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      endDrawing: function CanvasGraphics_endDrawing() {
 | 
	
		
			
				|  |  | +      // Finishing all opened operations such as SMask group painting.
 | 
	
		
			
				|  |  | +      if (this.current.activeSMask !== null) {
 | 
	
		
			
				|  |  | +        this.endSMaskGroup();
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        this.ctx.restore();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        if (this.transparentCanvas) {
 | 
	
	
		
			
				|  | @@ -32800,7 +32806,16 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 'SMask':
 | 
	
		
			
				|  |  |              if (this.current.activeSMask) {
 | 
	
		
			
				|  |  | -              this.endSMaskGroup();
 | 
	
		
			
				|  |  | +              // If SMask is currrenly used, it needs to be suspended or
 | 
	
		
			
				|  |  | +              // finished. Suspend only makes sense when at least one save()
 | 
	
		
			
				|  |  | +              // was performed and state needs to be reverted on restore().
 | 
	
		
			
				|  |  | +              if (this.stateStack.length > 0 &&
 | 
	
		
			
				|  |  | +                  (this.stateStack[this.stateStack.length - 1].activeSMask ===
 | 
	
		
			
				|  |  | +                   this.current.activeSMask)) {
 | 
	
		
			
				|  |  | +                this.suspendSMaskGroup();
 | 
	
		
			
				|  |  | +              } else {
 | 
	
		
			
				|  |  | +                this.endSMaskGroup();
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              this.current.activeSMask = value ? this.tempSMask : null;
 | 
	
		
			
				|  |  |              if (this.current.activeSMask) {
 | 
	
	
		
			
				|  | @@ -32829,6 +32844,8 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
 | 
	
		
			
				|  |  |        groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
 | 
	
		
			
				|  |  |        groupCtx.transform.apply(groupCtx, currentTransform);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +      activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        copyCtxState(currentCtx, groupCtx);
 | 
	
		
			
				|  |  |        this.ctx = groupCtx;
 | 
	
		
			
				|  |  |        this.setGState([
 | 
	
	
		
			
				|  | @@ -32839,6 +32856,43 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
 | 
	
		
			
				|  |  |        this.groupStack.push(currentCtx);
 | 
	
		
			
				|  |  |        this.groupLevel++;
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {
 | 
	
		
			
				|  |  | +      // Similar to endSMaskGroup, the intermediate canvas has to be composed
 | 
	
		
			
				|  |  | +      // and future ctx state restored.
 | 
	
		
			
				|  |  | +      var groupCtx = this.ctx;
 | 
	
		
			
				|  |  | +      this.groupLevel--;
 | 
	
		
			
				|  |  | +      this.ctx = this.groupStack.pop();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      composeSMask(this.ctx, this.current.activeSMask, groupCtx);
 | 
	
		
			
				|  |  | +      this.ctx.restore();
 | 
	
		
			
				|  |  | +      this.ctx.save(); // save is needed since SMask will be resumed.
 | 
	
		
			
				|  |  | +      copyCtxState(groupCtx, this.ctx);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // Saving state for resuming.
 | 
	
		
			
				|  |  | +      this.current.resumeSMaskCtx = groupCtx;
 | 
	
		
			
				|  |  | +      // Transform was changed in the SMask canvas, reflecting this change on
 | 
	
		
			
				|  |  | +      // this.ctx.
 | 
	
		
			
				|  |  | +      var deltaTransform = Util.transform(
 | 
	
		
			
				|  |  | +        this.current.activeSMask.startTransformInverse,
 | 
	
		
			
				|  |  | +        groupCtx.mozCurrentTransform);
 | 
	
		
			
				|  |  | +      this.ctx.transform.apply(this.ctx, deltaTransform);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // SMask was composed, the results at the groupCtx can be cleared.
 | 
	
		
			
				|  |  | +      groupCtx.save();
 | 
	
		
			
				|  |  | +      groupCtx.setTransform(1, 0, 0, 1, 0, 0);
 | 
	
		
			
				|  |  | +      groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);
 | 
	
		
			
				|  |  | +      groupCtx.restore();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {
 | 
	
		
			
				|  |  | +      // Resuming state saved by suspendSMaskGroup. We don't need to restore
 | 
	
		
			
				|  |  | +      // any groupCtx state since restore() command (the only caller) will do
 | 
	
		
			
				|  |  | +      // that for us. See also beginSMaskGroup.
 | 
	
		
			
				|  |  | +      var groupCtx = this.current.resumeSMaskCtx;
 | 
	
		
			
				|  |  | +      var currentCtx = this.ctx;
 | 
	
		
			
				|  |  | +      this.ctx = groupCtx;
 | 
	
		
			
				|  |  | +      this.groupStack.push(currentCtx);
 | 
	
		
			
				|  |  | +      this.groupLevel++;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |      endSMaskGroup: function CanvasGraphics_endSMaskGroup() {
 | 
	
		
			
				|  |  |        var groupCtx = this.ctx;
 | 
	
		
			
				|  |  |        this.groupLevel--;
 | 
	
	
		
			
				|  | @@ -32847,20 +32901,34 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
 | 
	
		
			
				|  |  |        composeSMask(this.ctx, this.current.activeSMask, groupCtx);
 | 
	
		
			
				|  |  |        this.ctx.restore();
 | 
	
		
			
				|  |  |        copyCtxState(groupCtx, this.ctx);
 | 
	
		
			
				|  |  | +      // Transform was changed in the SMask canvas, reflecting this change on
 | 
	
		
			
				|  |  | +      // this.ctx.
 | 
	
		
			
				|  |  | +      var deltaTransform = Util.transform(
 | 
	
		
			
				|  |  | +        this.current.activeSMask.startTransformInverse,
 | 
	
		
			
				|  |  | +        groupCtx.mozCurrentTransform);
 | 
	
		
			
				|  |  | +      this.ctx.transform.apply(this.ctx, deltaTransform);
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      save: function CanvasGraphics_save() {
 | 
	
		
			
				|  |  |        this.ctx.save();
 | 
	
		
			
				|  |  |        var old = this.current;
 | 
	
		
			
				|  |  |        this.stateStack.push(old);
 | 
	
		
			
				|  |  |        this.current = old.clone();
 | 
	
		
			
				|  |  | -      this.current.activeSMask = null;
 | 
	
		
			
				|  |  | +      this.current.resumeSMaskCtx = null;
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      restore: function CanvasGraphics_restore() {
 | 
	
		
			
				|  |  | -      if (this.stateStack.length !== 0) {
 | 
	
		
			
				|  |  | -        if (this.current.activeSMask !== null) {
 | 
	
		
			
				|  |  | -          this.endSMaskGroup();
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +      // SMask was suspended, we just need to resume it.
 | 
	
		
			
				|  |  | +      if (this.current.resumeSMaskCtx) {
 | 
	
		
			
				|  |  | +        this.resumeSMaskGroup();
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      // SMask has to be finished once there is no states that are using the
 | 
	
		
			
				|  |  | +      // same SMask.
 | 
	
		
			
				|  |  | +      if (this.current.activeSMask !== null && (this.stateStack.length === 0 ||
 | 
	
		
			
				|  |  | +          this.stateStack[this.stateStack.length - 1].activeSMask !==
 | 
	
		
			
				|  |  | +          this.current.activeSMask)) {
 | 
	
		
			
				|  |  | +        this.endSMaskGroup();
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +      if (this.stateStack.length !== 0) {
 | 
	
		
			
				|  |  |          this.current = this.stateStack.pop();
 | 
	
		
			
				|  |  |          this.ctx.restore();
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -33648,7 +33716,8 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
 | 
	
		
			
				|  |  |            scaleY: scaleY,
 | 
	
		
			
				|  |  |            subtype: group.smask.subtype,
 | 
	
		
			
				|  |  |            backdrop: group.smask.backdrop,
 | 
	
		
			
				|  |  | -          transferMap: group.smask.transferMap || null
 | 
	
		
			
				|  |  | +          transferMap: group.smask.transferMap || null,
 | 
	
		
			
				|  |  | +          startTransformInverse: null, // used during suspend operation
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |        } else {
 | 
	
		
			
				|  |  |          // Setup the current ctx so when the group is popped we draw it at the
 | 
	
	
		
			
				|  | @@ -33668,6 +33737,9 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
 | 
	
		
			
				|  |  |        ]);
 | 
	
		
			
				|  |  |        this.groupStack.push(currentCtx);
 | 
	
		
			
				|  |  |        this.groupLevel++;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // Reseting mask state, masks will be applied on restore of the group.
 | 
	
		
			
				|  |  | +      this.current.activeSMask = null;
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      endGroup: function CanvasGraphics_endGroup(group) {
 |