�¬argb colorSpace _floatToInt8valuetoARGB32alphaopacityredgreenblue withValues withAlpha withOpacitywithRed withGreenwithBlue_linearizeColorComponentcomputeLuminancelerp alphaBlendgetAlphaFromOpacity==hashCodetoStringclearsrcdstsrcOverdstOversrcIndstInsrcOutdstOutsrcATopdstATopxorplusmodulatescreenoverlaydarkenlighten colorDodge colorBurn hardLight softLight difference exclusionmultiplyhue saturationcolor luminositynonelowmediumhighbuttroundsquaremiterbevelfillstrokehardEdge antiAliasantiAliasWithSaveLayer_data_kIsAntiAliasIndex_kColorRedIndex_kColorGreenIndex_kColorBlueIndex_kColorAlphaIndex_kColorSpaceIndex_kBlendModeIndex _kStyleIndex_kStrokeWidthIndex_kStrokeCapIndex_kStrokeJoinIndex_kStrokeMiterLimitIndex_kFilterQualityIndex_kMaskFilterIndex_kMaskFilterBlurStyleIndex_kMaskFilterSigmaIndex_kInvertColorIndex_kIsAntiAliasOffset_kColorRedOffset_kColorGreenOffset_kColorBlueOffset_kColorAlphaOffset_kColorSpaceOffset_kBlendModeOffset _kStyleOffset_kStrokeWidthOffset_kStrokeCapOffset_kStrokeJoinOffset_kStrokeMiterLimitOffset_kFilterQualityOffset_kMaskFilterOffset_kMaskFilterBlurStyleOffset_kMaskFilterSigmaOffset_kInvertColorOffset_kDataByteCount_objects_ensureObjectsInitialized _kShaderIndex_kColorFilterIndex_kImageFilterIndex _kObjectCount isAntiAlias_kColorDefault_kBlendModeDefault blendModestyle strokeWidth strokeCap strokeJoin_kStrokeMiterLimitDefaultstrokeMiterLimit maskFilter filterQualityshader colorFilter imageFilter invertColorssRGB extendedSRGB displayP3rawRgbarawStraightRgba rawUnmodifiedrawExtendedRgba128pngrgba8888bgra8888 rgbaFloat32_imageonCreate onDispose _debugStackwidthheight _disposeddispose debugDisposed toByteDatadebugGetOpenHandleStackTracesclone isCloneOf _toByteData_dispose_handlesdurationimage frameCountrepetitionCount getNextFrame_cachedFrameCount _frameCount_cachedRepetitionCount_repetitionCount _getNextFramenonZeroevenOdd intersectunionreverseDifferencefillTypemoveTorelativeMoveTolineTorelativeLineToquadraticBezierTorelativeQuadraticBezierTocubicTorelativeCubicToconicTorelativeConicToarcTo arcToPointrelativeArcToPointaddRectaddOvaladdArc addPolygonaddRRectaddRSuperellipseaddPathextendWithPathcloseresetcontainsshift transform getBoundscombinecomputeMetrics _constructor_clone _getFillType _setFillType_arcTo _arcToPoint_relativeArcToPoint_addRect_addOval_addArc _addPolygon _addRRect_addRSuperellipse_addPath_addPathWithMatrix_extendWithPath_extendWithPathAndMatrix _contains_shift _transform _getBounds_oppositionvectorangle _iteratoriterator _pathMetric _pathMeasurecurrentmoveNextlengthisClosed contourIndex_measuregetTangentForOffset extractPath_length _getPosTan _extractPath _isClosed _nextContour_nativeNextContourcurrentContourIndexnormalsolidouterinner_style_sigma _TypeNone _TypeBlurchildvalues_color _blendMode_matrix_type _kTypeMode _kTypeMatrix_kTypeLinearToSrgbGamma_kTypeSrgbToLinearGamma_toNativeImageFilter_toNativeColorFilter_shortDescriptioncreator _initMode _initMatrix_initLinearToSrgbGamma_initSrgbToLinearGammaisShaderFilterSupporteddata nativeFiltersigmaXsigmaYtileMode _modeStringradiusXradiusY innerFilter outerFilter_equals _initBlur _initDilate _initErode_initColorFilter _initComposed _initShader_debugDisposedclamprepeatedmirrordecal _initLinear _initRadial _initConical _initSweep_validateColorStops_initWithImage _debugName fromAsset_shaderRegistry_reinitializeShader_uniformFloatCount _samplerCount_initFromAssetfragmentShader_kEmptyFloat32List_floatssetFloatsetImageSampler_setImageSampler_validateSamplers_validateImageFilter triangles triangleStrip triangleFan_initpointslinespolygonsave saveLayerrestorerestoreToCount getSaveCount translatescalerotateskew getTransformclipRect clipRRectclipRSuperellipseclipPathgetLocalClipBoundsgetDestinationClipBounds drawColordrawLine drawPaintdrawRect drawRRect drawDRRectdrawRSuperellipsedrawOval drawCircledrawArcdrawPath drawImage drawImageRect drawImageNine drawPicture drawParagraph drawPoints drawRawPoints drawVertices drawAtlas drawRawAtlas drawShadow _recorder_sorted_saveLayerWithoutBounds _saveLayer_scale _getTransform _clipRect _clipRRect_clipRSuperellipse _clipPath_getLocalClipBounds_getDestinationClipBounds _drawColor _drawLine _drawPaint _drawRect _drawRRect _drawDRRect_drawRSuperellipse _drawOval _drawCircle_drawArc _drawPath _drawImage_drawImageRect_drawImageNine _drawPicture _drawPoints _drawVertices _drawAtlas _drawShadowtoImage toImageSyncapproximateBytesUsed_toImage _toImageSync isRecording endRecording _endRecording_canvas_kBytesPerShadow _kColorOffset _kXOffset _kYOffset _kBlurOffsetoffset blurRadiusconvertRadiusToSigma blurSigmatoPaintlerpList_encodeShadows fromUint8List fromFilePath _initFromFileencoded bytesPerPixelinstantiateCodec _initEncoded_initRaw_width _getWidth_height _getHeight_bytesPerPixel_getBytesPerPixel_instantiateCodecmessagestacka _rectIsValid _rrectIsValid_rsuperellipseIsValid_offsetIsValid_matrix4IsValid_radiusIsValid _scaleAlphaColor BlendMode FilterQuality StrokeCap StrokeJoin PaintingStyleClipPaint ColorSpace_colorSpaceToIndex_indexToColorSpaceImageByteFormat PixelFormatImageEventCallbackImage_Image _wrapImageImageDecoderCallback FrameInfoCodec _NativeCodecinstantiateImageCodecinstantiateImageCodecFromBufferinstantiateImageCodecWithSize_getDefaultImageSizeTargetImageSizeCallbackTargetImageSizedecodeImageFromList_decodeImageFromListAsyncdecodeImageFromPixels PathFillType PathOperation EngineLayer_NativeEngineLayerPath _NativePathTangent PathMetricsPathMetricIterator PathMetric _PathMeasure BlurStyle MaskFilter_ColorTransform_IdentityColorTransform_ClampTransform_MatrixColorTransform_getColorTransform ColorFilter _ColorFilter ImageFilter_MatrixImageFilter_GaussianBlurImageFilter_DilateImageFilter_ErodeImageFilter_ComposeImageFilter_FragmentShaderImageFilter _ImageFilterShaderTileMode_encodeWideColorList_encodeColorList_encodePointList_encodeTwoPointsGradient ImageShaderFragmentProgramFragmentShader VertexModeVertices PointModeClipOpCanvas _NativeCanvasPictureEventCallbackPicture_NativePicturePictureRecorder_NativePictureRecorderShadowImmutableBufferImageDescriptor_NativeImageDescriptor _Callback_CallbackWithError _Callbacker_CallbackerWithError _futurize_futurizeWithErrorPictureRasterizationException�¡dartuiboolRecthasNaNRRect RSuperellipseOffsetdxisNaNdy Float64ListlengtheverydoublevalueisFiniteRadiusxy withValuesalpha clampDoubleanewsRGBint _fromARGBCfromRGBO _fromRGBOCfromARGBround Deprecatedfromredgreenblue colorSpace transformmathpow extendedSRGBHSVColormaterialColors transparentCurves elasticInOutAnimationController _lerpDoublergboverrideObject identical runtimeTypehashStringtoStringAsFixedsrcdstclear saveLayerrestore blendModesrcOverdstInsrcOutsrcIndstOutdstATopdstOversrcATopplusmultiplyscreenoverlaymodulate hardLight colorDodge colorBurncolor exclusion difference luminosityhue softLight saturationblurBackdropFilternonelowmediumhigh filterQualitymatrix drawImage drawImageRect drawImageNine drawAtlas strokeCapAsquare strokeWidthbuttdrawPath drawPoints strokeJoinstrokeMiterLimitstyle drawCircle isAntiAliashardEdge antiAliasantiAliasWithSaveLayerbuffer asUint32ListsetAll_data_objectstoListpragmaByteDataListfilledgetInt32_kFakeHostEndiansetInt32 getFloat32 setFloat32indexvaluesfillstrokemiterbevel _TypeNone _TypeBlur_style_sigma debugDisposed_validateSamplers Exception _debugNamecreator_toNativeColorFilter_toNativeImageFilterfromEnvironmenttoString StringBufferwrite toByteDatarawExtendedRgba128 displayP3 ArgumentErrorvoidwidgets StackTracecurrent_handlesaddcallMemoryAllocations _disposedcontainsremoveisEmptydispose StateErrorformatrawRgbaFutureUnsupportedErrormaphandle _debugStack__imageNativeFieldWrapperClass1NativeInt32PointerVoidsymbolisLeaf Uint8Listerrorencodedcallback asByteDataHandleSetwidthheight getNextFramecloneDurationimage Completersync decodeError completeErrorcompleteduration millisecondsdurationMillisecondsfuture fromUint8List targetWidth targetHeightallowUpscaling getTargetSizeintrinsicWidthintrinsicHeightinstantiateCodecthenrawrowBytes pixelFormatcodec frameInfofillTypecombinereverseDifferencexor intersect SceneBuilderclipPath_clonenonZerozero fromCircle_op extractPathIterableDoublelefttoprightbottomBoolradiusrotationlargeArc clockwise Float32List _getValue32_native_NativeRSuperellipsematrix4fromLTRB forceClosedgetTangentForOffsetcossinatan2computeMetricslineTomoveTo IterableBaseIterator RangeError _nextContourcurrentContourIndexisClosedcloseaddRectstartWithMoveTo nextContour maskFilter drawShadow colorFilterfromColorFiltermodelinearToSrgbGammasrgbToLinearGamma_type _listEquals_matrix_color _blendModehashAll _kTypeMode _kTypeMatrixfromList_kTypeLinearToSrgbGamma_kTypeSrgbToLinearGamma ImageFilteredpushBackdropFilterpushImageFiltersigmaXsigmaYtileModeradiusXradiusYMatrix4 diagonal3data innerFilterinner outerFilterouter_impellerEnabled_floats_validateImageFiltershaderclampmirrorrepeateddecaldilateerodecomposed_shortDescriptionhashCode nativeFilterpaintingGradientLinearGradientRadialGradient BoxDecorationlinearradiali Int32ListNoSuchMethodError colorStopsfocal focalRadiuspi startAngleendAngle isNotEmptyUripath encodeFull microtask _fromAssetMap_initFromAsset debugNamefragmentShader_uniformFloatCount _samplerCount drawVertices triangles triangleStrip triangleFan Uint16ListcolorstextureCoordinatesindices drawRawPointsclipRectSceneRendererBinding createCanvas PictureLayertoImage endRecording CustomPainterpaintsy doAntiAliasarcTo ParagraphlayoutParagraphStyleParagraphBuilder TextAlignParagraphConstraintspointslinespolygon RSTransformscosssintxty isRecording_canvascullRectlargestminmaxclipOpUint32stack_NativeParagraph _needsLayout_paint addPicture drawPicture onDisposeUint64createPictureRecorder _recorderonCreate TextStylenormaloffset blurRadiusscalelerp shadowIndex_kColorDefaultconvertRadiusToSigma_init_length _initFromFile _initEncodedTt toImageSyncwritelnNativeFieldWrapperClass1Codec EngineLayerPath IterableBaseIterator_ColorTransform ImageFilterShaderCanvasPicturePictureRecorderImageDescriptor Exceptionj–d€VD‡JýP™t$ÀËvÀªŸj<€†€¤€µ€¶€Î€ï�-�F�y�«�¬�ù‚C‚“‚äƒ4ƒ‚ƒÓ„„„b„ˆ„‰„¨„è„÷„ù„ú……^…m…o…p…ª…ü† † ††3†�†œ†ž†Ÿ†Ë‡ ‡j‡y‡{‡|‡¡‡ùˆˆ ˆ ˆ7ˆvˆxˆyˆ¦ˆªˆû‰L‰˜‰ãŠjЍЬŠÜŠàŠì‹C‹k‹¨‹àŒŒ Œ$ŒtŒ¼� �D�H�T�¡�é�펎fŽnŽrŽÂ��d�h�v�z�Ç��/�€�„�Û�é‘8‘>‘i‘o‘—‘½‘ä’ ’’_’­’Õ’Û“!“n“““™“Ù“é”:”Š”É”Þ”÷•L•M•‹•‘•â–+–;–A–R–X–f–Ž–Þ–ä—#—s—y—š—ê—ô˜ ˜$˜=˜X˜r˜™˜«˜»˜Í˜Þ˜ß™%™+™x™ˆ™­™Ô™úššCšIš”š¡š§šä›G›H›¡›ì›íœ7œNœTœyœ œÆ��C�I�Œ�’�Ú�àžžYž“ž”žãžöŸŸ.ŸJŸKŸrŸ„Ÿ…ŸªŸ¼Ÿ½ŸäŸöŸ÷  / 0 U t u › Â Æ Ç õ û¡H¡a¡À¡ß¡à¢¢¢`¢°££"£m£º£÷£ý¤I¤”¤±¤·¤ß¤å¥1¥}¥È¦¦¦+¦x¦Æ§§a§~§‘§´§Ô§ó¨¨¨¨O¨U¨¤¨Æ¨ø©'©(©[©a©²©Ô©íªªªKª}ªªª«ªä««D«E«}«¯«Ü«Ý¬¬#¬g¬®¬´¬ÿ­M­j­p­­�­¥­Ð®®$®9®L®]®p®‚®ž®¥®Ã¯ ¯2¯M¯d¯¯˜¯½¯Æ¯Ì° °d°­°º°â°è°ì°í±6±l±r±ª±Å±õ±ù±ú²C²‹²‘²É³³+³Y³Š³Ž³�³ß´ ´´J´c´•´™´š´ãµµµWµrµ¢µ¦µ§µø¶%¶+¶c¶}¶®¶²¶³¶ñ·.·N·n·t·µ·¹·º¸¸ ¸_¸}¸ƒ¸Á¸ß¹¹R¹„¹¶¹èººººMºSº›ºÞºä».»{»º¼¼¼S¼�¼è½4½‚½Ò¾¾p¾�¾£¾ò¿¿G¿}¿³¿È¿ß¿ôÀ@À@+À@3À@@À@WÀ@yÀ@ˆÀ@¶À@ÑÀAÀAKÀA‰ÀAÆÀAêÀAõÀAýÀBÀBÀBÀBKÀB‘ÀB—ÀBãÀC*ÀCuÀCÄÀDÀDOÀD‹ÀDÉÀDðÀEÀE2ÀEKÀEQÀExÀE�ÀE·ÀE×ÀEðÀFÀF?ÀF~ÀF¼ÀFçÀFðÀFýÀGÀG;ÀGlÀG‰ÀG¢ÀG»ÀHÀHSÀHŸÀHÊÀHÓÀHÙÀHÝÀHÞÀI+ÀI1ÀI\ÀI�ÀIÊÀIÎÀIÏÀIÛÀIþÀJ ÀJ3ÀJ9ÀJeÀJyÀJÀJœÀJ´ÀJÌÀJäÀJüÀK$ÀK(ÀK)ÀK5ÀKpÀKqÀK}ÀK”ÀL9ÀL;ÀL<ÀLoÀLsÀLÀÀM ÀM)ÀM-ÀM~ÀMËÀNÀNhÀN¸ÀOÀOGÀOKÀO›ÀOæÀP7ÀPƒÀPÑÀQÀQeÀQ°ÀQÿÀREÀR`ÀRdÀR²ÀRÿÀSIÀS›ÀSèÀT9ÀTzÀT~ÀT¥ÀT©ÀT÷ÀU8ÀU‰ÀUÖÀV'ÀVvÀVÅÀVàÀVäÀVòÀVöÀWAÀWRÀWcÀW²ÀWÅÀX ÀX ÀXPÀXVÀX’ÀX˜ÀXõÀXþÀXÿÀY>ÀYDÀY“ÀY¢ÀY¨ÀYãÀYéÀZDÀZKÀZLÀZ‹ÀZ‘ÀZÜÀZíÀZóÀ[5À[;À[–À[�À[žÀ[ÛÀ[áÀ\/À\€À\�À\£À\ñÀ]À]$À]ƒÀ]ŽÀ]�À]ÍÀ]ÓÀ]üÀ^À^PÀ^VÀ^µÀ^»À_ À_5À_@À_AÀ_‰À_ÖÀ`#À`1À`7À`vÀ`|À`ÉÀaÀa!Àa'ÀasÀayÀaÖÀaßÀaàÀb-Àb{ÀbÅÀbËÀcÀc ÀcXÀcªÀc°ÀcüÀdÀd_ÀdhÀdiÀd¸Àe ÀeZÀe`Àe Àe¦ÀeóÀfDÀfJÀf—Àf�ÀfûÀgÀgÀgZÀg¨ÀgòÀgøÀh3Àh9Àh‹Àh×ÀhÝÀi*Ài0ÀiŽÀi˜Ài™ÀièÀjÀjÀj\ÀjbÀj²ÀjþÀk2Àk8ÀkƒÀk”ÀkšÀkùÀlÀlÀlTÀloÀluÀlÃÀlÉÀmÀm`Àm”ÀmšÀmåÀmöÀmüÀn[ÀnfÀngÀn·ÀnëÀnñÀo>ÀoDÀoŸÀo¦Ào§ÀoæÀoìÀp;Àp‡Àp­Àp³ÀqÀqÀqXÀq¦Àq÷ÀrFÀr�Àr–ÀròÀrúÀrûÀsEÀsKÀsšÀséÀsïÀt@ÀtiÀtoÀtÀÀtÆÀu&Àu,Àu<ÀuBÀu„ÀuÌÀuèÀv2ÀvIÀvUÀvVÀvžÀvŸÀvêÀwÀwÀwbÀw¯ÀwÞÀwäÀx5Àx�Àx§Àx­ÀxýÀyLÀy�Ày£ÀyòÀzÀzÀzxÀz~ÀzŽÀz”ÀzäÀzõÀ{=À{YÀ{£À{ºÀ{ÜÀ|%À|TÀ|ZÀ|«À|ùÀ}JÀ}iÀ}oÀ}»À~À~7À~=À~œÀ~¢À~²À~¸À~ñÀ8ÀˆÀ³À¾À¿À€ À€,À€2À€{À€ŒÀ€’À€ðÀ€úÀ€ûÀ�JÀ�iÀ�oÀ�¸À�ÉÀ�ÏÀ‚.À‚9À‚:À‚uÀ‚{À‚ÇÀƒÀƒCÀƒIÀƒ«Àƒ¹ÀƒºÀ„ À„À„_À„¬À„ÛÀ„áÀ…BÀ…OÀ…PÀ…™À…ÃÀ…ÉÀ†À†bÀ†°À†ÝÀ†ãÀ‡/À‡|À‡«À‡±ÀˆÀˆÀˆ(Àˆ.ÀˆgÀˆ®ÀˆýÀ‰)À‰6À‰7À‰…À‰�À‰£À‰åÀ‰ëÀŠLÀŠRÀŠbÀŠhÀŠ¡ÀŠ®ÀНÀŠøÀŠþÀ‹MÀ‹dÀ‹jÀ‹³À‹ÄÀ‹ÊÀŒÀŒÀŒjÀŒxÀŒyÀŒÅÀŒÓÀŒÙÀ�(À�?À�EÀ�ŽÀ�ŸÀ�¥À�ÝÀ�ãÀŽDÀŽQÀŽRÀŽ À޹ÀŽ¿À�À�]À�cÀ�¯À�üÀ�DÀ�JÀ�™À�½À�ÃÀ‘#À‘KÀ‘œÀ‘µÀ‘»À’À’ À’SÀ’£À’ÉÀ’ÏÀ“*À“0À“@À“FÀ“–À“¿À”À”?À”FÀ”GÀ”˜À”±À”·À•À•PÀ•}À•ƒÀ•åÀ•ëÀ•ûÀ–À–CÀ–’À–¨À–¶À–·À—À—!À—'À—pÀ—vÀ—¿À˜À˜DÀ˜JÀ˜§À˜­À˜½À˜ÃÀ˜ùÀ™GÀ™•À™žÀ™ŸÀ™ðÀš ÀšÀšXÀš¨ÀšÕÀšÛÀ›=À›CÀ›SÀ›YÀ›¨À›¾Àœ Àœ"Àœ0Àœ2Àœ3Àœ‹ÀœÆÀœÊÀ�'À�nÀ�rÀ�ÇÀžÀžqÀžÅÀžÉÀŸÀŸRÀŸVÀŸ¯ÀŸ³À À HÀ gÀ kÀ yÀ }À ÈÀ¡À¡À¡4À¡OÀ¡nÀ¡�À¡¨À¡½À¢À¢;À¢<À¢€À¢†À¢ÌÀ£À£À£À£RÀ£XÀ£šÀ£ÉÀ£ÐÀ£ÑÀ¤À¤CÀ¤IÀ¤”À¤áÀ¥*À¥uÀ¥{À¥«À¥»À¥ÁÀ¦À¦DÀ¦YÀ¦cÀ¦dÀ¦´À¦ÁÀ¦ÇÀ§À§RÀ§XÀ§À§…À§×À¨'À¨rÀ¨xÀ¨¥À¨­À¨¯À¨°À¨ÔÀ¨ØÀ¨æÀ¨êÀ©À©bÀ©žÀ©¯À©ïÀ©õÀªFÀªªÀª°ÀªþÀ«0À«8À«9À«tÀ«zÀ«ÄÀ¬À¬„À¬ŠÀ¬ÚÀ¬ÿÀ­À­ À­LÀ­‘À­¶À­¼À® À®|À®‚À®ÒÀ®÷À®ýÀ¯KÀ¯kÀ¯uÀ¯wÀ¯xÀ¯¢À¯¦À¯óÀ°7À°;À°IÀ°MÀ°™À°¥À°àÀ±À±/À±eÀ±kÀ±ÔÀ±ÚÀ²"À²rÀ²~À²„À²”À²šÀ²èÀ²ùÀ³JÀ³ƒÀ³ŒÀ³�À³ÂÀ³ÈÀ´/À´5À´}À´ÍÀ´ÙÀ´ßÀ´ïÀ´õÀµCÀµTÀµ]Àµ^Àµ¬ÀµÞÀµäÀ¶KÀ¶QÀ¶™À¶éÀ¶õÀ¶ûÀ· À·À·_À·pÀ·yÀ·{À·|À·¶À·ºÀ·ÑÀ¸ À¸"À¸mÀ¸{À¸|À¸ÂÀ¹À¹/À¹7À¹8À¹|À¹ÂÀº ÀºGÀºQÀºSÀºTÀºxÀº|ÀºŠÀºŽÀºàÀºìÀ»À»À»SÀ»¤À»ªÀ»õÀ»ûÀ¼HÀ¼¡À¼öÀ½À½À½À½DÀ½JÀ½£À½ÔÀ½ÚÀ¾À¾ À¾xÀ¾ÓÀ¾ÙÀ¾éÀ¾ïÀ¿>À¿bÀ¿nÀ¿oÀ¿ŽÀ¿”À¿åÀÀ3ÀÀKÀÀQÀÀ¦ÀÀ¬ÀÀùÀÁÀÁrÀÁxÀÁˆÀÁŽÀÁÍÀÂÀÂ3ÀÂ�ÀÂ�ÀžÀÂìÀÂòÀÃEÀ×ÀÃÀÀÃÆÀÄÀÄ_ÀÄ{ÀÄßÀÄîÀÅPÀÅVÀÅ™ÀÅÝÀÆ&ÀÆzÀÆ¿ÀÆÅÀÆÕÀÆÛÀÇ)ÀÇFÀÇ`ÀÇbÀÇcÀÇ¥ÀÇ©ÀÇïÀÈÀÈ"ÀÈjÀÈ€ÀÈ‹ÀÈŒÀÈÓÀÈÙÀÉ$ÀÉbÀÉhÀɶÀÊÀÊNÀÊjÀʺÀË ÀË.ÀË|ÀË¥ÀË©À˪ÀËÙÀËÞÀÌ)ÀÌtÀÌÃÀÍÀÍ`ÀÍeÀ͵ÀÎÀÎÀÎÀÎdÀÎeÀΆÀ΢ÀÎÖÀÎ×ÀÏÀÏ.ÀÏVÀÏ€ÀÏ©ÀÏÓÀÏýÀÐ&ÀÐKÀÐvÀПÀÐÊÀÐûÀÑ)ÀÑTÀшÀѸÀÑäÀÑåÀÒ'ÀÒcÀÒ£ÀÒáÀÓ!ÀÓaÀÓŸÀÓÕÀÔÀÔUÀÔ•ÀÔáÀÕ'ÀÕgÀÕ¹ÀÖÀÖEÀÖFÀÖ‡ÀÖÉÀÖÊÀ×À×/À×KÀ×fÀ×gÀוÀרÀ×ÜÀ×ÝÀØÀØ.ÀØYÀØ­ÀØ®ÀØôÀÙÀÙÀÙ ÀÙ9ÀÙ€ÀÙ„ÀÙ…ÀÙ¥ÀÙõÀÚÀÚFÀÚŠÀÚŽÀÚ�ÀÚÇÀÚ÷ÀÚøÀÛ1ÀÛ7ÀÛWÀÛ]ÀÛmÀÛsÀÛ¹ÀÛêÀÜ2ÀÜ8ÀÜ€ÀÜ•ÀÜ©ÀÜöÀÝGÀÝ–ÀÝíÀÞ#ÀÞ_ÀÞfÀÞÇÀÞËÀÞÌÀÞçÀß*ÀßoÀß³ÀßþÀà^ÀàbÀàcÀà›ÀàÜÀàÝÀá)Àá/ÀáqÀáÂÀâÀâ4Àâ:Àâ‡Àâ¨Àâ®ÀâÕÀâÛÀâëÀâñÀã@ÀãtÀã¾ÀãÔÀãðÀä=ÀäxÀä|Àä}Àä ÀäÚÀåÀå Àå!ÀåeÀåkÀå“Àå¯ÀæÀæÀæÀæ)ÀæNÀæŒÀæ�Àæ‘ÀæËÀçÀçWÀç]ÀçšÀçµÀçùÀçýÀçþÀè ÀèBÀèˆÀèŒÀè�ÀèÎÀèþÀéÀé6ÀéRÀé¤Àé¨Àé©ÀéÌÀéñÀê3Àê7Àê8ÀêyÀêÀêÐÀëÀë!Àë[ÀëaÀëÀë…ÀëîÀëôÀì[ÀìaÀìÈÀìÎÀíÀíkÀíwÀí}Àí�Àí“ÀíâÀîÀîWÀî–Àî´ÀïÀï Àï Àï2ÀïWÀïšÀïžÀïŸÀï×ÀðÀðÀðZÀð¨ÀðóÀñ@ÀñŽÀñ”ÀñÙÀñßÀò-ÀòQÀòWÀòÀÀòÆÀó/Àó5ÀóžÀó¤ÀóðÀôAÀôMÀôSÀôcÀôiÀô³ÀôÎÀõÀõ7Àõ€Àõ„Àõ…Àõ¬ÀõêÀö5Àö9Àö:ÀöŠÀöÈÀöÎÀöòÀ÷À÷UÀ÷vÀ÷‹À÷¬À÷ÌÀø'ÀønÀøyÀøÀø�Àø”Àø•Àø»ÀøÔÀù&ÀùnÀù¶ÀùÃÀúÀúBÀú”ÀúíÀû>ÀûDÀûHÀûIÀû›ÀûïÀü;ÀüAÀüiÀü¶ÀüÚÀý4Àý8Àý9ÀýdÀý‰ÀýÏÀýÓÀýÔÀþÀþÀþJÀþPÀþ`ÀþfÀþ¢ÀþÚÀÿ ÀÿTÀÿkÀÿ›ÀÿŸÀÿ Àÿ¾ÀÿÎÀ2ÀEÀOÀ_À„À®ÀÀÀ À3À=ÀuÀyÀzÀÁÀÓÀÙÀþÀÀUÀvÀÍÀïÀóÀôÀÀbÀ‚À ÀÎÀÖÀãÀ)À/À3À4ÀoÀuÀ¼ÀÖÀÜÀêÀÀ1ÀCÀ]À­À¸ÀÀÀÊÀÐÀàÀæÀ!ÀBÀ™À»À¿ÀÀÀèÀÀÀMÀUÀbÀ£ÀùÀ$ÀhÀpÀvÀzÀ{ÀºÀÀÀ À VÀ ‡À ¡À èÀ ìÀ íÀ À XÀ \À ]À iÀ À ¸À ×À ÝÀ À (À DÀ mÀ ‹À «À çÀ öÀ À !À JÀ oÀ wÀ £À àÀ 5À ?À NÀ tÀ |À ”À šÀ ²À ãÀ ûÀÀ1ÀYÀqÀwÀ¨ÀÔÀìÀòÀÀNÀfÀlÀŠÀÅÀÝÀãÀÀSÀkÀqÀ‹À¾ÀÖÀÜÀûÀ8ÀPÀVÀnÀ§À­ÀÄÀâÀæÀèÀéÀ4À8À{ÀÅÀÀBÀFÀyÀ}ÀµÀÇÀãÀéÀ6ÀbÀhÀ›À£À¤ÀñÀ?ÀwÀ°ÀÀÀÁÀãÀéÀ6ÀƒÀÎÀÔÀ ÀÀÀÀIÀaÀ{À‹À­À½ÀÜÀìÀðÀòÀóÀÀ1À=À[ÀgÀ�À™À¼ÀÉÀÀÀ À ÀLÀdÀ²ÀÿÀGÀ‘À¨À¿ÀÅÀ#À.À/ÀOÀUÀ®ÀÁÀÂÀßÀåÀ5ÀpÀ�À‚À¨À®ÀúÀ'À-ÀBÀHÀVÀtÀ”ÀšÀâÀÀVÀ˜À¹ÀÓÀíÀÀ!À,À4À>ÀTÀUÀgÀmÀ½À À WÀ ¤À íÀ óÀ!DÀ!PÀ!VÀ!fÀ!lÀ!ËÀ"À"À"À"À"YÀ"lÀ"ºÀ# À#=À#IÀ#JÀ#™À#èÀ$À$'À$(À$xÀ$¿À%À%IÀ%XÀ%ZÀ%[À%‡À%ÀÀ%ÁÀ%÷À%ûÀ&;À&?À&�À&¥À&©À&øÀ'GÀ'ŽÀ'ÖÀ($À(2À(6À(‚À(ÑÀ)À)À)*À).À)œÀ)ëÀ*À*`À*nÀ* À*°À*ØÀ*ëÀ*õÀ+À+.À+2À+3À+TÀ+pÀ+‡À+ˆÀ+ÆÀ+ÌÀ,À,YÀ,zÀ,¡À,¢À,áÀ,çÀ-2À-uÀ-–À-¾À-¿À-ÚÀ-ÛÀ.À.2À.3À.uÀ.‰À.ŠÀ.¤À.¥À.òÀ/#À/)À/zÀ/•À/›À/æÀ01À0€À0 À0³À0ÎÀ0ûÀ1'À1=À1tÀ1‰À1¬À1ÄÀ1ÊÀ1ÎÀ1ÏÀ2À2À2gÀ2}À2˜À2¬À2¼À2ØÀ2ëÀ2õÀ3 À3kÀ3oÀ3pÀ3¥À3«À3÷À4À4 À4RÀ4¡À4èÀ4îÀ5;À5TÀ5¤À5óÀ6=À6‰À6ÞÀ7 À79À7=À7>À7zÀ7€À7ÌÀ8À8GÀ8MÀ8œÀ8êÀ9À9iÀ9–À9´À9çÀ:À:À:4À:BÀ:jÀ:yÀ:ÇÀ:ÍÀ:ÑÀ:ÒÀ;#À;EÀ;KÀ;‹À;ÁÀ;ßÀ;ïÀ6À>„À>ÐÀ>îÀ>ôÀ?BÀ?kÀ?qÀ?¹À@ À@ À@&À@\À@bÀ@pÀ@‹À@«À@ÃÀ@ÉÀAÀA@ÀA_ÀA©ÀAºÀAÌÀAìÀB<ÀBŠÀB°ÀBæÀBñÀCÀCÀC ÀCBÀCvÀCÁÀCìÀD/ÀDsÀD°ÀDÉÀDÏÀE ÀE;ÀEAÀE^ÀExÀE~ÀE ÀE¾ÀEÙÀEáÀEçÀFÀF&ÀF,ÀFGÀFMÀFpÀF©ÀF³ÀF¹ÀFäÀFìÀFöÀFüÀGAÀG�ÀG³ÀGÅÀGÚÀGòÀHÀHnÀH¼ÀHÿÀIÀIÀI-ÀIXÀI\ÀI]ÀI©ÀIïÀIõÀJBÀJŒÀJÜÀK+ÀKuÀKÂÀKûÀKüÀLÀL2ÀL4ÀL5ÀLOÀL„ÀLÍÀLèÀLíÀM;ÀM]ÀMyÀM‡ÀMˆÀM×ÀMñÀMòÀNBÀN]ÀN^ÀN³ÀNüÀOIÀOyÀO°ÀOÁÀOâÀOìÀOöÀOþÀPÀPÀP?ÀP•ÀPîÀPïÀQ ÀQÀQ4ÀQ@ÀQXÀQ¥ÀQ½ÀRÀR?ÀRFÀR\ÀRlÀRpÀRqÀR¼ÀRáÀS#ÀS?ÀS@ÀSiÀSjÀS°ÀSÏÀSÐÀSÜÀT ÀTÀTÀT)ÀTJÀT~ÀT€ÀT�ÀT³ÀTïÀTðÀU$ÀU(ÀUdÀU~ÀU‚ÀUÌÀVÀVcÀV©ÀVôÀWÀW!ÀWZÀW^ÀWjÀWvÀW°ÀWñÀXÀX\ÀX§ÀXÄÀYÀY/ÀYPÀYVÀY^ÀYbÀYxÀY|ÀYˆÀY•ÀYÏÀZÀZPÀZ�ÀZÛÀZõÀ[DÀ[ŒÀ[­À[³À[»À[ÍÀ\À\3À\9À\wÀ\“À\ÑÀ\ÒÀ]À]À]TÀ]oÀ]pÀ]™À]ŸÀ]çÀ]íÀ^9À^NÀ^PÀ^QÀ^qÀ^uÀ^½À^×À^ÛÀ_À_0À_GÀ_mÀ_ƒÀ_„À_³À_¹À_íÀ`À`-À`.À`VÀ`\À` À`¦À`÷À`ýÀa>ÀanÀa’Àa“ÀaãÀbÀb ÀbWÀb|ÀbŽÀb�Àb‘ÀbÝÀbâÀc+ÀcFÀcKÀc„Àc¢Àc¶Àc·ÀcÑÀcÒÀcÞÀdÀdÀdnÀdŽÀd�Àd®Àd¯Àd»ÀeÀeÀe_Àe„Àe…Àe‘Àe¼ÀfÀf.ÀfCÀfcÀf}Àf…Àf ÀfÃÀg$Àg.ÀggÀgvÀg’Àg©ÀgçÀh+Àh8ÀhCÀhKÀhSÀhlÀhŠÀh�Àh­Àh±Àh²ÀhîÀi?Ài�Ài�ÀiœÀiÞÀiùÀiúÀjÀjgÀjiÀjjÀj�Àj‘ÀjàÀk0Àk~Àk¡Àk¥Àk÷ÀlEÀl`Àl ÀlÅÀmÀm\Àm¨ÀmøÀn ÀnÀnZÀn¤ÀnôÀoCÀo�ÀoàÀp/ÀpwÀp³Àp·ÀqÀqKÀq›Àq×ÀqÛÀr(Àr4ÀrYÀrmÀr�Àr–Àr´Àr¿Às Às5ÀsAÀs_ÀsÀs£Às¨ÀsªÀs«ÀsÎÀsÒÀt!ÀtqÀt¿ÀtâÀtæÀu:ÀuˆÀuÁÀuÅÀvÀvgÀvsÀvwÀvÂÀw Àw\Àw«Àw÷ÀxHÀx—ÀxßÀyÀyÀyiÀy³ÀzÀz?ÀzCÀz�ÀzœÀz ÀzÅÀzÉÀ{À{dÀ{¯À{×À|À|"À|6À|KÀ|iÀ|nÀ|–À|¢À|áÀ|þÀ}BÀ}jÀ}tÀ}»À}åÀ}ïÀ}÷À~?À~FÀ~KÀ~MÀ~NÀ~qÀ~uÀ~ÀÀ~ÄÀÀ`ÀŸÀ£ÀìÀ€;À€QÀ€UÀ€£À€ðÀ�<À�}À�ÌÀ‚À‚lÀ‚¼À‚óÀ‚÷ÀƒAÀƒ‹Àƒ¿ÀƒÃÀ„À„À„ À„EÀ„IÀ„™À„äÀ…/À…WÀ…„À… À…ÊÀ…ÕÀ…ÿÀ†KÀ†SÀ†®À†íÀ‡.À‡VÀ‡{À‡¢À‡©À‡·À‡ÍÀ‡ÑÀ‡ÓÀ‡ÔÀˆ$ÀˆFÀˆHÀˆIÀˆ˜ÀˆÁÀˆÅÀˆÓÀˆ×À‰!À‰BÀ‰§À‰¨À‰íÀ‰ñÀ‰ÿÀŠÀŠOÀŠ�ÀеÀŠÍÀŠùÀŠÿÀ‹NÀ‹fÀ‹™À‹ÃÀ‹ïÀ‹ðÀŒÀŒ$ÀŒsÀŒÃÀ�À�^À�‰À��À�ÅÀ�ÙÀ�ÚÀŽ ÀŽÀŽ_ÀŽ®ÀŽûÀ�IÀ�sÀ�yÀ�¯À�ÄÀ�ÅÀ�ÑÀ� À�À�À�YÀ�]À�¬À�úÀ‘AÀ‘‹À‘¸À‘ºÀ‘»À’À’RÀ’oÀ’wÀ’£À’±À’ÆÀ’ÊÀ’çÀ’éÀ’êÀ“'À“+À“yÀ“ÄÀ“ÜÀ“àÀ”,À”}À”¼À”ÀÀ• À•UÀ•¥À•ôÀ–@À–‘À–àÀ—(À—dÀ—hÀ—²À—üÀ˜LÀ˜ˆÀ˜¤À˜¸À˜ÅÀ˜ÓÀ˜éÀ™ À™À™1À™FÀ™dÀ™iÀ™†À™ºÀ™¾À™ÜÀšÀšÀšÀš_Àš›Àš©Àš½ÀšÓÀšíÀ›À›À›À›+À›oÀ›—À›ŸÀ›æÀœÀœÀœÀœÀœ.Àœ~ÀœœÀœàÀœûÀ�À�"À�HÀ�dÀ�„À�…À�±À�½À�ÃÀ�ÅÀ�ÆÀžÀž#Àž'Àž^ÀžrÀž¼ÀžÂÀŸÀŸbÀŸ±ÀŸÜÀŸâÀ À %À &À hÀ nÀ ¿À¡À¡À¡OÀ¡ZÀ¡\À¡]À¡�À¡…À¡“À¡—À¡æÀ¢ À¢!À¢UÀ¢[À¢©À¢ôÀ£5À£;À£KÀ£QÀ£ À£ºÀ£ÈÀ£ÉÀ¤À¤>À¤DÀ¤’À¤àÀ¤úÀ¥À¥À¥GÀ¥TÀ¥UÀ¥ À¥¦À¥ôÀ¦?À¦tÀ¦}À¦~À¦ÉÀ§À§À§VÀ§ªÀ§°À§ÀÀ§ýÀ¨À¨À¨9À¨?À¨�À¨ØÀ©À©À©/À©5À©~À©—À©¬À©®À©¯ÀªÀªÀªmÀª�Àª–ÀªæÀ«/À«€À«ÉÀ«ãÀ«éÀ¬8À¬„À¬¾À¬ÄÀ­À­4À­FÀ­HÀ­IÀ­¡À­ëÀ®À®!À®"À®.À®vÀ®‘À®“À®”À®ÆÀ®ÊÀ¯À¯À¯VÀ¯•À¯©À¯­À¯óÀ°À°"À°aÀ°¤À°ÌÀ°ÐÀ±À±MÀ±cÀ±ÐÀ±ôÀ²À²À²=À²CÀ²�À²ßÀ³À³6À³fÀ³}À³�À³‚À³ÀÀ³ÆÀ´ À´(À´LÀ´MÀ´‚À´¥À´¦À´îÀµÀµÀµcÀµpÀµ“Àµ”ÀµÛÀ¶ À¶:À¶;À¶~À¶¾À¶ÍÀ¶ÓÀ·DÀ·¹À·ÿÀ¸À¸CÀ¸ŠÀ¸ÏÀ¸ÜÀ¹*À¹+À¹pÀ¹·À¹ÆÀ¹ÌÀº9ÀºªÀºüÀºýÀ»BÀ»‰À»ÎÀ»ãÀ¼=À¼>À¼„À¼ÈÀ½ À½TÀ½yÀ½À½ìÀ¾]À¾£À¾¤À¾êÀ¿.À¿sÀ¿ºÀÀÀÀ(ÀÀvÀÀwÀÀºÀÀÜÀÀâÀÁ%ÀÁIÀÁOÀÁ–ÀÁÖÀÂÀÂaÀ¨ÀÂìÀÃÀà ÀÃeÀÛÀÃìÀÃíÀÄ<ÀÄ�ÀćÀÄÖÀÅÀÅcÀÅŠÀÅ�ÀÅÕÀÆ$ÀÆpÀÆvÀƉÀÆžÀÆ¿ÀÆÚÀÆõÀÇÀÇÀÇÀÇfÀÇ«ÀDZÀÇåÀÇëÀÈ:ÀȈÀÈËÀÉÀÉÀÉ^ÀɬÀÉùÀÊÀÊ+ÀÊEÀÊfÀÊ�ÀÊœÀÊ·ÀʽÀʾÀËÀËÀË7ÀË8ÀËzÀ˨ÀË®ÀÌÀÌNÀÌiÀÌjÀ̲ÀÌïÀÍ.ÀÍoÀ͵ÀÍùÀÎ=ÀÎIÀÎOÀλÀÏ+ÀÏ1ÀÏ¡ÀÐÀÐUÀÐVÀШÀжÀмÀÑ ÀÑ0ÀÑ6ÀÑ}ÀѱÀѲÀÑôÀÒ7ÀÒGÀÒeÀÒfÀÒ³ÀÒáÀÓÀÓÀÓ^ÀÓdÀÓ±ÀÓÿÀÔ*ÀÔlÀÔmÀÔ³ÀÔòÀÕ/ÀÕ5ÀÕ‚ÀÕÓÀÕþÀÖGÀÖHÀÖ�ÀÖÎÀÖÞÀÖßÀ×$À×hÀ׃ÀדÀ×”À×äÀØ1ÀØPÀØVÀØžÀؤÀØéÀÙÀÙ ÀÙIÀÙxÀÙ•ÀÙ–ÀÙÖÀÚÀÚ-ÀÚ.ÀÚcÀÚiÀÚ¹ÀÛÀÛQÀÛ�ÀÛ–ÀÛçÀÜ6À܈ÀÜÕÀÝÀÝmÀÝ{ÀÝÀÀÝÔÀÝÕÀÞ!ÀÞ4ÀÞ:ÀÞŠÀÞØÀßÀß[À߇ÀߨÀßëÀßñÀàÀànÀàuÀàyÀàzÀàÉÀàúÀáÀáLÀá”ÀáãÀâ2Àâ|Àâ´ÀâºÀãÀãRÀã›ÀãÏÀãÕÀä%ÀärÀäÂÀåÀåRÀåŸÀåîÀæ>Àæ�Àæ“ÀæáÀç0ÀçdÀçjÀç»ÀèÀè@ÀèBÀèCÀè�ÀèµÀèÇÀèÛÀèßÀèàÀé.ÀésÀé†Àé‡ÀéÀÀéàÀéáÀê(ÀêNÀêOÀê[ÀêŸÀê«ÀêìÀêíÀëAÀë`ÀëaÀë»ÀëçÀëèÀëôÀìRÀì~ÀìÀì‹ÀìÄÀìèÀìúÀìþÀí4Àí5ÀíAÀíŸÀíËÀíÌÀíØÀîÀî5ÀîGÀîKÀî�Àî‚ÀîŽÀî×ÀîþÀïÀïÀïcÀïdÀïpÀï¹ÀïèÀïúÀïþÀðUÀðVÀðbÀð»ÀðØÀðêÀðîÀñIÀñJÀñVÀñ¯ÀñÔÀñæÀñêÀòMÀòNÀòZÀò«ÀòÈÀòÚÀòÞÀó-Àó.Àó:Àó‹Àó°ÀóÂÀóÆÀôÀôÀô*Àô|ÀôœÀôûÀôÿÀõÀõ_ÀõzÀõŒÀõ�Àõ¨Àõ¹ÀõÉÀõÛÀõîÀöÀöÀö2Àö7Àö8ÀöDÀöWÀölÀö�Àö¨ÀöÃÀöÞÀöåÀ÷ À÷-À÷‡À÷‹À÷ŒÀ÷éÀø ÀøÀøÀø<ÀøPÀødÀøxÀøŒÀø¡Àø´ÀøÈÀøÍÀøÎÀøÚÀøõÀùÀù0ÀùKÀùfÀù�ÀùˆÀù±ÀùÕÀùîÀúÀúÀú*Àú:ÀúJÀúZÀúkÀúrÀúvÀúwÀúÔÀúüÀûÀûÀû7ÀûKÀû_ÀûsÀû‡ÀûœÀû¯ÀûÃÀûÈÀûÉÀûÕÀûñÀüÀüMÀüQÀüRÀü›Àü¸ÀüÊÀüÎÀýÀýÀý+ÀýGÀýgÀý£Àý§Àý¨ÀýñÀþÀþ Àþ$ÀþtÀþuÀþ�ÀþÂÀþâÀÿ5Àÿ9Àÿ:Àÿ“Àÿ¯ÀÿÁÀÿÅÀÿÞÀÿïÀÿÿÀÀ$À;ÀRÀWÀXÀdÀ™ÀËÀÏÀÐÀ"À_À`ÀlÀ‹À­ÀÑÀÕÀÖÀ ÀNÀOÀ[À’ÀÄÀôÀøÀùÀRÀ™ÀšÀ¦ÀéÀ À(ÀPÀžÀ«ÀæÀìÀðÀñÀQÀ“À”ÀäÀ ÀÀoÀpÀ|ÀÆÀêÀÀ-À�ÀŽÀÐÀÖÀÚÀÛÀ#ÀGÀKÀ”À•ÀåÀ À À @À VÀ eÀ tÀ ŒÀ ‘À ’À žÀ ëÀ À À À ^À wÀ xÀ „À ¤À ÇÀ ñÀ õÀ öÀ VÀ …À †À ’À °À ÔÀ À *À ;À ?À @À —À ÓÀ ÔÀ àÀ À .À \À {À ŒÀ �À ‘À äÀ#À$À0ÀEÀpÀ®À²À³ÀøÀÀÀÀÉÀÊÀÖÀÀ>ÀBÀCÀOÀnÀpÀqÀ³À·ÀÅÀ#À3ÀdÀjÀ�À½À¾ÀÀ À^ÀŠÀÇÀÀÀÀ3À9ÀŒÀÐÀéÀêÀÀÀnÀÀÀÜÀóÀôÀ$À*ÀzÀÉÀåÀëÀ9ÀˆÀ×À%À6À{À´À¶À·ÀÿÀÀTÀ ÀæÀêÀ0À4À€ÀÏÀíÀñÀ;À‹À¬ÀìÀÀqÀrÀšÀ›À§ÀÙÀÛÀÜÀ+ÀEÀ€À«À¬ÀÇÀêÀëÀ÷ÀÀEÀfÀ~ÀáÀ=À²À»ÀÁÀÛÀßÀàÀìÀÀ'ÀWÀjÀpÀˆÀšÀžÀ À¡ÀàÀäÀ ,À wÀ ÅÀ éÀ íÀ!;À!ŠÀ!ÖÀ"&À"tÀ"‚À"•À"³À"ñÀ#3À#fÀ#gÀ#�À#£À#ìÀ$6À$À$–À$—À$¼À$ÂÀ%À%VÀ%¦À%ÅÀ%ÜÀ%ÝÀ&À&À&^À&¥À&óÀ'BÀ'{À'�À'ÏÀ(À(nÀ(§À(ÁÀ(ÂÀ(áÀ(âÀ)2À)YÀ)_À)®À)ûÀ*À*À*NÀ*TÀ*šÀ*ÌÀ+ À+À+À+[À+aÀ+£À+çÀ,5À,’À,–À,—À,£À,ºÀ-À-À-À-OÀ-„À-©À-­À-®À.À.EÀ.FÀ.jÀ.vÀ.¡À.ìÀ.óÀ/À/À/À/{À/¨À/©À/íÀ/ùÀ0$À0oÀ0vÀ0¹À0ôÀ1À1#À10À1‚À1ˆÀ1ŒÀ1�À1èÀ2.À2/À2�À2›À2ÆÀ3À3À3FÀ3‰À3šÀ3žÀ3ŸÀ3íÀ4À4À46À4HÀ4^À4pÀ4€À4šÀ4ŸÀ4 À4ÄÀ4ÐÀ4ûÀ5FÀ5MÀ5qÀ5uÀ5vÀ5ÔÀ6À6À6-À62À6‡À6±À6ÉÀ6õÀ7À7"À7(À79À7=À7>À7˜À7¾À7¿À8 À8À8RÀ8rÀ8tÀ8uÀ8ªÀ8æÀ8÷À9/À90À9}À9ÀÀ9ÊÀ9ËÀ:À:eÀ:“À:œÀ:�À:êÀ;;À;~À;‡À;ˆÀ;ØÀ;æÀ;ïÀ;ñÀ;òÀ:À>ˆÀ>ØÀ>éÀ>ïÀ?>À?DÀ?jÀ?pÀ?€À?†À?ÓÀ@À@À@!À@8À@9À@À@ÊÀ@ôÀA*ÀA+ÀA7ÀAZÀA®ÀA²ÀA³ÀA¿ÀAòÀAóÀAÿÀBPÀBRÀBSÀBtÀB±ÀB³ÀB´ÀBïÀCÀCÀCdÀCfÀCgÀCšÀC¿ÀCÞÀCêÀD(ÀD?ÀDhÀD�ÀD¸ÀDàÀEÀE ÀEÀEÀEÀEKÀE\ÀEˆÀE‰ÀE¦ÀE§ÀE³ÀEñÀFÀFÀFvÀFÐÀG+ÀGOÀGVÀGZÀG\ÀG]ÀG­ÀGýÀHIÀHNÀH`ÀHvÀH‹ÀH¡ÀH´ÀH¼ÀHÐÀI.ÀI�ÀIèÀJ ÀJÀJÀJ+ÀJVÀJtÀJ½ÀJûÀKÀKSÀKmÀK¿ÀKÅÀLÀLFÀLaÀLŸÀLºÀM ÀMÀM%ÀM?ÀM\ÀMzÀM¬ÀMÒÀNÀN'ÀNBÀNJÀNlÀN‰ÀN§ÀNêÀOÀOBÀOeÀO—ÀOŸÀO¾ÀOÛÀOùÀP+ÀPQÀPlÀP�ÀPÁÀPÉÀPÍÀPÏÀPÐÀQ!ÀQpÀQ¾ÀR ÀR;ÀR?ÀRˆÀR•ÀRÀÀS ÀS^ÀS¢ÀS¨ÀSùÀTGÀTtÀT¯ÀTÅÀTãÀTùÀUÀUÀU^ÀU¥ÀUºÀUÀÀV ÀV5ÀV;ÀVnÀV¡ÀVÔÀWÀW:ÀW@ÀW�ÀWÛÀWáÀWïÀX/ÀXFÀX]ÀXtÀX‹ÀX•ÀXŸÀX¥ÀX·ÀX½ÀXÞÀXäÀXòÀY0ÀYLÀYhÀY„ÀY ÀYªÀY´ÀYºÀZAÀZGÀZUÀZ’ÀZµÀZØÀZûÀ[À[(À[2À[8À[ÁÀ[ÇÀ[ÕÀ\À\<À\bÀ\ˆÀ\®À\¸À\ÂÀ\òÀ]À] À]8À]TÀ]UÀ]¡À]±À]ÙÀ]îÀ^À^À^DÀ^EÀ^“À^®À^ÖÀ^ëÀ_À_À_AÀ_BÀ_YÀ_xÀ_—À_ªÀ_«À_ÛÀ`À`TÀ`�À`æÀ`çÀ`ÿÀa ÀaXÀaYÀa‚Àa—Àa®ÀaâÀaùÀbÀb+ÀbDÀbrÀb�Àb§Àb±ÀbüÀc&ÀcJÀcÀc£ÀcØÀcçÀd)Àd/Àd3Àd4Àd@ÀdcÀd�Àd£Àd©ÀdÌÀdìÀe#ÀeEÀemÀeqÀerÀe~Àe“Àe½Àf Àf$Àf%Àf1ÀfRÀfgÀf~Àf·ÀfÐÀfÿÀg#ÀgUÀgyÀg«ÀgºÀgßÀgåÀgéÀgêÀgöÀh Àh!Àh8ÀhqÀhŠÀh¹ÀhÝÀiÀi3ÀieÀitÀjÀjÀjÀjÀjÀj[Àj_Àj¯ÀjúÀkLÀkbÀk�ÀkóÀlÀlHÀlLÀlMÀl§Àl»ÀlôÀløÀm'ÀmlÀm€ÀmžÀm¢Àm£ÀmÒÀnÀn+ÀnIÀnMÀnNÀnœÀnÂÀnßÀnàÀo Ào@ÀoAÀo¦ÀoÛÀoÜÀp/Àp`ÀpaÀpÅÀpïÀpðÀqTÀq~Àq€Àq�Àq´Àq¸ÀqÆÀqÊÀrÀrfÀrµÀrÝÀs)ÀsTÀsqÀsÃÀsðÀsñÀt-ÀtŠÀtãÀtçÀtèÀu5Àu{ÀuÈÀv ÀvÀvÀvTÀv¦ÀvòÀw4Àw8Àw9Àw}ÀwƒÀwÑÀxÀx9ÀxTÀxŒÀx“Àx³ÀxñÀx÷ÀyYÀy]Ày^Ày¨Ày®ÀyýÀz4ÀzYÀz³ÀzûÀzÿÀ{À{7À{=À{ŒÀ{ÜÀ|)À|yÀ|§À|­À|öÀ}8À}dÀ}jÀ}·À~À~À~#À~1À~^À~dÀ~À~›À~¡À~ÊÀ~ÐÀ~ëÀ~ñÀÀ7ÀcÀ‰À£À°ÀìÀòÀúÀ€À€ À€À€^À€¬À€îÀ�$À�AÀ�¤À�ªÀ�äÀ‚$À‚OÀ‚À‚ÎÀƒÀƒ Àƒ%ÀƒnÀƒvÀƒ’ÀƒÖÀƒÞÀƒäÀ„À„À„À„`À„ŸÀ„ À„ñÀ…>À…eÀ…fÀ…¯À…çÀ†À† À† À†<À†…À††À† À†ÅÀ†ÆÀ†çÀ‡+À‡7À‡nÀ‡oÀ‡{À‡¾À‡¿À‡ËÀˆÀˆÀˆÀˆ?ÀˆkÀˆÀˆ…Àˆ¯ÀˆßÀ‰À‰À‰À‰À‰gÀ‰iÀ‰jÀ‰¢ÀŠÀŠÀŠÀŠ3ÀŠOÀŠPÀŠdÀЦÀвÀŠéÀŠêÀ‹À‹À‹8À‹PÀ‹lÀ‹…À‹£À‹¾À‹ÙÀ‹ñÀŒÀŒ ÀŒ&ÀŒ*ÀŒ+ÀŒ7ÀŒ�ÀŒ‚ÀŒŽÀŒÙÀŒÚÀŒæÀ� À�5À�IÀ�OÀ�À�¡À�ÃÀ�çÀ�ëÀ�ìÀ�øÀŽ+ÀŽ-ÀŽ.ÀŽ`ÀަÀާÀŽ¿ÀŽ×ÀŽØÀ�À�(À�_À�`À�lÀ�¬À�­À�¹À�úÀ�ûÀ�À�*À�VÀ�jÀ�pÀ�ÐÀ�ÔÀ�ÕÀ�áÀ‘À‘À‘À‘JÀ‘�À‘�À‘¨À‘ÀÀ‘ÁÀ’À’À’GÀ’HÀ’TÀ’“À’”À’ À’àÀ’áÀ’íÀ“À“<À“PÀ“VÀ“µÀ“¹À“ºÀ“ÆÀ“ûÀ“ýÀ“þÀ”1À”€À”�À”¢À”ÃÀ”ÄÀ”ÞÀ•$À•0À•gÀ•hÀ•tÀ•–À•äÀ•åÀ•ñÀ–GÀ–HÀ–TÀ–wÀ–£À–·À–½À–èÀ—À—>À—BÀ—CÀ—OÀ—ŒÀ—ŽÀ—�À—ÉÀ—ôÀ—õÀ˜À˜À˜YÀ˜ZÀ˜fÀ˜�À˜žÀ˜ªÀ˜ÖÀ˜×À˜ãÀ™+À™,À™8À™[À™‡À™›À™¡À™ÓÀ™õÀš(Àš,Àš-ÀštÀš´ÀšµÀšÁÀšèÀšêÀšëÀ›*À›.À›~À›ÑÀœÀœPÀœŒÀœÖÀœêÀ�5À�9À�:À�‡À�ÍÀžÀž'ÀžXÀž\Àž]Àž¡ÀžóÀŸ7ÀŸKÀŸ{ÀŸÀŸ€ÀŸÄÀŸÊÀ À bÀ ¨À ÌÀ¡ À¡À¡$À¡^À¡bÀ¡cÀ¡•À¡ÝÀ¡ñÀ¢7À¢[À¢_À¢`À¢“À¢ÜÀ¢ðÀ£FÀ£œÀ£ÕÀ£ÙÀ£ÚÀ¤(À¤<À¤\À¤`À¤aÀ¤¡À¤ÁÀ¤ÂÀ¥À¥'À¥9À¥=À¥„À¥…À¥¾À¥åÀ¥÷À¥ûÀ¦8À¦9À¦rÀ¦˜À¦ªÀ¦®À¦êÀ¦ëÀ§EÀ§ŠÀ§‹À§êÀ¨'À¨(À¨oÀ¨�À¨¡À¨ôÀ¨õÀ©OÀ©ƒÀ©„À©ÒÀ©øÀªÀªÀªÀª^Àª“ÀªÈÀ«À«.À«JÀ«XÀ«YÀ«xÀ«yÀ«¢À«¨À«ùÀ¬À¬,À¬<À¬]À¬pÀ¬zÀ¬�À¬“À¬”À¬äÀ­À­ À­ZÀ­¤À­íÀ®7À®=À®‚À®•À®¥À®óÀ¯À¯#À¯-À¯1À¯3À¯4À¯‰À¯¢À¯¦À¯óÀ°AÀ°ŽÀ°ÞÀ°âÀ±7À±‹À±äÀ²<À²�À²¸À²¼À³À³;À³?À³MÀ³QÀ³•À³ßÀ´/À´YÀ´£À´ëÀµÀµ_Àµ­ÀµÇÀ¶À¶À¶lÀ¶rÀ¶¾À·À· À·bÀ·‚À·ˆÀ·ëÀ¸NÀ¸°À¸¹À¸ºÀ¹ À¹À¹iÀ¹ÇÀ¹óÀ¹ùÀºSÀº°Àº¶À»À»‚À»çÀ»óÀ»ôÀ¼GÀ¼MÀ¼¥À¼ýÀ½SÀ½nÀ½tÀ½ÎÀ¾$À¾9À¾?À¾£À¿À¿jÀ¿tÀ¿uÀ¿µÀ¿»ÀÀÀÀpÀÀ€ÀÀ†ÀÀßÀÀÿÀÁÀÁhÀÁËÀÂ-ÀÂ6ÀÂ8ÀÂ9ÀÂpÀ˜ÀÂÒÀÂûÀÃPÀÃsÀÖÀùÀÃÜÀÃàÀÃñÀÃóÀÃôÀÄ%ÀÄMÀÄÀĨÀÄÉÀÄÍÀÄÞÀÄàÀÄáÀÅÀÅ=ÀÅwÀÅ ÀžÀÅáÀÆÀÆ(ÀÆGÀÆfÀÆjÀÆ{ÀÆ}ÀÆ~ÀÆ»ÀÆÝÀÆÿÀÇ,ÀÇEÀÇ^ÀÇwÀÇ�ÀÇ¡ÀÇ£ÀǤÀÇìÀÇðÀÈBÀÈUÀÈYÀÈgÀÈkÀÈáÀÈåÀÉ ÀÉ?ÀÉEÀÉ”ÀÉåÀÊ/ÀÊ~ÀÊÏÀË ÀËpÀË’À˘ÀËçÀÌÀÌ#À̆ÀÌéÀÍMÀͳÀ͹ÀÎÀÎJÀÎeÀÎkÀθÀÏ ÀÏKÀÏ^ÀÏoÀÏ~ÀϘÀ϶ÀÏÞÀÏøÀÐÀÐ@ÀÐ|ÀÐ�ÀмÀÑÀÑCÀÑmÀѳÀÑÇÀÒ"ÀÒ&ÀÒ'ÀÒrÀÒ’ÀÒ˜ÀÒçÀÓ8ÀÓ‚ÀÓÑÀÔ"ÀÔsÀÔÃÀÔåÀÔëÀÕ9ÀÕoÀÕuÀÕØÀÖ;ÀÖŸÀ×À× À×\À×¢À×½À×ÃÀØÀØcÀØ£ÀØ©ÀØõÀÙCÀÙ�ÀÙÛÀÚ*ÀÚOÀÚbÀÚuÀÚˆÀÚ¢ÀÚÀÀÚèÀÛÀÛÀÛ3ÀÛZÀÛ–ÀÛ©ÀÛÖÀÜÀÜFÀ܉ÀÜŠÀÜïÀÝKÀÝ�ÀÝ¥ÀݸÀÝËÀÝÞÀÝîÀÞÀÞÀÞ6ÀÞGÀÞPÀÞ]ÀÞkÀÞ¢ÀÞ×ÀÞíÀßÀßÀß%Àß:ÀßMÀß`ÀßpÀ߆Àß À߸ÀßÉÀßÒÀߨÀßÜÀßÝÀà-ÀàKÀàQÀàœÀàêÀá%Àá+ÀázÀáËÀâÀâdÀâµÀãÀãVÀãxÀã~ÀãÎÀäÀäÀäwÀäÙÀå<Àå¡Àå§ÀåöÀæFÀæiÀæoÀæ¼ÀçÀçOÀçaÀçtÀçŽÀç¬ÀçÔÀçñÀèÀè.ÀèUÀè{Àè·ÀèÊÀè÷Àé:ÀédÀéªÀé¾ÀéÎÀéßÀéðÀêÀêÀê2ÀêDÀêTÀêcÀêjÀênÀêoÀê¬ÀêÌÀêÍÀëÀëAÀëEÀëbÀë}Àë•Àë²ÀëÄÀëÞÀëãÀëäÀìDÀìhÀìlÀì‰Àì�Àì±ÀìÄÀìÜÀìùÀí Àí%Àí*Àí+Àí6ÀíIÀí^ÀílÀízÀíˆÀí–Àí¤Àí²ÀíÀÀíÎÀíÛÀíéÀíïÀîÀî:ÀîMÀî`ÀîxÀî‰ÀîšÀî°ÀîÈÀîåÀî÷ÀïÀïÀïÀï"Àï‚Àï¥ÀïÁÀïÕÀïéÀðÀðÀð0ÀðGÀð\ÀðuÀðzÀð{ÀðÍÀðëÀñ ÀñcÀñkÀñxÀñ¨ÀòÀò ÀòÀòÀòÀòÀòWÀòÀò¥Àò«ÀòçÀó6Àó|Àó®Àó´ÀôÀôSÀôaÀôgÀô®ÀôôÀõ!Àõ'ÀõmÀõ½Àö Àö'ÀöCÀöRÀöcÀöuÀö‡Àö¢ÀöÄÀöéÀöüÀ÷À÷ZÀ÷`À÷tÀ÷žÀ÷²À÷ÃÀ÷ÔÀ÷öÀøÀø Àø%ÀøCÀøIÀøMÀøNÀøZÀømÀø‚Àø’Àø–Àø—Àø×Àø÷ÀøøÀùOÀùyÀù}Àù Àù²Àù¿ÀùÌÀùèÀúÀúÀúÀúRÀúwÀú¿ÀúÛÀúÝÀúÞÀû(Àû=ÀûAÀûkÀû»ÀûùÀüÀüEÀüYÀü�ÀüªÀüÉÀüÏÀüßÀüüÀýÀýÀýÀýÀý4Àý5ÀýzÀý€ÀýÉÀþÀþ[ÀþqÀþ¯ÀþôÀÿ=Àÿ‡Àÿ´ÀÿüÀ>ÀYÀŽÀ”ÀÆÀÀAÀWÀ_ÀcÀdÀ�ÀðÀ=À‹ÀÜÀñÀLÀMÀ‚ÀÍÀÀGÀ‡À¢À°À¶À·ÀóÀÀAÀGÀKÀLÀhÀ‡ÀˆÀ¤À¾À¿ÀÀ#À$À€À³À´ÀèÀ<À>À?ÀrÀvÀ«ÀóÀCÀ‘À·À»À À UÀ £À ìÀ %À PÀ ‘À ¯À ÁÀ À À À :À ;À {À §À ¨À ÜÀ âÀ 0À ~À ÉÀ À gÀ ‘À —À ÞÀ äÀ òÀÀ0ÀOÀjÀtÀzÀÈÀÒÀØÀæÀ7ÀbÀ“ÀÄÀÊÀýÀHÀ“ÀÞÀ)À/ÀVÀ€ÀˆÀ’À˜ÀåÀ:ÀKÀQÀ›ÀÆÀÀ7À;À<ÀrÀxÀÐÀÀÀfÀ‡À¸À ÀIÀtÀxÀyÀ»ÀÁÀÀ\À—À£À¶ÀËÀíÀýÀÀÀgÀŒÀ©ÀÀÀÙÀÞÀßÀÀOÀSÀ�À‘ÀíÀÀÀrÀšÀ›ÀîÀ À À À^ÀbÀ…ÀÂÀÔÀÀ)À*ÀxÀ‰ÀŠÀÛÀðÀöÀAÀÀÀÀÏÀÑÀÒÀ ÀÀ]À£ÀîÀ:ÀŠÀ°À´ÀÀOÀžÀ®À²ÀþÀ MÀ œÀ éÀ!6À!†À!ÕÀ""À"=À"AÀ"ŽÀ"ØÀ#%À#GÀ#KÀ#šÀ#ßÀ$,À$}À$ÎÀ%À%AÀ%xÀ%¿À%ÅÀ&À&`À&®À&ùÀ'(À'.À'{À'¤À'ªÀ'ûÀ(IÀ(˜À(ÕÀ(óÀ(ùÀ)HÀ)—À)�À)ïÀ*À*À*nÀ*¿À+À+\À+ªÀ+õÀ,@À,PÀ,VÀ,¤À,ÎÀ,ÔÀ-À-À-dÀ-µÀ.À.RÀ.yÀ.…À.šÀ.¸À.ÑÀ.÷À/À/À/UÀ/ À/¦À/ýÀ0TÀ0ZÀ0jÀ0‡À0ÉÀ0ýÀ1À1lÀ1µÀ2À2À2À2'À2/À2BÀ2LÀ2’À2ÅÀ3À3pÀ3ÎÀ3ÏÀ3ßÀ3ëÀ3ýÀ4À46À4KÀ4aÀ4jÀ4¬À4²À4¶À4·À5À57À5=À5‹À5ØÀ6&À6qÀ6 À6¦À6óÀ7=À7‰À7ØÀ7ëÀ7ñÀ8BÀ8‘À8ØÀ9)À9zÀ9ÉÀ:À:À:UÀ:¤À:õÀ;>À;wÀ;}À;ÍÀ<À'À>wÀ>ÆÀ>ôÀ>úÀ?8À?HÀ?]À?zÀ?‘À?¶À?ÏÀ?ÖÀ?ûÀ@À@sÀ@|À@‚À@ÅÀAÀAÀAmÀAÄÀAÊÀAÚÀA÷ÀB9ÀBqÀB’ÀBàÀC.ÀC{ÀCŠÀC–ÀC ÀC¨ÀC»ÀCÅÀDÀD[ÀDaÀDeÀDfÀDÈÀDæÀEÀEÀE)ÀENÀEeÀE~ÀEƒÀE„ÀEÔÀE÷ÀF ÀF"ÀF2ÀFJÀF]ÀFgÀFwÀF{ÀF|ÀFÇÀFìÀG1ÀGMÀGNÀGhÀGiÀG³ÀG¹ÀHÀHÀH8ÀHLÀH\ÀHxÀH‹ÀH•ÀH¬ÀIÀIÀIÀIÀIcÀIgÀI£ÀIßÀIðÀJÀJÀJfÀJ°ÀJéÀJïÀK<ÀK‹ÀK¡ÀK«ÀK¬ÀKæÀKìÀL2ÀL8ÀLzÀL�ÀL™ÀLšÀLÐÀLÖÀMÀM.ÀM9ÀM;ÀM<ÀM†ÀM’ÀM–ÀMµÀMÃÀMûÀN ÀN ÀNCÀNPÀNRÀNSÀNˆÀNŒÀNÓÀOÀOXÀO\ÀO¥ÀOõÀP>ÀP[ÀP_ÀP¯ÀPøÀQ-ÀQ1ÀQ~ÀQ½ÀQÁÀQçÀQëÀR6ÀR†ÀRÔÀS#ÀSmÀS ÀS¤ÀSïÀT6ÀTNÀT‘ÀT¯ÀTµÀTþÀUFÀU–ÀUåÀV2ÀVuÀV{ÀVÂÀVØÀW&ÀW'ÀWoÀWuÀW¡ÀW§ÀW·ÀW½ÀXÀXCÀXRÀXSÀX¤ÀXõÀYDÀY�ÀYœÀY¢ÀYîÀZ?ÀZ�ÀZÕÀ[#À[mÀ[sÀ[ÀÀ[ÆÀ[êÀ[ðÀ\>À\ŠÀ\ÚÀ]*À]OÀ]UÀ]£À]ìÀ^=À^‹À^ÙÀ_)À_qÀ_žÀ_¤À_îÀ`À` À`À`HÀ`pÀ`‡À`ÇÀ`ðÀa'Àa`ÀazÀa”ÀaœÀa¦Àa¬ÀaûÀbIÀb—ÀbµÀb»ÀbÉÀböÀc9ÀcaÀcxÀc¸ÀcïÀd(ÀdBÀdJÀdTÀdZÀd«ÀdñÀe;ÀeAÀeOÀe|Àe“ÀeçÀf Àf:ÀfQÀf²ÀfëÀgÀg ÀgÀgÀghÀg±ÀhÀh:Àh@ÀhdÀhjÀh©Àh¯ÀhýÀiKÀiœÀiçÀj6Àj„ÀjÏÀkÀkkÀk¼Àk×ÀkÝÀkíÀkóÀlCÀleÀl­ÀlÃÀlðÀlñÀm1ÀmPÀmVÀm•Àm›ÀmäÀn(Àn:Àn;Àn—ÀnäÀo6Ào<Ào{Ào�ÀoÏÀpÀpAÀpcÀpdÀp§ÀpìÀq3ÀqhÀqnÀq“Àq©ÀqªÀqúÀrJÀrrÀrsÀrÂÀs ÀsÀs#ÀsiÀs{Às¢Às£ÀsøÀtÀtÀtiÀtµÀuÀu-ÀuPÀuQÀu¡ÀuÜÀvÀvÀvWÀv­ÀvÉÀvÏÀw!ÀwoÀw¿ÀwìÀx Àx ÀxYÀxpÀxvÀxÌÀxÒÀyÀyÀynÀy¶ÀyßÀyåÀz/ÀzCÀzœÀz�ÀzëÀ{ À{À{gÀ{mÀ{±À{·À| À|QÀ|¡À|ÛÀ|ÜÀ}*À}LÀ}RÀ}±À}·À}ûÀ~À~SÀ~›À~óÀEÀFÀ”À¨À®À€À€ À€NÀ€TÀ€¦À€îÀ�À�NÀ�OÀ� À�òÀ‚EÀ‚VÀ‚\À‚°ÀƒÀƒUÀƒ¤ÀƒóÀ„FÀ„™À„èÀ…9À…UÀ…[À…“À…åÀ†9À†ˆÀ†ÊÀ†ÐÀ‡À‡EÀ‡KÀ‡YÀ‡zÀ‡™À‡ÒÀˆÀˆ.ÀˆhÀˆ¤Àˆ³Àˆ»ÀˆÅÀˆËÀ‰À‰hÀ‰ÃÀŠÀŠ'ÀŠ-ÀŠsÀŠÀÀŠôÀŠúÀ‹JÀ‹™À‹åÀ‹ýÀŒÀŒ/ÀŒ0ÀŒ�ÀŒÓÀ�&À�,À�|À�ÎÀŽÀŽnÀŽÀÀ�À�gÀ�tÀ�zÀ�¯À�ÒÀ�ÓÀ�À�bÀ�À�³À�´À‘À‘KÀ‘QÀ‘ŸÀ‘¥À’À’À’³À’´À’ãÀ’éÀ“.À“IÀ“hÀ“iÀ“¹À“ôÀ“úÀ”eÀ”ÔÀ”ýÀ”þÀ•OÀ•‘À•—À–À–sÀ–ŸÀ– À–ðÀ—@À—fÀ—lÀ—±À—ëÀ—ìÀ˜<À˜À˜…À˜ùÀ™lÀ™°À™±À™þÀšOÀšrÀšxÀšãÀ›RÀ›{À›|À›ÇÀœÀœhÀœ‹Àœ‘ÀœþÀ�oÀ�¨À�©À�åÀ�ëÀž+ÀžxÀžÂÀŸÀŸgÀŸ·ÀŸãÀŸéÀ XÀ ËÀ ÑÀ¡)À¡‡À¡ˆÀ¡½À¡ÃÀ¢ À¢UÀ¢�À¢ªÀ¢«À¢ùÀ£PÀ£‹À£ŒÀ£ÛÀ¤'À¤-À¤|À¤•À¤›À¤çÀ¥0À¥CÀ¥‡À¥ˆÀ¥ÏÀ¥ÕÀ¦#À¦qÀ¦¾À§ À§NÀ§TÀ§¢À§ïÀ¨=À¨„À¨•À¨ÜÀ¨ÝÀ©$À©=À©bÀ©cÀ©¯À©¿À©ÅÀªÀªÀª#ÀªoÀª¼ÀªúÀ«À«OÀ«›À«¡À«òÀ¬?À¬ŒÀ¬’À¬ÜÀ­(À­uÀ­¯À­°À­õÀ­ûÀ®BÀ®HÀ®ŽÀ®ØÀ®ÞÀ®îÀ®ôÀ¯DÀ¯]À¯§À¯¨À¯íÀ¯óÀ°CÀ°�À°–À°ÜÀ±&À±,À±<À±BÀ±�À±®À±úÀ±ûÀ²EÀ²KÀ²—À²¨À²®À²÷À³HÀ³_À³eÀ³®À³üÀ´HÀ´�À´àÀµ+ÀµvÀµÅÀ¶À¶\À¶–À¶œÀ¶ÃÀ¶ÉÀ¶ÙÀ·*À·vÀ·�À·ïÀ¸9À¸:À¸~À¸„À¸ÕÀ¹.À¹�À¹ÕÀº ÀºÀºcÀº´À»À»UÀ»¥À»ùÀ¼EÀ¼KÀ¼œÀ¼ìÀ½AÀ½˜À½ÈÀ¾À¾jÀ¾®À¾´À¿À¿VÀ¿¡À¿ïÀÀDÀÀJÀÀžÀÀïÀÁ8ÀÁ>ÀÁ�ÀÁªÀÁ°ÀÁ¾ÀÁÓÀÁüÀÂÀÂ&ÀÂ.ÀÂ4ÀÂbÀ˜ÀžÀÂ÷ÀÃÀÃ6ÀÃ<ÀÃNÀÃ}ÀÞÀÃÕÀÄ ÀÄ3ÀÄRÀÄnÀÄ«ÀÄÉÀÄçÀÅ-ÀÅ[ÀʼnÀÅšÀůÀÅãÀÆ&ÀÆMÀÆWÀÆ]ÀÆlÀÆtÀÆ~ÀÆ„ÀÆÝÀÆãÀÆñÀÇÀÇJÀÇ]ÀÇtÀLJÀÇ ÀǨÀÇ®ÀÇÜÀÈÀÈÀÈqÀÈ�ÀȰÀȶÀÈÈÀÈ÷ÀÉÀÉOÀɃÀÉ­ÀÉØÀÉôÀÊ1ÀÊOÀÊmÀʳÀÊáÀËÀË ÀË5ÀËiÀˬÀËÂÀËöÀÌ*ÀÌVÀÌ`ÀÌfÀÌuÀÌ}À̇ÀÌ�ÀÌÖÀÍ!ÀÍTÀÍZÀÍjÀÍpÀ;ÀÍÕÀÍçÀÍøÀÎÀÎ0ÀÎIÀÎcÀÎwÀΈÀÎ�ÀÎŽÀÎÒÀÎØÀÏ)ÀÏ‚ÀÏÕÀÐ)ÀÐ{ÀÐÍÀÑÀÑ ÀÑZÀÑ¢ÀѨÀÑùÀÒ9ÀÒdÀÒjÀÒ¸ÀÓÀÓÀÓTÀÓ¡ÀÓñÀÓ÷ÀÔRÀÔcÀÔiÀÔwÀÔŒÀÔµÀÔÈÀÔßÀÔçÀÔíÀÕÀÕQÀÕWÀÕ°ÀÕÎÀÕïÀÕõÀÖÀÖ6ÀÖ†ÀÖÕÀ×&À×BÀׇÀ×ÑÀØ ÀØ4ÀØjÀØ“ÀغÀØêÀÙÀÙÀÙqÀÙÌÀÚ&ÀÚhÀÚ”ÀÚÀÀÚÿÀÛ>ÀÛJÀÛkÀÛÉÀÛÓÀÛÙÀÛèÀÛðÀÛúÀÜÀÜYÀÜ_ÀÜmÀÜ‚ÀÜÆÀÜÙÀÜðÀÝÀÝÀÝ$ÀÝ*ÀÝXÀÝŽÀÝ”ÀÝíÀÞ ÀÞ,ÀÞ2ÀÞDÀÞsÀÞÃÀßÀßcÀßÀßÄÀàÀàLÀà„Àà¯ÀàåÀáÀá5ÀáeÀá�Àá“ÀáîÀâEÀâ ÀâýÀãHÀãŽÀã·ÀãÑÀä Àä(ÀäDÀäˆÀä´ÀäàÀäïÀå&Àå]Àå’ÀåÇÀåÍÀæ'Àæ�ÀæÙÀç ÀçOÀç[Àç|ÀçêÀçôÀçúÀè ÀèÀèÀè!Àè1Àè7Àè„Àè™Àè®Àè¿ÀèÞÀèõÀé Àé&Àé:ÀéKÀéPÀéQÀéžÀé¤ÀéôÀê ÀêÀê5ÀêŒÀêŽÀê�ÀêÝÀëÀë;Àë˜ÀëžÀëÒÀëñÀìÀìlÀìpÀìqÀìÂÀìàÀìäÀíÀí'Àí8ÀíHÀíZÀímÀírÀísÀíÏÀî+ÀîpÀî•Àî–Àî¢ÀîðÀïÀï Àï,ÀïDÀï`Àï‰Àï²ÀïÛÀðÀð ÀðÀð$Àð(Àð)Àð5ÀðcÀð}Àð¹ÀðÆÀðêÀñOÀñUÀñYÀñZÀñ¼ÀòÀòÀòpÀò‘Àò•Àò±ÀòÂÀòÒÀòäÀò÷ÀóÀó0Àó5Àó6ÀóBÀó“Àó®Àó¯Àó»ÀôÀôEÀôFÀôRÀô©ÀôÈÀôÉÀôÕÀõ8ÀõiÀõjÀõvÀõµÀõ¶ÀöÀöCÀöDÀöPÀö¨ÀöÐÀöÑÀöÝÀ÷;À÷gÀ÷hÀ÷tÀ÷œÀ÷¼À÷úÀøÀøÀøÀøÀøkÀøœÀø�Àø©ÀøÈÀøùÀùÀù)Àù-Àù.Àù~Àù²Àù³Àù¿ÀúÀú9ÀúSÀú ÀúîÀû0ÀûˆÀûŒÀû�ÀûãÀüÀüÀüÀü4ÀüEÀüUÀügÀüzÀüŠÀü Àü¥Àü¦Àü²ÀüíÀýÀýAÀýEÀýFÀý™ÀýÚÀýÛÀýçÀþ:ÀþlÀþªÀþ®Àþ¯ÀÿÀÿkÀÿlÀÿxÀÿ°ÀÿáÀÿåÀÿæÀ?À~ÀÀ‹À©ÀØÀùÀ?ÀCÀDÀšÀÓÀÔÀàÀÀ3ÀZÀ À¤À¥ÀÀ@ÀAÀMÀ‚À°À´ÀµÀÀMÀNÀZÀ�À¯ÀÏÀÀÀÀuÀ•À™À´ÀÃÀÒÀáÀðÀÀ)À.À/À;À[ÀˆÀŒÀ�ÀâÀ/À0À<ÀfÀ†À ÀÞÀ:À@ÀDÀEÀžÀ¾ÀÂÀÝÀîÀþÀ À #À DÀ \À aÀ bÀ nÀ ›À ½À ÿÀ À À aÀ ÁÀ ÂÀ ÎÀ À +À MÀ ¥À ©À ªÀ óÀ À À 6À MÀ dÀ …À �À ¢À £À ¯À ôÀ &À tÀ xÀ yÀ ÁÀ êÀ îÀÀ:À[ÀsÀxÀyÀ…À¯ÀÏÀéÀ'ÀƒÀ‰À�ÀŽÀçÀÀ À&À7ÀGÀYÀlÀ�À¥ÀªÀ«À·ÀñÀÀRÀVÀWÀ¨ÀÊÀÎÀëÀùÀÀÀ;ÀSÀXÀYÀeÀÄÀäÀòÀÀÀ%À8ÀJÀ\ÀmÀƒÀ–À�À¡À¢À­ÀÀÀÕÀãÀñÀÿÀ ÀÀ)À5ÀCÀQÀWÀvÀ�À¡À±ÀÃÀÖÀíÀÀÀ9ÀQÀVÀWÀcÀ�ÀÎÀÒÀÓÀ6À”À•À¡ÀÝÀÿÀ#ÀIÀ]ÀnÀÀ•À¨ÀÉÀÐÀéÀ7À=ÀAÀBÀ£ÀÄÀÈÀçÀùÀÀÀ6ÀNÀjÀoÀpÀ|ÀÁÀãÀÀ!ÀKÀ_ÀoÀ~À�À¡À±ÀÀÀÑÀãÀùÀ À-À4ÀMÀ›À¡À¥À¦À±ÀÆÀÛÀðÀþÀ ÀÀ(À6ÀDÀRÀ`ÀnÀ|À‰À�À´À×ÀéÀýÀÀ%À;ÀOÀbÀwÀ�À®ÀÆÀâÀçÀèÀôÀ<À^À€ÀŸÀÉÀÝÀðÀÀÀ+À;ÀJÀ[ÀmÀƒÀ–À·À¾À×À %À +À /À 0À ;À PÀ eÀ zÀ ˆÀ –À ¤À ²À ÀÀ ÎÀ ÜÀ êÀ øÀ!À!À!À!>À!aÀ!sÀ!ŠÀ! À!¸À!ÑÀ!åÀ!øÀ" À"#À"DÀ"\À"xÀ"}À"~À"ŠÀ"°À"ÔÀ#À#À#À#\À#’À#“À#ŸÀ#ÚÀ$&À$RÀ$vÀ$¡À$ÙÀ$ÝÀ$ÞÀ$êÀ%5À%ŽÀ%’À%“À%ŸÀ%ìÀ&À&YÀ&_À&¦À&ªÀ&«À'À'-À'NÀ'fÀ'yÀ'‘À'–À'—À'£À'îÀ(À(^À(bÀ(cÀ(²À(ÖÀ(ÚÀ(ùÀ)À)#À)DÀ)\À)aÀ)bÀ)nÀ)€À)‘À)³À)ÉÀ)âÀ)üÀ*À*!À*'À*IÀ*ŒÀ*�À*µÀ*ßÀ+*À+0À+}À+˜À+íÀ+öÀ+üÀ+ýÀ,DÀ,ƒÀ,„À,®À,ÎÀ,óÀ-À-=À-sÀ-•À-·À-íÀ.#À.WÀ.‹À.±À.ÖÀ.ýÀ/%À/+À/,À/OÀ/�À/ÞÀ0À0À0=À0SÀ0fÀ0zÀ0ŽÀ0¨À0ºÀ0ÍÀ0÷À1 À1À1À1.À1|À1‚À1†À1‡À1“À1¨À1¹À1ØÀ1ïÀ2À2 À24À2EÀ2KÀ2|À2}À2¥À2ÒÀ3 À3&À3DÀ3¢À3¨À3äÀ3ÿÀ4eÀ4nÀ4tÀ4¬À4­À4ÓÀ4éÀ4üÀ5À5$À59À5FÀ5TÀ5~À5�À5¤À5¥À5¾À6 À6À6À6À6"À67À6LÀ6ZÀ6hÀ6uÀ6ŠÀ6˜À6¦À6´À6ÁÀ6ÏÀ6ÕÀ6öÀ7À76À7NÀ7jÀ7|À7›À7²À7ÉÀ7ÜÀ7÷À7üÀ7ýÀ8 À8aÀ8´À8¸À8¹À9À9)À9-À9JÀ9`À9oÀ9…À9£À9¨À9©À9µÀ9÷À9ùÀ9úÀ:(À:gÀ:hÀ:°À:´À:èÀ:ìÀ;3À;uÀ;·À;ÐÀ<À<À<`À<¢À<ÃÀ<ìÀ<íÀ=.À=4À=À=ÂÀ=ãÀ> À>À>8À>>À>�À>ÜÀ?%À?UÀ?VÀ?˜À?žÀ?ÕÀ@$À@sÀ@¼À@ÂÀAÀA`ÀA�ÀA“ÀAãÀB,ÀBEÀBKÀBšÀB¯ÀBÛÀBÜÀC,ÀCOÀCaÀCbÀC¨ÀC®ÀCüÀDÀD,ÀD-ÀDvÀD|ÀDÍÀDÿÀEÀE!ÀE"ÀErÀE¼ÀEØÀEÞÀFÀF*ÀF+ÀF7ÀFhÀF€ÀF¥ÀFÙÀFßÀFõÀGEÀGbÀG|ÀG�ÀGÌÀGÖÀGàÀGçÀGëÀGìÀHJÀHŸÀH ÀH¬ÀHÙÀHñÀIÀIJÀIPÀIQÀIvÀIžÀIÔÀIØÀIÙÀJ9ÀJÀJ€ÀJŒÀJŸÀJ·ÀJÇÀJßÀJòÀJüÀKÀK/ÀK3ÀK4ÀKÀK¤ÀKèÀLÀLÀLÀL ÀL,ÀLGÀL[ÀLkÀL‡ÀLšÀL¤ÀL»ÀMÀM ÀM!ÀM-ÀM‹ÀM´ÀMµÀMÁÀMãÀMåÀMæÀN-ÀN1ÀNvÀN»ÀN¿ÀNåÀNéÀO4ÀO�ÀOÉÀPÀPaÀP¬ÀPÜÀPàÀQ+ÀQrÀQ“ÀQÔÀRÀR7ÀRmÀRnÀR©ÀR¯ÀRóÀS:ÀSqÀS¶ÀSòÀT ÀT ÀT:ÀT@ÀT‹ÀTÛÀU ÀU:ÀU<ÀU=ÀU�ÀUºÀUÎÀUÒÀUÓÀVÀV7ÀV8ÀVDÀVoÀVpÀV|ÀV—ÀV²ÀVöÀVüÀW3ÀWOÀWnÀW‚ÀWÕÀXÀXAÀXUÀXYÀXZÀX³ÀXíÀXîÀYÀY ÀYÀYXÀYZÀY[ÀYpÀYtÀY°ÀY¿ÀYÙÀYßÀZ*ÀZuÀZ�ÀZ•ÀZÖÀZÜÀ[+À[DÀ[UÀ[ƒÀ[¢À[½À\À\À\CÀ\gÀ\‘À\¼À\ãÀ] À]4À]5À]eÀ]kÀ]½À]àÀ]õÀ]öÀ^5À^;À^‰À^ÕÀ_À_.À_/À_�À_œÀ_�À_ÏÀ_ÕÀ`À`À`;À`®À`äÀaÀaÀaÀaYÀa_Àa’ÀaÎÀaÏÀbÀb"Àb_Àb®ÀbÕÀbÛÀcÀchÀc·ÀcÙÀcíÀdÀdÀdYÀd]Àd^Àd°Àd¾ÀdÞÀe9Àe=Àe>ÀenÀetÀe½ÀfÀf&Àf,ÀfRÀfŸÀféÀg4Àg€ÀgÎÀhÀhkÀh¯ÀhµÀiÀi$Ài9ÀiqÀi†Ài�Ài²ÀiÁÀiâÀiêÀi÷ÀjÀj)Àj8ÀjOÀj‚Àj¹ÀjûÀkÀkÀkÀkÀkÀkRÀkXÀk Àk¦ÀkÉÀlÀl9ÀlLÀlRÀlhÀl~ÀlªÀlåÀmÀmDÀmJÀm�Àm¨Àm®ÀmåÀnÀn ÀnÀn#Àn$Àn0ÀnSÀnuÀnˆÀnŽÀn¬ÀnÌÀnîÀoÀoÀoÀo'ÀoeÀofÀo²ÀpÀp ÀpZÀpuÀp�Àp•Àp–ÀpÓÀq Àq Àq$ÀqqÀq£ÀqØÀqÙÀqõÀrÀrOÀriÀrrÀrsÀrÏÀrÐÀs,Às-Às|ÀsÔÀsÚÀsÛÀsóÀs÷ÀsøÀtÀtGÀtIÀtJÀt‘Àt•ÀtäÀtúÀu8Àu[Àu\ÀuªÀu¿ÀvÀvEÀvwÀv¤ÀvÂÀvÆÀvÇÀwÀwÀw@Àw~ÀwÃÀx ÀxVÀxƒÀxËÀyÀy7ÀysÀyŽÀy¨ÀyÔÀyÜÀzÀz ÀzÀzÀzCÀzIÀz‚Àz¿ÀzúÀ{+À{`À{{À{•À{ÏÀ{×À|À|À| À| À|aÀ|¥À|¦À}À}PÀ}QÀ}­À}ùÀ}úÀ~.À~KÀ~ZÀ~[À~zÀ~{À~¤À~ªÀ~ûÀÀ.À>À_ÀrÀ|À‘À•À–ÀæÀ€ À€À€\À€¦À€óÀ�@À�ŽÀ�¬À�¿À�ÏÀ�îÀ‚ À‚À‚(À‚8À‚<À‚=À‚ˆÀ‚­À‚ùÀƒÀƒÀƒÀƒcÀƒgÀƒ¶ÀƒÎÀƒïÀ„(À„.À„~À„ÐÀ„êÀ„ðÀ…>À…‘À…ÒÀ†À†.À†LÀ†dÀ†}À†�À†¶À†ÙÀ†ÚÀ‡%À‡hÀ‡²À‡äÀˆÀˆ<Àˆ@ÀˆAÀˆkÀˆqÀˆ¬Àˆ½Àˆ¾ÀˆéÀˆïÀ‰*À‰<À‰=À‰oÀ‰uÀ‰¬À‰ÅÀ‰ÆÀŠÀŠ9ÀŠ?ÀŠŠÀНÀŠÁÀŠÂÀ‹À‹,À‹2À‹}À‹ÊÀ‹ÛÀ‹áÀŒ/ÀŒWÀŒ ÀŒ¢ÀŒ£À�À�!À�"À�[À�aÀ�±ÀŽÀŽÀŽ#ÀŽqÀŽÄÀ�À�BÀ�`À�~À�–À�¯À�ÂÀ�èÀ�ïÀ�À�À�^À�vÀ�ÄÀ�ÈÀ�ÉÀ‘+À‘~À‘À‘ÅÀ‘íÀ‘ñÀ’À’5À’QÀ’`À’pÀ’‚À’—À’œÀ’�À’¬À’­À“À“"À“#À“/À“ZÀ“[À“kÀ“lÀ“ÆÀ“ãÀ“äÀ“ðÀ”À”À”6À”7À”˜À”¼À”½À”ÉÀ• À• À•À•eÀ•€À•�À•�À•ÝÀ–À–*À–0À–eÀ–€À–†À–‡À–¾À–ÙÀ–öÀ—4À—sÀ—±À—çÀ—íÀ˜À˜0À˜1À˜[À˜–À˜¨À˜¬À˜­À˜ìÀ™À™!À™wÀ™xÀ™„À™›ÀšÀšÀšÀšKÀš{Àš|ÀšºÀ›À›À›;À›?À›‰À›–À›ÙÀ›ÚÀœÀœ7ÀœŒÀœ�ÀœÜÀœñÀœôÀ�AÀ�^À�aÀ�­À�°À�ÂÀ�ÅÀ�ÐÀžÀžÀžBÀžÀž„Àž‡Àž¦ÀžÖÀžÛÀžâÀžåÀŸ:ÀŸ�ÀŸ¼ÀŸ¿À À IÀ À ÆÀ¡ À¡GÀ¡]À¡‰À¡žÀ¡²À¡ßÀ¡îÀ¢.À¢6À¢CÀ¢`À¢fÀ¢lÀ¢~À¢•À¢±À¢µÀ¢ÐÀ¢ÒÀ¢ÓÀ£À£\À£’À£ÙÀ¤À¤ZÀ¤pÀ¤«À¤ÀÀ¤ÝÀ¤êÀ¤þÀ¥4À¥CÀ¥ŒÀ¥”À¥šÀ¥ À¥²À¥ÉÀ¥åÀ¥éÀ¦À¦À¦À¦VÀ¦¤À¦¨À¦øÀ§HÀ§}À§¸À§ýÀ§þÀ¨3À¨KÀ¨LÀ¨žÀ¨¹À¨ºÀ¨ÆÀ¨ÜÀ©6À©OÀ©gÀ©®À©×À©ÝÀ©ûÀ©ÿÀª1ˆyÀCÁ�á�áˆa/// An immutable color value in ARGB format. /// /// Consider the light teal of the [Flutter logo](https://flutter.dev/brand). It /// is fully opaque, with a red [r] channel value of `0.2588` (or `0x42` or `66` /// as an 8-bit value), a green [g] channel value of `0.6471` (or `0xA5` or /// `165` as an 8-bit value), and a blue [b] channel value of `0.9608` (or /// `0xF5` or `245` as an 8-bit value). In a common [CSS hex color syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color) /// for RGB color values, it would be described as `#42A5F5`. /// /// Here are some ways it could be constructed: /// /// ```dart /// const Color c1 = Color.from(alpha: 1.0, red: 0.2588, green: 0.6471, blue: 0.9608); /// const Color c2 = Color(0xFF42A5F5); /// const Color c3 = Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5); /// const Color c4 = Color.fromARGB(255, 66, 165, 245); /// const Color c5 = Color.fromRGBO(66, 165, 245, 1.0); /// ``` /// /// If you are having a problem with [Color.new] wherein it seems your color is /// just not painting, check to make sure you are specifying the full 8 /// hexadecimal digits. If you only specify six, then the leading two digits are /// assumed to be zero, which means fully-transparent: /// /// ```dart /// const Color c1 = Color(0xFFFFFF); // fully transparent white (invisible) /// const Color c2 = Color(0xFFFFFFFF); // fully opaque white (visible) /// /// // Or use double-based channel values: /// const Color c3 = Color.from(alpha: 1.0, red: 1.0, green: 1.0, blue: 1.0); /// ``` /// /// [Color]'s color components are stored as floating-point values. Care should /// be taken if one does not want the literal equality provided by `operator==`. /// To test equality inside of Flutter tests consider using [`isSameColorAs`][]. /// /// See also: /// /// * [Colors](https://api.flutter.dev/flutter/material/Colors-class.html), /// which defines the colors found in the Material Design specification. /// * [`isSameColorAs`][], /// a Matcher to handle floating-point deltas when checking [Color] equality. /// /// [`isSameColorAs`]: https://api.flutter.dev/flutter/flutter_test/isSameColorAs.html�ë„`”æ”æ”ëƒÆ/// Construct an [ColorSpace.sRGB] color from the lower 32 bits of an [int]. /// /// The bits are interpreted as follows: /// /// * Bits 24-31 are the alpha value. /// * Bits 16-23 are the red value. /// * Bits 8-15 are the green value. /// * Bits 0-7 are the blue value. /// /// In other words, if AA is the alpha value in hex, RR the red value in hex, /// GG the green value in hex, and BB the blue value in hex, a color can be /// expressed as `Color(0xAARRGGBB)`. /// /// For example, to get a fully opaque orange, you would use `const /// Color(0xFFFF9000)` (`FF` for the alpha, `FF` for the red, `90` for the /// green, and `00` for the blue). /// /// {@template dart.ui.Color.componentsStoredAsFloatingPoint} /// > [!NOTE] /// > Each color is stored as floating-point color components, where the final /// > value of each component is approximated by storing `c / 255`, where `c` /// is one of the four components (alpha, red, green, blue). /// {@endtemplate}”ì ”ñ”ð”ý••• •I•• •• ••#•-•'•0•3•:•D•E•OƒŽ—ü˜˜˜˜‚‚/// Construct a color with floating-point color components. /// /// Color components allows arbitrary bit depths for color components to be be /// supported. The values are interpreted relative to the [ColorSpace] /// argument. /// /// ## Example /// /// ```dart /// // Fully opaque maximum red color /// const Color c1 = Color.from(alpha: 1.0, red: 1.0, green: 0.0, blue: 0.0); /// /// // Partially transparent moderately blue and green color /// const Color c2 = Color.from(alpha: 0.5, red: 0.0, green: 0.5, blue: 0.5); /// /// // Fully transparent color /// const Color c3 = Color.from(alpha: 0.0, red: 0.0, green: 0.0, blue: 0.0); /// ```˜ ˜˜˜(˜9˜8˜A˜R˜Q˜\˜m˜l˜v!˜|˜{˜ˆ˜’˜“˜¢˜ ˜¤˜´˜²˜¶˜Ä˜Â˜Æ˜Ö˜Ô˜Ø˜á‚ešìšñšòšúšò�è/// Construct an sRGB color from the lower 8 bits of four integers. /// /// * `a` is the alpha value, with 0 being transparent and 255 being fully /// opaque. /// * `r` is [red], from 0 to 255. /// * `g` is [green], from 0 to 255. /// * `b` is [blue], from 0 to 255. /// /// Out of range values are brought into range using modulo 255. /// /// See also [fromRGBO], which takes the alpha value as a floating point /// value. /// /// {@macro dart.ui.Color.componentsStoredAsFloatingPoint}šû›šÿ›››› ›› ››› ››››(›D›)›,›/›2›5›?›@›J€¡›P›U›V›`›V›a ›f›e›l›q›p›u ›z›y›€›…›„›Š›–›•›§›«›¬›¶›é›·›¼›Ã›Ø›É›Ö›Ð›Ê›Ò›Ú›ß›ï‚£ž%ž*ž+ž3ž+‚/// Create an sRGB color from red, green, blue, and opacity, similar to /// `rgba()` in CSS. /// /// * `r` is [red], from 0 to 255. /// * `g` is [green], from 0 to 255. /// * `b` is [blue], from 0 to 255. /// * `opacity` is alpha channel of this color as a double, with 0.0 being /// transparent and 1.0 being fully opaque. /// /// Out of range values are brought into range using modulo 255. /// /// See also [fromARGB], which takes the opacity as an integer value. /// /// {@macro dart.ui.Color.componentsStoredAsFloatingPoint}ž4ž9ž8ž;ž@ž?žBžGžFžIžQžP ž_žcždžnž�žožržužxž�ž‹žŒž–€³žœž¡ž¢ž¬ž¢ž­ž²ž±ž´ž¹ž¸ž»žÀž¿žÂžÊžÉžÒžØž×žëžéžížþžüŸ ŸŸ ŸŸŸŸ ŸŸŸ'ŸŸ%ŸŸŸ!Ÿ)Ÿ6Ÿ4ŸCŸ8ŸAŸ;Ÿ9Ÿ=ŸEŸM5Ÿ�Ÿ�$/// The alpha channel of this color.Ÿ‡3Ÿ¹Ÿ¹"/// The red channel of this color.Ÿ¿5ŸóŸó$/// The green channel of this color.Ÿù4 , ,#/// The blue channel of this color. 2@ h h"/// The color space of this color. É�¡Ê¡Ê€‘/// A 32 bit value representing this color. /// /// This getter is a _stub_. It is recommended instead to use the explicit /// [toARGB32] method.¡c¡d¡n¡¾¡o¨�©©€§/// The alpha channel of this color in an 8 bit value. /// /// A value of 0 means this color is fully transparent. A value of 255 means /// this color is fully opaque.¨È¨É¨Ó¨ö¨Ô©*€è©ú©ú€£/// The alpha channel of this color as a double. /// /// A value of 0.0 means this color is fully transparent. A value of 1.0 means /// this color is fully opaque.©Ö©×©á©ë©âª€“ª‡ª‡4/// The red channel of this color in an 8 bit value.ªMªNªXª{ªYª­€–« « 6/// The green channel of this color in an 8 bit value.ªæªçªñ«ªò«G€”«¹«¹5/// The blue channel of this color in an 8 bit value.««€«Š«­«‹ÀK+DÀK?ÀK?ÀK+ÀK, wN ‚ ‚ � — –¡â†2§„§„…g/// Returns a 32-bit value representing this color. /// /// The returned value is compatible with the default constructor /// ([Color.new]) but does _not_ guarantee to result in the same color due to /// [imprecisions in numeric conversions](https://en.wikipedia.org/wiki/Floating-point_error_mitigation). /// /// Unlike accessing the floating point equivalent channels individually /// ([a], [r], [g], [b]), this method is intentionally _lossy_, and scales /// each channel using `(channel * 255.0).round() & 0xff`. /// /// While useful for storing a 32-bit integer value, prefer accessing the /// individual channels (and storing the double equivalent) where higher /// precision is required. /// /// The bits are assigned as follows: /// /// * Bits 24-31 represents the [a] channel as an 8-bit unsigned integer. /// * Bits 16-23 represents the [r] channel as an 8-bit unsigned integer. /// * Bits 8-15 represents the [g] channel as an 8-bit unsigned integer. /// * Bits 0-7 represents the [b] channel as an 8-bit unsigned integer. /// /// > [!WARNING] /// > The value returned by this getter implicitly converts floating-point /// > component values (such as `0.5`) into their 8-bit equivalent by using /// > the [toARGB32] method; the returned value is not guaranteed to be stable /// > across different platforms or executions due to the complexity of /// > floating-point math.«ß… ®,®,‚(/// Returns a new color with the provided components updated. /// /// Each component ([alpha], [red], [green], [blue]) represents a /// floating-point value; see [Color.from] for details and examples. /// /// If [colorSpace] is provided, and is different than the current color /// space, the component values are updated before transforming them to the /// provided [ColorSpace]. /// /// Example: /// ```dart /// import 'dart:ui'; /// /// Create a color with 50% opacity. /// Color makeTransparent(Color color) => color.withValues(alpha: 0.5); /// ```®= ®F®E®P ®Y®X®a ®j®i®t ®}®|®†®“®’°ï� ±²±²€´/// Returns a new color that matches this color with the alpha channel /// replaced with `a` (which ranges from 0 to 255). /// /// Out of range values will have unexpected effects.±¼±Á±À±ü�‘³ ³ €Æ/// Returns a new color that matches this color with the alpha channel /// replaced with the given `opacity` (which ranges from 0.0 to 1.0). /// /// Out of range values will have unexpected effects.³³!³ ²Ë²Ì²Ö³²×³‘�´R´R€²/// Returns a new color that matches this color with the red channel replaced /// with `r` (which ranges from 0 to 255). /// /// Out of range values will have unexpected effects.´Z´_´^´œ� µ_µ_€´/// Returns a new color that matches this color with the green channel /// replaced with `g` (which ranges from 0 to 255). /// /// Out of range values will have unexpected effects.µiµnµmµ©�¶k¶k€³/// Returns a new color that matches this color with the blue channel replaced /// with `b` (which ranges from 0 to 255). /// /// Out of range values will have unexpected effects.¶t¶y¶x¶ó€Å····"·!·¼‚`¸Ê¸Ê€ú/// Returns a brightness value between 0 for darkest and 1 for lightest. /// /// Represents the relative luminance of the color. This value is computationally /// expensive to calculate. /// /// See .º ‡æ¿"¿"„Ç/// Linearly interpolate between two colors. /// /// This is intended to be fast but as a result may be ugly. Consider /// [HSVColor] or writing custom logic for interpolating colors. /// /// If either color is null, this function linearly interpolates from a /// transparent instance of the other color. This is usually preferable to /// interpolating from [material.Colors.transparent] (`const /// Color(0x00000000)`), which is specifically transparent _black_. /// /// The `t` argument represents position on the timeline, with 0.0 meaning /// that the interpolation has not started, returning `a` (or something /// equivalent to `a`), 1.0 meaning that the interpolation has finished, /// returning `b` (or something equivalent to `b`), and values in between /// meaning that the interpolation is at the relevant point on the timeline /// between `a` and `b`. The interpolation can be extrapolated beyond 0.0 and /// 1.0, so negative values and values greater than 1.0 are valid (and can /// easily be generated by curves such as [Curves.elasticInOut]). Each channel /// will be clamped to the range 0 to 255. /// /// Values for `t` are usually obtained from an [Animation], such as /// an [AnimationController].¿'¿/¿.¿1¿9¿8¿;¿C¿BÀB †ÒÀDÀD�ö/// Combine the foreground color as a transparent color over top /// of a background color, and return the resulting combined color. /// /// This uses standard alpha blending ("SRC over DST") rules to produce a /// blended color from two colors. This can be used as a performance /// enhancement when trying to avoid needless alpha blending compositing /// operations for two things that are solid colors with the same shape, but /// overlay each other: instead, just paint one with the combined color.ÀD)ÀD0ÀD/ÀD;ÀDBÀDAÀHà€íÀIiÀIiw/// Returns an alpha value representative of the provided [opacity] value. /// /// The [opacity] value may not be null.ÀI}ÀI…ÀI„ÀIÑ�VÀIëÀIëÀIî ÀIöÀIõÀIÑÀIÒÀKs€ÅÀK†ÀK†ÀKsÀKtÀÇcÀJ„ÀÈÀÈ€ª/// A description of the style to use when drawing on a [Canvas]. /// /// Most APIs on [Canvas] take a [Paint] object to describe the style /// to use for that operation.ÀÈ$fÀÈ‚ÀÈ‚ÀȇY/// Constructs an empty [Paint] object with all fields initialized to /// their defaults.ÀÈŽƒÀÊPÀÊUÀÊVÀÊZÀÊV�±/// Constructs a new [Paint] object with the same fields as [other]. /// /// Any changes made to the object returned will not affect [other], and /// changes to [other] will not affect the object returned. /// /// Backends (for example web versus native) may have different performance /// characteristics. If the code is performance-sensitive, consider profiling /// and falling back to reusing a single [Paint] object if necessary.ÀÊ[ ÀÊbÀÊa,ÀΈLÀγÀγ ÀΈÀΉÀÎ�ÀΠÀÎ�ÀλÀÎÃÀÎÓÀÎÄÀÏ'ÀÏÀÏÀÏ+ÀÏ0$ÀÏAÀÏAÀÏSÀÏX&ÀÏiÀÏiÀÏ}ÀÏ‚%ÀÏ“ÀÏ“ÀϦÀÏ«&ÀϼÀϼÀÏÐÀÏÕ&ÀÏæÀÏæÀÏúÀÏÿ%ÀÐÀÐÀÐ#ÀÐ(!ÀÐ9ÀÐ9ÀÐHÀÐM'ÀÐ^ÀÐ^ÀÐsÀÐx%ÀЉÀЉÀМÀС'ÀвÀвÀÐÆÀÐÌ-ÀÐÝÀÐÝÀÐ÷ÀÐý*ÀÑÀÑÀÑ%ÀÑ+'ÀÑ<ÀÑ<ÀÑPÀÑV0ÀÑgÀÑgÀÑ„ÀÑŠ,ÀÑ›ÀÑ›ÀÑ´ÀѺ(ÀÑËÀÑËÀÑàÀÑç>ÀÑøÀÑøÀÒ!ÀÒÀÒ$ÀÒ)8ÀÒ:ÀÒ:ÀÒ]ÀÒMÀÒ`ÀÒe<ÀÒvÀÒvÀÒ�ÀÒ‹ÀÒ ÀÒ¥:ÀÒ¶ÀÒ¶ÀÒÛÀÒÊÀÒÞÀÒã<ÀÒôÀÒôÀÓÀÓ ÀÓÀÓ#<ÀÓ4ÀÓ4ÀÓ[ÀÓIÀÓ^ÀÓc:ÀÓtÀÓtÀÓ™ÀÓˆÀÓœÀÓ¡2ÀÓ²ÀÓ²ÀÓÏÀÓÂÀÓÒÀÓ×>ÀÓèÀÓèÀÔÀÓþÀÔÀÔ:ÀÔ*ÀÔ*ÀÔOÀÔ>ÀÔRÀÔW<ÀÔhÀÔhÀÔ�ÀÔ}ÀÔ’ÀÔ—HÀÔ¨ÀÔ¨ÀÔÛÀÔÃÀÔÞÀÔãBÀÔôÀÔôÀÕ!ÀÕ ÀÕ$ÀÕ)<ÀÕ:ÀÕ:ÀÕaÀÕOÀÕdÀÕiNÀÕzÀÕzÀÕ³ÀÕ˜ÀÕ¶ÀÕ»FÀÕÌÀÕÌÀÕýÀÕæÀÖÀÖ>ÀÖÀÖÀÖ?ÀÖ,ÀÖBÀÖ‰%ÀÖšÀÖšÀÖ¬À×13À×\À×\À×1À×2À×8À×IÀ×9À×ß"À×ðÀ×ðÀØÀØ'ÀØÀØÀØ+ÀØ0'ÀØAÀØAÀØVÀØ["ÀØlÀØlÀØ|ÀÚÉ,ÀÚÚÀÚÚÀÚëÀà�=Àà®Àà®ÀàÃÀàÌÀàÍÀàÔÀàÕÀïÙ3ÀïíÀïíÀð Àذ€ÓÀÙ+ÀÙ+i/// Whether to apply anti-aliasing to lines and images drawn on the /// canvas. /// /// Defaults to true.ÀÚúƒÐÀÜ¡ÀÜ¡�„/// The color to use when stroking or filling a shape. /// /// Defaults to opaque black. /// /// See also: /// /// * [style], which controls whether to stroke or fill (or both). /// * [colorFilter], which overrides [color]. /// * [shader], which overrides [color] with more elaborate effects. /// /// This color is not used when compositing. To colorize a layer, use /// [colorFilter].Àà߃œÀãäÀãä‚Ò/// A blend mode to apply when a shape is drawn or a layer is composited. /// /// The source colors are from the shape being drawn (e.g. from /// [Canvas.drawPath]) or layer being composited (the graphics that were drawn /// between the [Canvas.saveLayer] and [Canvas.restore] calls), after applying /// the [colorFilter], if any. /// /// The destination colors are from the background onto which the shape or /// layer is being composited. /// /// Defaults to [BlendMode.srcOver]. /// /// See also: /// /// * [Canvas.saveLayer], which uses its [Paint]'s [blendMode] to composite /// the layer when [Canvas.restore] is called. /// * [BlendMode], which discusses the user of [Canvas.saveLayer] with /// [blendMode].Àå#€áÀå§Àå§k/// Whether to paint inside shapes, the edges of shapes, or both. /// /// Defaults to [PaintingStyle.fill].Àæ“�iÀç§Àç§€þ/// How wide to make edges drawn when [style] is set to /// [PaintingStyle.stroke]. The width is given in logical pixels measured in /// the direction orthogonal to the direction of the path. /// /// Defaults to 0.0, which correspond to a hairline width.Àè��ÀéFÀéF€ /// The kind of finish to place on the end of lines drawn when /// [style] is set to [PaintingStyle.stroke]. /// /// Defaults to [StrokeCap.butt], i.e. no caps.Àê:„ÑÀî§Àî§„+/// The kind of finish to place on the joins between segments. /// /// This applies to paths drawn when [style] is set to [PaintingStyle.stroke], /// It does not apply to points drawn as lines with [Canvas.drawPoints]. /// /// Defaults to [StrokeJoin.miter], i.e. sharp corners. /// /// Some examples of joins: /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/round_join.mp4} /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/bevel_join.mp4} /// /// The centers of the line segments are colored in the diagrams above to /// highlight the joins, but in normal usage the join is the same color as the /// line. /// /// See also: /// /// * [strokeMiterLimit] to control when miters are replaced by bevels when /// this is set to [StrokeJoin.miter]. /// * [strokeCap] to control what is drawn at the ends of the stroke. /// * [StrokeJoin] for the definitive list of stroke joins.Àð…rÀõ$Àõ$„Ó/// The limit for miters to be drawn on segments when the join is set to /// [StrokeJoin.miter] and the [style] is set to [PaintingStyle.stroke]. If /// this limit is exceeded, then a [StrokeJoin.bevel] join will be drawn /// instead. This may cause some 'popping' of the corners of a path if the /// angle between line segments is animated, as seen in the diagrams below. /// /// This limit is expressed as a limit on the length of the miter. /// /// Defaults to 4.0. Using zero as a limit will cause a [StrokeJoin.bevel] /// join to be used all the time. /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_0_join.mp4} /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_6_join.mp4} /// /// The centers of the line segments are colored in the diagrams above to /// highlight the joins, but in normal usage the join is the same color as the /// line. /// /// See also: /// /// * [strokeJoin] to control the kind of finish to place on the joins /// between segments. /// * [strokeCap] to control what is drawn at the ends of the stroke.Àö<‚WÀ÷À÷€¯/// A mask filter (for example, a blur) to apply to a shape after it has been /// drawn but before it has been composited into the image. /// /// See [MaskFilter] for details.ÀûK�ìÀüÊÀüÊ�/// Controls the performance vs quality trade-off to use when sampling bitmaps, /// as with an [ImageShader], or when drawing images, as with [Canvas.drawImage], /// [Canvas.drawImageRect], [Canvas.drawImageNine] or [Canvas.drawAtlas]. /// /// Defaults to [FilterQuality.none].ÀýÖ�ÈÀÿbÀÿb�k/// The shader to use when stroking or filling a shape. /// /// When this is null, the [color] is used instead. /// /// See also: /// /// * [Gradient], a shader that paints a color gradient. /// * [ImageShader], a shader that tiles an [Image]. /// * [colorFilter], which overrides [shader]. /// * [color], which is used if [shader] and [colorFilter] are null.À|�vÀhÀh€Î/// A color filter to apply when a shape is drawn or when a layer is /// composited. /// /// See [ColorFilter] for details. /// /// When a shape is being drawn, [colorFilter] overrides [color] and [shader].À6‚ˆÀ4À4�È/// The [ImageFilter] to use when drawing raster images. /// /// For example, to blur an image using [Canvas.drawImage], apply an /// [ImageFilter.blur]: /// /// ```dart /// void paint(Canvas canvas, Size size) { /// canvas.drawImage( /// _image, /// ui.Offset.zero, /// Paint()..imageFilter = ui.ImageFilter.blur(sigmaX: 0.5, sigmaY: 0.5), /// ); /// } /// ``` /// /// See also: /// /// * [MaskFilter], which is used for drawing geometry.À}�nÀ ’À ’�/// Whether the colors of the image are inverted when drawn. /// /// Inverting the colors of an image applies a new color filter that will /// be composed with any user provided color filters. This is primarily /// used for implementing smart invert on iOS.ÀÙ‡�ÀÙ‹ÀÙ‹ÀÙ— ÀÙ�ÀÙœÀÞÎ�“ÀÞÒÀÞÒÀÞØ ÀÞßÀÞÞÀ䀠ÀäƒÀäƒÀä�Àä˜Àä—À怇Àæ Àæ ÀæÀæ!Àæ À耋ÀèÀèÀè ÀèÀèÀé«€‹Àé¯Àé¯Àé¹ÀéÄÀéÃÀÀïÀïÀïÀï*Àï)Àõ‡€±Àõ‹Àõ‹Àõœ Àõ¤Àõ£Àø—‚°Àø›Àø›Àø¦Àø³Àø²Àý;€—Àý?Àý?ÀýMÀý\Àý[Àÿ¢�ÖÀÿ¦Àÿ¦Àÿ­ Àÿ¶ÀÿµÀö�<ÀúÀúÀÀÀÀÂ�·ÀÆÀÆÀÒÀàÀßÀ ïlÀ óÀ óÀ À À À×irÀ×wÀ×wÀ _‡†À rÀ rÀ _À `À%Á¦rÀ*fÀ*f„ž/// Opaque handle to raw decoded image data (pixels). /// /// To obtain an [Image] object, use the [ImageDescriptor] API. /// /// To draw an [Image], use one of the methods on the [Canvas] class, such as /// [Canvas.drawImage]. /// /// A class or method that receives an image object must call [dispose] on the /// handle when it is no longer needed. To create a shareable reference to the /// underlying image, call [clone]. The method or object that receives /// the new instance will then be responsible for disposing it, and the /// underlying image itself will be disposed when all outstanding handles are /// disposed. /// /// If `dart:ui` passes an `Image` object and the recipient wishes to share /// that handle with other callers, [clone] must be called _before_ [dispose]. /// A handle that has been disposed cannot create new handles anymore. /// /// See also: /// /// * [Image](https://api.flutter.dev/flutter/widgets/Image-class.html), the class in the [widgets] library. /// * [ImageDescriptor], which allows reading information about the image and /// creating a codec to decode it. /// * [instantiateImageCodec], a utility method that wraps [ImageDescriptor].À*p€ÁÀ*pÀ*uÀ*vÀ*wÀ*vÀ*x À*~À*}À*… À*‹À*ŠÀ*‘ À*—À*–À+V/À+À+À+VÀ+WÀ+]À+nÀ+^À+Š�À,—À,—€ç/// A callback that is invoked to report an image creation. /// /// It's preferred to use [MemoryAllocations] in flutter/foundation.dart /// than to use [onCreate] directly because [MemoryAllocations] /// allows multiple callbacks.À,¤�À-³À-³€é/// A callback that is invoked to report the image disposal. /// /// It's preferred to use [MemoryAllocations] in flutter/foundation.dart /// than to use [onDispose] directly because [MemoryAllocations] /// allows multiple callbacks.À-ÁÀ-ÍÀ-ÍÀ-ÝSÀ.+À.+A/// The number of image pixels along the image's horizontal axis.À.5RÀ.�À.�?/// The number of image pixels along the image's vertical axis.À.ŒÀ.‘À.‘À.�À1Ñ��À2ˆÀ2ˆ€¥/// Whether this reference to the underlying image is [dispose]d. /// /// This only returns a valid value if asserts are enabled, and must not be /// used otherwise.À7@ƒ�À9§À9§�Ì/// The color space that is used by the [Image]'s colors. /// /// This value is a consequence of how the [Image] has been created. For /// example, loading a PNG that is in the Display P3 color space will result /// in a [ColorSpace.extendedSRGB] image. /// /// On rendering backends that don't support wide gamut colors (anything but /// iOS impeller), wide gamut images will still report [ColorSpace.sRGB] if /// rendering wide gamut colors isn't supported.À.§ƒ&À0§À0§�æ/// Release this handle's claim on the underlying Image. This handle is no /// longer usable after this method is called. /// /// Once all outstanding handles have been disposed, the underlying image will /// be disposed as well. /// /// In debug mode, [debugGetOpenHandleStackTraces] will return a list of /// [StackTrace] objects from all open handles' creation points. This is /// useful when trying to determine what parts of the program are keeping an /// image resident in memory.À3rƒÊÀ6�À6��Í/// Converts the [Image] object into a byte array. /// /// The [format] argument specifies the format in which the bytes will be /// returned. /// /// Using [ImageByteFormat.rawRgba] on an image in the color space /// [ColorSpace.extendedSRGB] will result in the gamut being squished to fit /// into the sRGB gamut, resulting in the loss of wide-gamut colors. /// /// Returns a future that completes with the binary image data or an error /// if encoding fails.À6©0À6ºÀ6¹À6ÂÀ6ÑÀ6ÒÀ:Ô�¢À;ŸÀ;Ÿ€°/// If asserts are enabled, returns the [StackTrace]s of each open handle from /// [clone], in creation order. /// /// If asserts are disabled, this method always returns null.À _loadImage(int width, int height) { /// final Completer completer = Completer(); /// decodeImageFromPixels( /// Uint8List.fromList(List.filled(width * height * 4, 0xFF)), /// width, /// height, /// PixelFormat.rgba8888, /// // Don't worry about disposing or cloning this image - responsibility /// // is transferred to the caller, and that is safe since this method /// // will not touch it again. /// (Image image) => completer.complete(image), /// ); /// return completer.future; /// } /// /// Future main() async { /// final Image image = await _loadImage(5, 5); /// // Make sure to clone the image, because MyHolder might dispose it /// // and we need to access it again. /// final MyImageHolder holder = MyImageHolder(image.clone()); /// final MyImageHolder holder2 = MyImageHolder(image.clone()); /// // Now we dispose it because we won't need it again. /// image.dispose(); /// /// final PictureRecorder recorder = PictureRecorder(); /// final Canvas canvas = Canvas(recorder); /// /// holder.draw(canvas); /// holder.dispose(); /// /// canvas.translate(50, 50); /// holder2.draw(canvas); /// holder2.dispose(); /// } /// /// class MyImageHolder { /// MyImageHolder(this.image); /// /// final Image image; /// /// void draw(Canvas canvas) { /// canvas.drawImage(image, Offset.zero, Paint()); /// } /// /// void dispose() => image.dispose(); /// } /// ``` /// /// The returned object behaves identically to this image. Calling /// [dispose] on it will only dispose the underlying native resources if it /// is the last remaining handle.ÀI_‚›ÀKÉÀKÉ‚R/// Returns true if `other` is a [clone] of this and thus shares the same /// underlying image memory, even if this or `other` is [dispose]d. /// /// This method may return false for two images that were decoded from the /// same underlying asset, if they are not sharing the same memory. For /// example, if the same file is decoded using [instantiateImageCodec] twice, /// or the same bytes are decoded using [decodeImageFromPixels] twice, there /// will be two distinct [Image]s that render the same but do not share /// underlying memory, and so will not be treated as clones of each other.ÀKÓ ÀKÚÀKÙÀKþ3ÀLÀLÀKþÀKÿÀL5‡ØÀLZÀLZÀM_'ÀM{ÀM�ÀM‚ÀMƒÀM‚ÀM_ÀM`ÀMfÀMwÀMgÀPñÀPöÀPöÀQÀSB%ÀSSÀSSÀSeÀSfÀS^ÀSdÀS_ÀMŠfÀMêÀMêÀMŠÀM‹ÀM‘ÀM¯ÀM˜ÀM’ÀM ÀM®ÀM¡ÀM¨ÀM­ÀM©ÀM°ÀMÕÀM·ÀM±ÀM¹ÀMÏÀMÉÀMÑÀMôhÀNUÀNUÀMôÀMõÀMûÀNÀNÀMüÀN ÀNÀN ÀNÀNÀNÀNÀN@ÀN!ÀNÀN#ÀN:ÀN4ÀN<ÀSlbÀSÃÀSÃÀSlÀSmÀSsÀS‘ÀSzÀStÀS‚ÀS�ÀSƒÀSŠÀS�ÀS‹ÀS’ÀS®ÀS™ÀS“ÀS›ÀN`�¡ÀNrÀNrÀN~0ÀN�ÀNŽÀN—ÀN¦ÀN§ÀP€èÀP¨ÀP¨9/// Returns an error message on failure, null on success.ÀP´ ÀP¹ÀP¸ÀPÀ+ÀPäÀPãÀPAÀPBÀPHÀPvÀPPÀPIÀPXÀPuÀPYÀP`ÀPeÀPaÀPhÀPoÀPwÀP“ÀP~ÀPxÀP€ÀQ �dÀQÀQÀRs€ËÀS3ÀS3k/// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).ÀRãÀRäÀRêÀSÀRðÀRëÀRøÀSÀRùÀSÀSÀSÀSÀS!ÀSÀS ÀSÀSÒ9ÀSåÀSåÀSÒÀSÓÀL5ÀL6ÀL<ÀLMÀL=ÀTð‰_À[ÁÀ[Á†Ê/// Information for a single frame of an animation. /// /// To obtain an instance of the [FrameInfo] interface, see /// [Codec.getNextFrame]. /// /// The recipient of an instance of this class is responsible for calling /// [Image.dispose] on [image]. To share the image with other interested /// parties, use [Image.clone]. If the [FrameInfo] object itself is passed to /// another method or object, that method or object must assume it is /// responsible for disposing the image when done, and the passer must not /// access the [image] after that point. /// /// For example, the following code sample is incorrect: /// /// ```dart /// /// BAD /// Future nextFrameRoutine(ui.Codec codec) async { /// final ui.FrameInfo frameInfo = await codec.getNextFrame(); /// _cacheImage(frameInfo); /// // ERROR - _cacheImage is now responsible for disposing the image, and /// // the image may not be available any more for this drawing routine. /// _drawImage(frameInfo); /// // ERROR again - the previous methods might or might not have created /// // handles to the image. /// frameInfo.image.dispose(); /// } /// ``` /// /// Correct usage is: /// /// ```dart /// /// GOOD /// Future nextFrameRoutine(ui.Codec codec) async { /// final ui.FrameInfo frameInfo = await codec.getNextFrame(); /// _cacheImage(frameInfo.image.clone(), frameInfo.duration); /// _drawImage(frameInfo.image.clone(), frameInfo.duration); /// // This method is done with its handle, and has passed handles to its /// // clients already. /// // The image will live until those clients dispose of their handles, and /// // this one must not be disposed since it will not be used again. /// frameInfo.image.dispose(); /// } /// ```À[Ï�À\•À\žÀ\ŸÀ\ À\Ÿ€»/// This class is created by the engine, and should not be instantiated /// or extended directly. /// /// To obtain an instance of the [FrameInfo] interface, see /// [Codec.getNextFrame].À\¢À\±À\°À\ºÀ\ÉÀ\ÈÀ\Ô€™À]eÀ]e{/// The duration this frame should be shown. /// /// A zero duration indicates that the frame should be shown indefinitely.À]r€ÚÀ^GÀ^G€¾/// The [Image] object for this frame. /// /// This object must be disposed by the recipient of this frame info. /// /// To share this image with other interested parties, use [Image.clone].À^Q„>À_?À_?€Þ/// A handle to an image codec. /// /// This class is created by the engine, and should not be instantiated /// or extended directly. /// /// To obtain an instance of the [Codec] interface, see /// [instantiateImageCodec].À_I9À_wÀ_w#/// Number of frames in this image.À_†€¦À`À`€…/// Number of times to repeat the animation. /// /// * 0 when the animation should be played once. /// * -1 for infinity repetitions.À`0�aÀa‚Àa‚�//// Fetches the next animation frame. /// /// Wraps back to the first frame after returning the last frame. /// /// The returned future can complete with an error if the decoding has failed. /// /// The caller of this method is responsible for disposing the /// [FrameInfo.image] on the returned object.Àa•€øÀbƒÀbƒ€Þ/// Release the resources used by this object. The object is no longer usable /// after this method is called. /// /// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).Àb‘‡×ÀbœÀbœÀc¤Àc¤Àc°Àc±Àc²Àc±Àc¹Àc¾Àc¾Àd‘Àd–Àd–ÀcÔDÀcèÀcèÀcÔÀcÕÀdqÀd�Àd�ÀdÀdÀd#ÀdAÀd*Àd$Àd2Àd@Àd3Àd:Àd?Àd;ÀdBÀdlÀdIÀdCÀdKÀdfÀd`ÀdhÀd±SÀdÅÀdÅÀd±Àd²Àe{ÀerÀerÀeÀe ÀeÀe-ÀeÀeÀeÀe,ÀeÀe&Àe+Àe'Àe.Àe]Àe5Àe/Àe7ÀeWÀeQÀeYÀe‡ƒ)Àe¥Àe¥Àe‡ÀeˆÀh´€ÚÀiRÀiR9/// Returns an error message on failure, null on success.Ài`,Ài…Ài„ÀhðÀhñÀh÷ÀiÀhÿÀhøÀiÀiÀiÀiÀiÀiÀiÀiÀi=Ài&Ài Ài(Ài’fÀiîÀiîÀi’Ài“ÀižÀiŸÀi¥ÀiÂÀi«Ài¦Ài³ÀiÁÀi´Ài»ÀiÀÀi¼ÀiÃÀiÜÀiÊÀiÄÀiÌÀiüjÀjÀjÀiüÀiýÀ‰¨†fÀŠ»ÀŠ»� /// A specification of the size to which an image should be decoded. /// /// See also: /// /// * [TargetImageSizeCallback], a callback that returns instances of this /// class when consulted by image decoding methods such as /// [instantiateImageCodecWithSize].ÀŠÏ�À‹nÀ‹nÀ‹}€�/// Creates a new instance of this class. /// /// The `width` and `height` may both be null, but if they're non-null, they /// must be positive.À‹ À‹…À‹„À‹‹ À‹‘À‹�À‹ŸÀ‹¥À‹ÀÀ‹´À‹¬À‹¦À‹¯À‹½À‹·À‹¿À‹ÉÀ‹ÏÀ‹ìÀ‹ßÀ‹×À‹ÐÀ‹ÚÀ‹éÀ‹âÀ‹ëÀ‹ò�åÀ�ÒÀ�Ò�Â/// The width into which to load the image. /// /// If this is non-null, the image will be decoded into the specified width. /// If this is null and [height] is also null, the image will be decoded into /// its intrinsic size. If this is null and [height] is non-null, the image /// will be decoded into a width that maintains its intrinsic aspect ratio /// while respecting the [height] value. /// /// If this value is non-null, it must be positive.À�Ü�æÀ�¼À�¼�Â/// The height into which to load the image. /// /// If this is non-null, the image will be decoded into the specified height. /// If this is null and [width] is also null, the image will be decoded into /// its intrinsic size. If this is null and [width] is non-null, the image /// will be decoded into a height that maintains its intrinsic aspect ratio /// while respecting the [width] value. /// /// If this value is non-null, it must be positive.À�ÇEÀ�ÚÀ�ÚÀ�ÇÀ�ÈÀ©¯ƒ˜ÀªÀªP/// A handle for the framework to hold and retain an engine layer across frames.Àªƒ&À­;À­;‚ø/// Release the resources used by this object. The object is no longer usable /// after this method is called. /// /// EngineLayers indirectly retain platform specific graphics resources. Some /// of these resources, such as images, may be memory intensive. It is /// important to dispose of EngineLayer objects that will no longer be used as /// soon as possible to avoid retaining these resources until the next /// garbage collection. /// /// Once this EngineLayer is disposed, it is no longer eligible for use as a /// retained layer, and must not be passed as an `oldLayer` to any of the /// [SceneBuilder] methods which accept that parameter. /// /// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).À­I�IÀ­TÀ­TÀ­£}À® À®À®À®À®a/// This class is created by the engine, and should not be instantiated /// or extended directly.À®$lÀ®†À®†À®$À®%À®0À®1À®7À®TÀ®=À®8À®EÀ®SÀ®FÀ®MÀ®RÀ®NÀ®UÀ®tÀ®\À®VÀ®^À®”¹­À±\À±\‚¸/// A complex, one-dimensional subset of a plane. /// /// A path consists of a number of sub-paths, and a _current point_. /// /// Sub-paths consist of segments of various types, such as lines, /// arcs, or beziers. Sub-paths can be open or closed, and can /// self-intersect. /// /// Closed sub-paths enclose a (possibly discontiguous) region of the /// plane based on the current [fillType]. /// /// The _current point_ is initially at the origin. After each /// operation adding a segment to a sub-path, the current point is /// updated to the end of that segment. /// /// Paths can be drawn on canvases using [Canvas.drawPath], and can /// used to create clip regions using [Canvas.clipPath].À±öÀ±þÀ±þÀ²À²�iÀ²éÀ²íÀ²îÀ²òÀ²î€Á/// Creates a copy of another [Path]. /// /// This copy is fast and does not require additional memory unless either /// the `source` path or the path returned by this constructor are modified.À²ó À²ùÀ²øÀ³„€£À´À´€‚/// Determines how the interior of this path is calculated. /// /// Defaults to the non-zero winding rule, [PathFillType.nonZero].À´*!À´.À´.À´7À´EÀ´DÀ´OUÀ´‰À´‰2/// Starts a new sub-path at the given coordinate.À´�À´˜À´—À´šÀ´¢À´¡À´¨rÀ´õÀ´õE/// Starts a new sub-path at the given offset from the current point.Àµ Àµ Àµ Àµ ÀµÀµÀµtÀµwÀµwO/// Adds a straight line segment from the current point to the given /// point.Àµ~Àµ†Àµ…ÀµˆÀµ�Àµ�Àµ–€£À¶À¶t/// Adds a straight line segment from the current point to the point /// at the given offset from the current point.À¶# À¶+À¶*À¶. À¶6À¶5À¶=�ÁÀ·ÀÀ·À�q/// Adds a quadratic bezier segment that curves from the current /// point to the given point (x2,y2), using the control point /// (x1,y1). /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_quadratic_to.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_quadratic_to_dark.png#gh-dark-mode-only)À·Ò À·ÚÀ·ÙÀ·Ý À·åÀ·äÀ·è À·ðÀ·ïÀ·ó À·ûÀ·úÀ¸�'À¸ãÀ¸ã€Ó/// Adds a quadratic bezier segment that curves from the current /// point to the point at the offset (x2,y2) from the current point, /// using the control point at the offset (x1,y1) from the current /// point.À¸ý À¹À¹À¹ À¹À¹À¹ À¹À¹À¹ À¹&À¹%À¹-�ÎÀº±Àº±�r/// Adds a cubic bezier segment that curves from the current point /// to the given point (x3,y3), using the control points (x1,y1) and /// (x2,y2). /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_cubic_to.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_cubic_to_dark.png#gh-dark-mode-only)Àº¹ ÀºÁÀºÀÀºÄ ÀºÌÀºËÀºÏ Àº×ÀºÖÀºÚ ÀºâÀºáÀºå ÀºíÀºìÀºð ÀºøÀº÷Àºÿ�=À»êÀ»ê€Ý/// Adds a cubic bezier segment that curves from the current point /// to the point at the offset (x3,y3) from the current point, using /// the control points at the offsets (x1,y1) and (x2,y2) from the /// current point.À»ú À¼À¼À¼ À¼ À¼ À¼ À¼À¼À¼ À¼#À¼"À¼& À¼.À¼-À¼1 À¼9À¼8À¼@‚bÀ¾dÀ¾d‚/// Adds a bezier segment that curves from the current point to the /// given point (x2,y2), using the control points (x1,y1) and the /// weight w. If the weight is greater than 1, then the curve is a /// hyperbola; if the weight equals 1, it's a parabola; and if it is /// less than 1, it is an ellipse. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_conic_to.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_conic_to_dark.png#gh-dark-mode-only)À¾l À¾tÀ¾sÀ¾w À¾À¾~À¾‚ À¾ŠÀ¾‰À¾� À¾•À¾”À¾˜À¾ À¾ŸÀ¾¦�ÏÀÀ/ÀÀ/�w/// Adds a bezier segment that curves from the current point to the /// point at the offset (x2,y2) from the current point, using the /// control point at the offset (x1,y1) from the current point and /// the weight w. If the weight is greater than 1, then the curve is /// a hyperbola; if the weight equals 1, it's a parabola; and if it /// is less than 1, it is an ellipse.ÀÀ? ÀÀGÀÀFÀÀJ ÀÀRÀÀQÀÀU ÀÀ]ÀÀ\ÀÀ` ÀÀhÀÀgÀÀkÀÀsÀÀrÀÀyƒrÀâÀâƒ/// If the `forceMoveTo` argument is false, adds a straight line /// segment and an arc segment. /// /// If the `forceMoveTo` argument is true, starts a new sub-path /// consisting of an arc segment. /// /// In either case, the arc segment consists of the arc that follows /// the edge of the oval bounded by the given rectangle, from /// startAngle radians around the oval up to startAngle + sweepAngle /// radians around the oval, with zero radians being the point on /// the right hand side of the oval that crosses the horizontal line /// that intersects the center of the rectangle and with positive /// angles going clockwise around the oval. /// /// The line segment added if `forceMoveTo` is false starts at the /// current point and ends at the start of the arc.Àè ÀîÀíÀóÀûÀúÀÃÆÀÃÎÀÃÍÀÃÙÀÃßÀÃÞÀÃïƒ&ÀÆ}ÀÆ}‚p/// Appends up to four conic curves weighted to describe an oval of `radius` /// and rotated by `rotation` (measured in degrees and clockwise). /// /// The first curve begins from the last point in the path and the last ends /// at `arcEnd`. The curves follow a path in a direction determined by /// `clockwise` and `largeArc` in such a way that the sweep angle /// is always less than 360 degrees. /// /// A simple line is appended if either radii are zero or the last /// point in the path is `arcEnd`. The radii are scaled to fit the last path /// point if both are greater than zero but too small to describe an arc. ///ÀÆ� ÀÆ•ÀÆ”ÀÆ¢ÀƪÀÆ©ÀÆÃÀÆËÀÆÊÀÆÞÀÆäÀÆãÀÆùÀÆÿÀÆþÀƲÀƸÀƹÀÆÕÀÆîÀÇ Àǃ£ÀÊÀÊ‚Ü/// Appends up to four conic curves weighted to describe an oval of `radius` /// and rotated by `rotation` (measured in degrees and clockwise). /// /// The last path point is described by (px, py). /// /// The first curve begins from the last point in the path and the last ends /// at `arcEndDelta.dx + px` and `arcEndDelta.dy + py`. The curves follow a /// path in a direction determined by `clockwise` and `largeArc` /// in such a way that the sweep angle is always less than 360 degrees. /// /// A simple line is appended if either radii are zero, or, both /// `arcEndDelta.dx` and `arcEndDelta.dy` are zero. The radii are scaled to /// fit the last path point if both are greater than zero but too small to /// describe an arc.ÀÊ/ÀÊ7ÀÊ6ÀÊIÀÊQÀÊPÀÊjÀÊrÀÊqÀÊ…ÀÊ‹ÀÊŠÀÊ ÀʦÀÊ¥ÀÊYÀÊ_ÀÊ`ÀÊ|ÀÊ•ÀʱÀÊÀvÀË#ÀË#Y/// Adds a new sub-path that consists of four lines that outline the /// given rectangle.ÀË+ ÀË1ÀË0ÀË:�.ÀÌUÀÌU� /// Adds a new sub-path that consists of a curve that forms the /// ellipse that fills the given rectangle. /// /// To add a circle, pass an appropriate rectangle as `oval`. [Rect.fromCircle] /// can be used to easily describe the circle's center [Offset] and radius.ÀÌ] ÀÌcÀÌbÀÌlƒèÀÐÀЃŽ/// Adds a new sub-path with one arc segment that consists of the arc /// that follows the edge of the oval bounded by the given /// rectangle, from startAngle radians around the oval up to /// startAngle + sweepAngle radians around the oval, with zero /// radians being the point on the right hand side of the oval that /// crosses the horizontal line that intersects the center of the /// rectangle and with positive angles going clockwise around the /// oval. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_add_arc.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_add_arc_dark.png#gh-dark-mode-only) /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_add_arc_ccw.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_add_arc_ccw_dark.png#gh-dark-mode-only)ÀÐ# ÀÐ)ÀÐ(ÀÐ.ÀÐ6ÀÐ5ÀÐAÀÐIÀÐHÀÐX�XÀÑ„ÀÑ„�/// Adds a new sub-path with a sequence of line segments that connect the given /// points. /// /// If `close` is true, a final line segment will be added that connects the /// last point to the first point. /// /// The `points` argument is interpreted as offsets from the origin.ÀÑ�ÀÑ�ÀÑœÀѤ ÀѪÀÑ©ÀÑ´€°ÀÒNÀÒN€Ž/// Adds a new sub-path that consists of the straight lines and /// curves needed to form the rounded rectangle described by the /// argument.ÀÒW ÀÒ^ÀÒ]ÀÒh€®ÀÒèÀÒèv/// Adds a new sub-path that consists of curves needed to form the rounded /// superellipse described by the argument.ÀÒùÀÓÀÓÀÓ�QÀÔ1ÀÔ1�/// Adds the sub-paths of `path`, offset by `offset`, to this path. /// /// If `matrix4` is specified, the path will be transformed by this matrix /// after the matrix is translated by the given offset. The matrix is a 4x4 /// matrix stored in column major order.ÀÔ9 ÀÔ?ÀÔ>ÀÔD ÀÔLÀÔKÀÔTÀÔbÀÔaÀÔo�×ÀÖÀÖ�‚/// Adds the sub-paths of `path`, offset by `offset`, to this path. /// The current sub-path is extended with the first sub-path /// of `path`, connecting them with a lineTo if necessary. /// /// If `matrix4` is specified, the path will be transformed by this matrix /// after the matrix is translated by the given `offset`. The matrix is a 4x4 /// matrix stored in column major order.ÀÖ ÀÖÀÖÀÖ ÀÖ'ÀÖ&ÀÖ/ÀÖ=ÀÖ<ÀÖJ€“ÀÖÕÀÖÕ€�/// Closes the last sub-path, as if a straight line had been drawn /// from the current point to the first point of the sub-path.ÀÖေÀ׊À׊€�/// Clears the [Path] object of all sub-paths, returning it to the /// same state it had when it was created. The _current point_ is /// reset to the origin.À×–�qÀØðÀØð�F/// Tests to see if the given point is within the path. (That is, whether the /// point would be in the visible portion of the path if the path was used /// with [Canvas.clipPath].) /// /// The `point` argument is interpreted as an offset from the origin. /// /// Returns true if the point is in the path, and false otherwise.ÀØù ÀÙÀÙÀÙ €‰ÀÙÀÙj/// Returns a copy of the path with all the segments of every /// sub-path translated by the given offset.ÀÙ… ÀÙ�ÀÙŒÀÙ˜€”ÀÚ ÀÚ k/// Returns a copy of the path with all the segments of every /// sub-path transformed by the given matrix.ÀÚÀÚ$ÀÚ#ÀÚ0ƒ£ÀÝÇÀÝǃ0/// Computes the bounding rectangle for this path. /// /// A path containing only axis-aligned points on the same straight line will /// have no area, and therefore `Rect.isEmpty` will return true for such a /// path. Consider checking `rect.width + rect.height > 0.0` instead, or /// using the [computeMetrics] API to check the path length. /// /// For many more elaborate paths, the bounds may be inaccurate. For example, /// when a path contains a circle, the points used to compute the bounds are /// the circle's implied control points, which form a square around the circle; /// if the circle has a transformation applied using [transform] then that /// square is rotated, and the (axis-aligned, non-rotated) bounding box /// therefore ends up grossly overestimating the actual area covered by the /// circle.ÀÝׂ¡Àß Àß �0/// Combines the two paths according to the manner specified by the given /// `operation`. /// /// The resulting path will be constructed from non-overlapping contours. The /// curve order is reduced where possible so that cubics may be turned into /// quadratics, and quadratics maybe turned into lines.Àß(Àß7Àß6ÀßA ÀßGÀßFÀßM ÀßSÀßRÀà|‡ÃÀèÀè‡M/// Creates a [PathMetrics] object for this path, which can describe various /// properties about the contours of the path. /// /// A [Path] is made up of zero or more contours. A contour is made up of /// connected curves and segments, created via methods like [lineTo], /// [cubicTo], [arcTo], [quadraticBezierTo], their relative counterparts, as /// well as the add* methods such as [addRect]. Creating a new [Path] starts /// a new contour once it has any drawing instructions, and another new /// contour is started for each [moveTo] instruction. /// /// A [PathMetric] object describes properties of an individual contour, /// such as its length, whether it is closed, what the tangent vector of a /// particular offset along the path is. It also provides a method for /// creating sub-paths: [PathMetric.extractPath]. /// /// Calculating [PathMetric] objects is not trivial. The [PathMetrics] object /// returned by this method is a lazy [Iterable], meaning it only performs /// calculations when the iterator is moved to the next [PathMetric]. Callers /// that wish to memoize this iterable can easily do so by using /// [Iterable.toList] on the result of this method. In particular, callers /// looking for information about how many contours are in the path should /// either store the result of `path.computeMetrics().length`, or should use /// `path.computeMetrics().toList()` so they can repeatedly check the length, /// since calling `Iterable.length` causes traversal of the entire iterable. /// /// In particular, callers should be aware that [PathMetrics.length] is the /// number of contours, **not the length of the path**. To get the length of /// a contour in a path, use [PathMetric.length]. /// /// If `forceClosed` is set to true, the contours of the path will be measured /// as if they had been closed, even if they were not explicitly closed.Àè$Àè*Àè)Àè7ÀèC¨,ÀèNÀèNÀè�OÀè·Àè·ÀèÂ%/// Create a new empty [Path] object.Àè‣ÀéuÀé€Àé�Àé‚Àé�€Ž/// Avoids creating a new native backing for the path for methods that will /// create it later, such as [Path.from], [shift] and [transform].ÀêQMÀênÀênÀêQÀêRÀê¡JÀê±Àê±ÀêºÀêÈÀêÇÀê¡Àê¢3Àé‰VÀéÐÀéÐÀé‰ÀéŠÀé�Àé¦Àé–Àé‘ÀéžÀé¥ÀéŸÀé§Àé¾Àé®Àé¨Àé°ÀéãjÀê8Àê8Àê? ÀêEÀêDÀéãÀéäÀéêÀêÀéðÀéëÀéøÀêÀéùÀêÀêÀêÀêÀêÀê&ÀêÀêÀêÀêïpÀëPÀëPÀêïÀêðÀêöÀëÀêýÀê÷ÀëÀëÀëÀë ÀëÀëÀëÀë?ÀëÀëÀëÀë9Àë3Àë;Àëc€ƒÀëËÀëËÀëØ ÀëÝÀëÜÀëcÀëdÀëjÀëŽÀëpÀëkÀëxÀë�ÀëyÀë€Àë…Àë�ÀëˆÀë�Àë¹Àë–Àë�Àë˜Àë³Àë­ÀëµÀëꀓÀìbÀìbÀìiÀìqÀìpÀìsÀì{ÀìzÀëêÀëëÀëöÀë÷ÀëýÀì*ÀìÀëþÀì Àì)Àì ÀìÀìÀìÀìÀì#Àì+ÀìPÀì2Àì,Àì4ÀìJÀìDÀìLÀì�€²ÀíÀíÀí Àí%Àí$Àí( Àí0Àí/Àì�Àì‚Àì�ÀìŽÀì”ÀìÁÀìšÀì•Àì¢ÀìÀÀì£ÀìªÀì¯Àì«Àì²ÀìºÀìÂÀìüÀìÎÀìÈÀìÐÀìòÀììÀìôÀí7€“Àí¯Àí¯Àí¶Àí¾Àí½ÀíÀÀíÈÀíÇÀí7Àí8ÀíCÀíDÀíJÀíwÀíPÀíKÀíXÀívÀíYÀí`ÀíeÀíaÀíhÀípÀíxÀí�ÀíÀíyÀí�Àí—Àí‘Àí™Àí΀²Àî[Àî[Àîj ÀîrÀîqÀîu Àî}Àî|ÀíÎÀíÏÀíÚÀíÛÀíáÀîÀíçÀíâÀíïÀî ÀíðÀí÷ÀíüÀíøÀíÿÀîÀîÀîIÀîÀîÀîÀî?Àî9ÀîAÀî„€ÞÀï$Àï$Àï6 Àï>Àï=ÀïA ÀïIÀïHÀïL ÀïTÀïSÀïW Àï_Àï^Àî„Àî…Àî�Àî‘Àî—ÀîÔÀî�Àî˜Àî¥ÀîÓÀî¦Àî­Àî²Àî®ÀîµÀî½ÀîÅÀîÍÀîÕÀïÀîáÀîÛÀîãÀïÀïÀï Àïf€îÀðÀðÀð( Àð0Àð/Àð3 Àð;Àð:Àð> ÀðFÀðEÀðI ÀðQÀðPÀïfÀïgÀïrÀïsÀïyÀï¶ÀïÀïzÀï‡ÀïµÀïˆÀï�Àï”Àï�Àï—ÀïŸÀï§Àï¯Àï·ÀïüÀïÃÀï½ÀïÅÀïòÀïìÀïôÀðX€ðÀðþÀðþÀñ ÀñÀñ Àñ ÀñÀñÀñ Àñ$Àñ#Àñ' Àñ/Àñ.Àñ2 Àñ:Àñ9Àñ= ÀñEÀñDÀðXÀðYÀðdÀðeÀðkÀð¸ÀðqÀðlÀðyÀð·ÀðzÀð�Àð†Àð‚Àð‰Àð‘Àð™Àð¡Àð©Àð±Àð¹ÀðìÀðÅÀð¿ÀðÇÀðâÀðÜÀðäÀñL�ÀñúÀñúÀò ÀòÀòÀò ÀòÀòÀò Àò(Àò'Àò+ Àò3Àò2Àò6 Àò>Àò=ÀòA ÀòIÀòHÀñLÀñMÀñXÀñYÀñ_Àñ¬ÀñeÀñ`ÀñmÀñ«ÀñnÀñuÀñzÀñvÀñ}Àñ…Àñ�Àñ•Àñ�Àñ¥Àñ­ÀñèÀñ¹Àñ³Àñ»ÀñÞÀñØÀñàÀòP€ÜÀòîÀòîÀòö ÀòþÀòýÀó Àó ÀóÀó ÀóÀóÀó ÀóÀóÀó"Àó*Àó)ÀòPÀòQÀò\Àò]ÀòcÀò¨ÀòiÀòdÀòqÀò§ÀòrÀòyÀò~ÀòzÀò�Àò‰Àò‘Àò™Àò¡Àò©ÀòÜÀòµÀò¯Àò·ÀòÒÀòÌÀòÔÀó0€ìÀóÖÀóÖÀóæ ÀóîÀóíÀóñ ÀóùÀóøÀóü ÀôÀôÀô ÀôÀôÀôÀôÀôÀó0Àó1Àó<Àó=ÀóCÀóˆÀóIÀóDÀóQÀó‡ÀóRÀóYÀó^ÀóZÀóaÀóiÀóqÀóyÀó�Àó‰ÀóÄÀó•Àó�Àó—ÀóºÀó´Àó¼Àô €ÞÀô1Àô1Àô7 Àô=Àô<ÀôBÀôJÀôIÀôUÀô]Àô\ÀôhÀônÀômÀô Àô!Àõ�4Àõ Àõ Àõ¬ Àõ´Àõ³Àõ½ ÀõÅÀõÄÀõÍ ÀõÕÀõÔÀõß ÀõçÀõæÀõòÀõúÀõùÀö ÀöÀöÀö Àö&Àö%ÀõÀõÀõ Àõ\ÀõÀõ ÀõÀõ[ÀõÀõÀõ$Àõ Àõ'Àõ/Àõ7Àõ?ÀõGÀõOÀõWÀõ]ÀõŽÀõiÀõcÀõkÀõ„Àõ~Àõ†Àö:�PÀöKÀöKÀö[ ÀöcÀöbÀöpÀöxÀöwÀö‘Àö™Àö˜Àö¬Àö²Àö±ÀöÇÀöÍÀöÌÀö:Àö;Àö€Àö†Àö‡Àö£Àö¼ÀöØÀ÷Ž�>Àø/Àø/Àø@ÀøHÀøGÀøTÀø\Àø[ÀøhÀøpÀøoÀø|Àø„ÀøƒÀø�Àø˜Àø—Àø¥ Àø«ÀøªÀø¸Àø¾Àø½À÷ŽÀ÷�À÷•À÷æÀ÷›À÷–À÷£À÷åÀ÷¤À÷«À÷°À÷¬À÷³À÷»À÷ÃÀ÷ËÀ÷ÓÀ÷ÛÀ÷áÀ÷çÀøÀ÷óÀ÷íÀ÷õÀøÀø ÀøÀøÐ�¥ÀøáÀøáÀøùÀùÀùÀùÀùÀùÀù4Àù<Àù;ÀùOÀùUÀùTÀùjÀùpÀùoÀøÐÀøÑÀù#Àù)Àù*ÀùFÀù_Àù{Àúy�NÀû"Àû"Àû;ÀûCÀûBÀûOÀûWÀûVÀûcÀûkÀûjÀûwÀûÀû~Àû‹Àû“Àû’Àû  Àû¦Àû¥Àû³Àû¹Àû¸ÀúyÀúzÀú€ÀúÑÀú†Àú�ÀúŽÀúÐÀú�Àú–Àú›Àú—ÀúžÀú¦Àú®Àú¶Àú¾ÀúÆÀúÌÀúÒÀûÀúÞÀúØÀúàÀûÀûÀûÀûË€…ÀûÜÀûÜÀûä ÀûêÀûéÀûËÀûÌÀüT€ÉÀüÞÀüÞÀüç ÀüïÀüîÀüô ÀüüÀüûÀý ÀýÀýÀý ÀýÀýÀüTÀüUÀü[Àü˜ÀüaÀü\ÀüiÀü—ÀüjÀüqÀüvÀürÀüyÀü�Àü‰Àü‘Àü™ÀüÌÀü¥ÀüŸÀü§ÀüÂÀü¼ÀüÄÀý!€…Àý2Àý2Àý: Àý@Àý?Àý!Àý"Àýª€ÉÀþ4Àþ4Àþ= ÀþEÀþDÀþJ ÀþRÀþQÀþV Àþ^Àþ]Àþd ÀþlÀþkÀýªÀý«Àý±ÀýîÀý·Àý²Àý¿ÀýíÀýÀÀýÇÀýÌÀýÈÀýÏÀý×ÀýßÀýçÀýïÀþ"ÀýûÀýõÀýýÀþÀþÀþÀþw€ÁÀþˆÀþˆÀþ� Àþ•Àþ”ÀþšÀþ¢Àþ¡Àþ­ÀþµÀþ´ÀþwÀþxÀÿ<�ÀÿÕÀÿÕÀÿâ ÀÿêÀÿéÀÿó ÀÿûÀÿúÀ À À À ÀÀÀ(À0À/À?ÀGÀFÀÿ<Àÿ=ÀÿCÀÿ�ÀÿIÀÿDÀÿQÀÿ�ÀÿRÀÿYÀÿ^ÀÿZÀÿaÀÿiÀÿqÀÿyÀÿ�Àÿ‰Àÿ‘ÀÿÃÀÿ�Àÿ—ÀÿŸÀÿ¹Àÿ³Àÿ»ÀZtÀkÀkÀvÀ„ÀƒÀ‹ À‘À�ÀZÀ[ÀÒ€ŒÀ2À2À>ÀKÀJÀR ÀXÀWÀÒÀÓÀÙÀÀßÀÚÀçÀÀèÀïÀôÀðÀ÷ÀÿÀÀ À ÀÀÀbrÀsÀsÀ| ÀƒÀ‚ÀbÀcÀØuÀ0À0À:ÀGÀFÀØÀÙÀßÀÀåÀàÀíÀÀîÀõÀúÀöÀýÀÀÀ ÀÀÀQ€¦ÀbÀbÀsÀ‚À�ÀQÀRÀû€�ÀbÀbÀt"ÀŠÀ‰ÀûÀüÀÀ.ÀÀÀÀ-ÀÀÀÀÀ À'À,À(À/ÀPÀ6À0À8Àœ�SÀ­À­Àµ À»ÀºÀÀ ÀÈÀÇÀÐÀÞÀÝÀœÀ�Àó€ŸÀaÀaÀjÀwÀvÀ| À„ÀƒÀ‡ À�ÀŽÀóÀôÀúÀ6ÀÀûÀÀ5À ÀÀÀÀÀÀ$À À'À/À7ÀOÀ>À8À@À–€ØÀÀÀ2À?À>ÀD ÀLÀKÀO ÀWÀVÀZÀgÀfÀ–À—À�ÀáÀ£ÀžÀ«ÀàÀ¬À³À¸À´À»ÀÂÀÇÀÃÀÊÀÒÀÚÀâÀ ÀîÀèÀðÀr�gÀƒÀƒÀ’ À˜À—À� À¥À¤À­À»ÀºÀrÀsÀÝ€¶À[À[ÀkÀxÀwÀ} À…À„Àˆ À�À�ÀÝÀÞÀäÀ ÀêÀåÀòÀÀóÀúÀÿÀûÀÀ ÀÀ ÀÀÀ!ÀIÀ-À'À/À—€ùÀ &À &À DÀ QÀ PÀ Z À bÀ aÀ i À qÀ pÀ xÀ …À „À—À˜ÀžÀâÀ¤ÀŸÀ¬ÀáÀ­À´À¹ÀµÀ¼ÀÃÀÈÀÄÀËÀÓÀÛÀãÀ ÀïÀéÀñÀ ”oÀ ûÀ ûÀ ”À •À  À ¡À §À ÄÀ ­À ¨À µÀ ÃÀ ¶À ½À ÂÀ ¾À ÅÀ éÀ ÌÀ ÆÀ ÎÀ ãÀ ÝÀ åÀ oÀ nÀ nÀ À À À À À 7À À À (À 6À )À 0À 5À 1À 8À \À ?À 9À AÀ VÀ PÀ XÀ zzÀ ‹À ‹À ” À œÀ ›À zÀ {À ø€ŒÀ fÀ fÀ pÀ xÀ wÀ zÀ ‚À �À øÀ ùÀ ÿÀ ,À À À À +À À À À À À %À -À TÀ 4À .À 6À NÀ HÀ PÀ ˆ€¶À ™À ™À Ÿ À §À ¦À ˆÀ ‰À B€�À §À §À ® À ´À ³À ¼ À ÄÀ ÃÀ Ç À ÏÀ ÎÀ BÀ CÀ IÀ ~À OÀ JÀ WÀ }À XÀ _À dÀ `À gÀ oÀ wÀ À •À †À €À ˆÀ Ö€¹À çÀ çÀ ñÀ þÀ ýÀ ÖÀ ×À “€�À ôÀ ôÀ ÿ ÀÀÀ ÀÀÀ “À ”À šÀ ÇÀ  À ›À ¨À ÆÀ ©À °À µÀ ±À ¸À ÀÀ ÈÀ âÀ ÏÀ ÉÀ ÑÀ&€‹À7À7À&À'ÀµgÀÀÀµÀ¶À¼ÀÛÀÄÀ½ÀÌÀÚÀÍÀÔÀÙÀÕÀÜÀöÀãÀÝÀåÀ €¨À�À�À“À ÀŸÀ¦À³À²À¹ À¾À½À À!À'ÀiÀ-À(À5ÀhÀ6À=ÀBÀ>ÀEÀLÀQÀMÀTÀ[À`À\ÀcÀjÀ}ÀqÀkÀsÀÌuÀäÀäÀôÀúÀùÀÌÀÍÀÀE(ÀXÀXÀEÀFÀq‡DÀ)À)€±/// The geometric description of a tangent: the angle at a point. /// /// See also: /// * [PathMetric.getTangentForOffset], which returns the tangent of an offset along a path.À5€‡À˜À˜ÀŸV/// Creates a [Tangent] with the given values. /// /// The arguments must not be null.À  À¦À¥À¯ ÀµÀ´ÀÀ�RÀ”À›ÀœÀ¥Àœ€Ã/// Creates a [Tangent] based on the angle rather than the vector. /// /// The [vector] is computed to be the unit vector at the given angle, interpreted /// as clockwise radians from the x axis.À¦À®À­À· À¿À¾À€ÑÀßÀ߀³/// Position of the tangent. /// /// When used with [PathMetric.getTangentForOffset], this represents the precise /// position that the given offset along the path corresponds to.Àì�ÀëÀë€ç/// The vector of the curve at [position]. /// /// When used with [PathMetric.getTangentForOffset], this is the vector of the /// curve that is at the given offset along the path (i.e. the direction of the /// curve at [position]).Àö‚½ÀˆÀˆ‚+/// The direction of the curve at [position]. /// /// When used with [PathMetric.getTangentForOffset], this is the angle of the /// curve that is the given offset along the path (i.e. the direction of the /// curve at [position]). /// /// This value is in radians, with 0.0 meaning pointing along the x axis in /// the positive x-axis direction, positive numbers pointing downward toward /// the negative y-axis, i.e. in a clockwise direction, and negative numbers /// pointing upward toward the positive y-axis, i.e. in a counter-clockwise /// direction.À·„#À²À²‚ô/// An iterable collection of [PathMetric] objects describing a [Path]. /// /// A [PathMetrics] object is created by using the [Path.computeMetrics] method, /// and represents the path as it stood at the time of the call. Subsequent /// modifications of the path do not affect the [PathMetrics] object. /// /// Each path metric corresponds to a segment, or contour, of a path. /// /// For example, a path consisting of a [Path.lineTo], a [Path.moveTo], and /// another [Path.lineTo] will contain two contours and thus be represented by /// two [PathMetric] objects. /// /// This iterable does not memoize. Callers who need to traverse the list /// multiple times, or who need to randomly access elements of the list, should /// use [toList] on this object.ÀÀîÀùÀúÀûÀúÀü ÀÀÀÀ À À)ÀÀ+À=À>À?ÀnÀ@ÀLÀmÀRÀMÀUÀbÀt$À�À�À�;ÀÂÀÂÀ�ÀžÀ܃ÃÀKÀKh/// Used by [PathMetrics] to track iteration from one segment of a path to the /// next for measurement.À‚(À‚À”À•À–À•À—À�ÀœÀ®ÀºÀºÀÉÀÜÀÜÀí�ñÀÀÀíÀîÀ※ÀóÀóÀâÀãÀ¡�qÀ"ˆÀ"ˆ‚à/// Utilities for measuring a [Path] and extracting sub-paths. /// /// Iterate over the object returned by [Path.computeMetrics] to obtain /// [PathMetric] objects. Callers that want to randomly access elements or /// iterate multiple times should use `path.computeMetrics().toList()`, since /// [PathMetrics] does not memoize. /// /// Once created, the metrics are only valid for the path as it was specified /// when [Path.computeMetrics] was called. If additional contours are added or /// any contours are updated, the metrics need to be recomputed. Previously /// created metrics will still refer to a snapshot of the path at the time they /// were computed, rather than to the actual metrics for the new mutations to /// the path.À"—€ÎÀ"—À"¡À"¢À"£À"¢À"¤ À"ªÀ"©À"ÀÀ"¹À"ÂÀ"ÊÀ"ËÀ"ÑÀ"îÀ"ÒÀ"ÚÀ"ÛÀ#À"÷À#À# À# À#À#0À#À#À#À#FÀ#9À#HÀ#PÀ#QÀ#i�+À$ŽÀ$Ž� /// Return the total length of the current contour. /// /// The length may be calculated from an approximation of the geometry /// originally added. For this reason, it is not recommended to rely on /// this property for mathematically correct lengths of common shapes.À$™�AÀ%ÒÀ%Ò�!/// Whether the contour is closed. /// /// Returns true if the contour ends with a call to [Path.close] (which may /// have been implied when using methods like [Path.addRect]) or if /// `forceClosed` was specified as true in the call to [Path.computeMetrics]. /// Returns false otherwise.À%ß‚àÀ(³À(³‚±/// The zero-based index of the contour. /// /// [Path] objects are made up of zero or more contours. The first contour is /// created once a drawing command (e.g. [Path.lineTo]) is issued. A /// [Path.moveTo] command after a drawing command may create a new contour, /// although it may not if optimizations are applied that determine the move /// command did not actually result in moving the pen. /// /// This property is only valid with reference to its original iterator and /// the contours of the path at the time the path's metrics were computed. If /// additional contours were added or existing contours updated, this metric /// will be invalid for the current state of the path.À(ÄÀ(×À(×À(ä‚,À*¥À*¥�£/// Computes the position of the current contour at the given offset, and the /// angle of the path at that point. /// /// For example, calling this method with a distance of 1.41 for a line from /// 0.0,0.0 to 2.0,2.0 would give a point 1.0,1.0 and the angle 45 degrees /// (but in radians). /// /// Returns null if the contour has zero [length]. /// /// The distance is clamped to the [length] of the current contour.À*¹À*ÁÀ*ÀÀ+��À+îÀ+î€Ì/// Given a start and end distance, return the intervening segment(s). /// /// `start` and `end` are clamped to legal values (0..[length]) /// Begin the segment with a moveTo if `startWithMoveTo` is true.À+ú À,À,À, À,À,À,À,À,À,,À,™wÀ,¬À,¬À,™À,šÀ-‹_À-À-À-Q[À-QÀ-QÀ-]À-^À-kÀ-jÀ-pÀ-vÀ-uÀ7Á€¯À8XÀ8X€Œ/// The index of the current contour in the list of contours in the path. /// /// [nextContour] will increment this to the zero based index.À8nÀ8o À-°€”À.À.À. À.-À.,À.2À.8À.7À-°À-±À-·À-âÀ-½À-¸À-ÅÀ-áÀ-ÆÀ-ÎÀ-ÕÀ-ÚÀ-ÖÀ-ÝÀ-ãÀ.À-êÀ-äÀ-ìÀ.H€ÐÀ.OÀ.OÀ.VÀ.[À.ZÀ/€‹À/�À/�À/•À/šÀ/™À/À/À/#À/IÀ/+À/$À/3À/HÀ/4À/;À/@À/<À/CÀ/JÀ/yÀ/QÀ/KÀ/SÀ/sÀ/mÀ/uÀ/«�àÀ/´À/´À/ÈÀ/ÍÀ/ÌÀ/ÚÀ/âÀ/áÀ1�€žÀ1ÿÀ1ÿÀ2 À2À2À2À2$À2#À1�À1�À1–À1ÄÀ1žÀ1—À1¦À1ÃÀ1§À1®À1³À1¯À1¶À1½À1ÅÀ1æÀ1ÌÀ1ÆÀ1ÎÀ21�lÀ26À26À2BÀ2GÀ2FÀ2T À2\À2[À2b À2jÀ2iÀ2oÀ2uÀ2tÀ2†À3¡€ýÀ4(À4(À4: À4@À4?À4LÀ4QÀ4PÀ4b À4jÀ4iÀ4t À4|À4{À4„À4ŠÀ4‰À3¡À3¢À3¨À3êÀ3®À3©À3¶À3éÀ3·À3¾À3ÃÀ3¿À3ÆÀ3ÎÀ3ÕÀ3ÝÀ3åÀ3ëÀ4À3÷À3ñÀ3ùÀ4¢€ÒÀ4§À4§À4°À4µÀ4´À5x€ˆÀ5äÀ5äÀ5îÀ5óÀ5òÀ5xÀ5yÀ5À5£À5…À5€À5�À5¢À5ŽÀ5•À5šÀ5–À5�À5¤À5ÒÀ5«À5¥À5­À5ÌÀ5ÆÀ5ÎÀ6³€‰À6¸À6¸À7@}À7¨À7¨À7@À7AÀ7GÀ7dÀ7MÀ7HÀ7UÀ7cÀ7VÀ7]À7bÀ7^À7eÀ7–À7lÀ7fÀ7nÀ7�À7ŠÀ7’À;ò†_À<üÀ<ü�/// A mask filter to apply to shapes as they are painted. A mask filter is a /// function that takes a bitmap of color pixels, and returns another bitmap of /// color pixels. /// /// Instances of this class are used with [Paint.maskFilter] on [Paint] objects.À= ‚úÀ?ÛÀ?åÀ?æÀ?êÀ?æ‚¥/// Creates a mask filter that takes the shape being drawn and blurs it. /// /// This is commonly used to approximate shadows. /// /// The `style` argument controls the kind of effect to draw; see [BlurStyle]. /// /// The `sigma` argument controls the size of the effect. It is the standard /// deviation of the Gaussian blur to apply. The value must be greater than /// zero. The sigma corresponds to very roughly half the radius of the effect /// in pixels. /// /// A blur is an expensive operation and should therefore be used sparingly. /// /// The arguments must not be null. /// /// See also: /// /// * [Canvas.drawShadow], which is a more efficient way to draw shadows.À?ë À?ñÀ?ðÀ?ø À?þÀ?ýÀ@ À@À@À@#À@0À@0À@ÌÀ@ÝÀ@ÝÀ@éÀ@öÀAÀAÀAÀAµ<ÀAÉÀAÉÀAµÀA¶ÀA-€„ÀAGÀAGÀAJ ÀARÀAQÀA-ÀA.ÀAõZÀBÀBÀAõÀAöÀBS_ÀBbÀBbÀBv:ÀB|ÀB|ÀB† ÀB�ÀBŒÀB“ÀBŸÀBžÀB´€±ÀBºÀBºÀBñ ÀB÷ÀB÷ÀCÀCOÀC&ÀC&ÀC0 ÀC7ÀC6ÀC=ÀCIÀCHÀCÀCÀCg�©ÀCmÀCmÀCœ"ÀC¢ÀC¢ÀC±ÀC² ÀC¸ÀC·ÀCÁÀC×ÀC×ÀCà�.ÀCòÀCòÀCü ÀDÀDÀD ÀDÀDÀCàÀCáÀE‚IÀEÀEÀEM:ÀEdÀEdÀEy/// Row-major.ÀEz ÀE€ÀEÀE‹ÀEžÀEžÀE©�°ÀE»ÀE»ÀEÅ ÀEÌÀEËÀEÒÀEÞÀEÝÀE©ÀEªÀPЙKÀR›ÀR›�Ä/// A description of a color filter to apply when drawing a shape or compositing /// a layer with a particular [Paint]. A color filter is a function that takes /// two colors, and outputs one color. When applied during compositing, it is /// independently applied to each pixel of the layer being drawn before the /// entire layer is merged with the destination. /// /// Instances of this class are used with [Paint.colorFilter] on [Paint] /// objects.ÀR‚PÀT|ÀT‡ÀTˆÀTŒÀTˆ�¥/// Creates a color filter that applies the blend mode given as the second /// argument. The source color is the one given as the first argument, and the /// destination color is the one from the layer being composited. /// /// The output of this filter is then composited into the background according /// to the [Paint.blendMode], using the output of this filter as the source /// and the background as the destination.ÀT� ÀT”ÀT“ÀTšÀT¥ÀT¤ ÀT¼ÀTµÀT¾ÀTÖÀTËÀTØÀTñÀTéÀTóÀUÀTÿÀUÀUˆ=À\ÊÀ\ÕÀ\ÖÀ\ÜÀ\Ö‡7/// Construct a color filter from a 4x5 row-major matrix. The matrix is /// interpreted as a 5x5 matrix, where the fifth row is the identity /// configuration. /// /// Every pixel's color value, represented as an `[R, G, B, A]`, is matrix /// multiplied to create a new color: /// /// | R' | | a00 a01 a02 a03 a04 | | R | /// | G' | | a10 a11 a12 a13 a14 | | G | /// | B' | = | a20 a21 a22 a23 a24 | * | B | /// | A' | | a30 a31 a32 a33 a34 | | A | /// | 1 | | 0 0 0 0 1 | | 1 | /// /// The matrix is in row-major order and the translation column is specified /// in unnormalized, 0...255, space. For example, the identity matrix is: /// /// ```dart /// const ColorFilter identity = ColorFilter.matrix([ /// 1, 0, 0, 0, 0, /// 0, 1, 0, 0, 0, /// 0, 0, 1, 0, 0, /// 0, 0, 0, 1, 0, /// ]); /// ``` /// /// ## Examples /// /// An inversion color matrix: /// /// ```dart /// const ColorFilter invert = ColorFilter.matrix([ /// -1, 0, 0, 0, 255, /// 0, -1, 0, 0, 255, /// 0, 0, -1, 0, 255, /// 0, 0, 0, 1, 0, /// ]); /// ``` /// /// A sepia-toned color matrix (values based on the [Filter Effects Spec](https://www.w3.org/TR/filter-effects-1/#sepiaEquivalent)): /// /// ```dart /// const ColorFilter sepia = ColorFilter.matrix([ /// 0.393, 0.769, 0.189, 0, 0, /// 0.349, 0.686, 0.168, 0, 0, /// 0.272, 0.534, 0.131, 0, 0, /// 0, 0, 0, 1, 0, /// ]); /// ``` /// /// A greyscale color filter (values based on the [Filter Effects Spec](https://www.w3.org/TR/filter-effects-1/#grayscaleEquivalent)): /// /// ```dart /// const ColorFilter greyscale = ColorFilter.matrix([ /// 0.2126, 0.7152, 0.0722, 0, 0, /// 0.2126, 0.7152, 0.0722, 0, 0, /// 0.2126, 0.7152, 0.0722, 0, 0, /// 0, 0, 0, 1, 0, /// ]); /// ```À\ÝÀ\ëÀ\ê À\ÿÀ\øÀ]À]À] À]À].À]&À]0À]DÀ]>À]FÀ]W€ìÀ]¹À]ÄÀ]ÅÀ]ÖÀ]ÅW/// Construct a color filter that applies the sRGB gamma curve to the RGB /// channels. À]æÀ]ßÀ]èÀ]ÿÀ]ôÀ^À^À^ À^À^)À^#À^+À^G€ùÀ^¶À^ÁÀ^ÂÀ^ÓÀ^Âd/// Creates a color filter that applies the inverse of the sRGB gamma curve /// to the RGB channels. À^ãÀ^ÜÀ^åÀ^üÀ^ñÀ^þÀ_À_ À_À_&À_ À_(À_DÀ_QÀ_QÀ_[À_lÀ_lÀ_zÀ_ŽÀ_ŽÀ_™À_£À_£À_ÝÀ_îÀ_îÀ_ûÀ`!À`#À`#À`2À`V,À`gÀ`gÀ`�À`Ÿ,À`°À`°À`ÊÀet€¯ÀeˆÀeˆÀetÀeuÀf'�ÁÀf>Àf>Àf'Àf(ÀaVÀaÀaÀaÀaÀa[‚×ÀaiÀaiÀd6�:ÀdPÀdPÀdS Àd[ÀdZÀd6Àd7Àgì‚-ÀgÿÀgÿÀgìÀgíÀj‡bÀkmÀkm�D/// A [ColorFilter] that is backed by a native DlColorFilter. /// /// This is a private class, rather than being the implementation of the public /// ColorFilter, because we want ColorFilter to be const constructible and /// efficiently comparable, so that widgets can check for ColorFilter equality to /// avoid repainting.ÀkŸ€¬ÀkŸÀk«Àk¬Àk°Àk¬Àk± Àk·Àk¶ ÀkÁÀkÇÀkïÀkÖÀkÈÀkÏÀkÐÀkÙÀkäÀkåÀlO€¨ÀlOÀl[Àl\ÀlbÀl\Àlc ÀliÀlh ÀlsÀlyÀl£ÀlˆÀlzÀl�Àl‚Àl‹Àl–Àl—Àlú€§ÀlúÀmÀmÀmÀmÀm ÀmÀm Àm-Àm3ÀmhÀmBÀm4Àm;Àm<ÀmEÀmPÀmQÀm¥€§Àm¥Àm±Àm²ÀmÃÀm²ÀmÄ ÀmÊÀmÉ ÀmØÀmÞÀnÀmíÀmßÀmæÀmçÀmðÀmûÀmüÀnP€�ÀnÖÀnÖo/// The original Dart object that created the native wrapper, which retains /// the values used for the filter.Ànâ]Ào0Ào0ÀnâÀnãÀnéÀnÿÀnïÀnêÀn÷ÀnþÀnøÀoÀoÀoÀoÀo ÀoC€—Ào¶Ào¶ÀoÀ ÀoÅÀoÄÀoË ÀoÐÀoÏÀoCÀoDÀoJÀouÀoPÀoKÀoXÀotÀoYÀo`ÀoeÀoaÀohÀooÀovÀo¤Ào}ÀowÀoÀožÀo˜Ào ÀoÞ€�Àp?Àp?ÀpKÀpXÀpWÀoÞÀoßÀoåÀp ÀoëÀoæÀoóÀp ÀoôÀoûÀpÀoüÀpÀp Àp-ÀpÀp ÀpÀpc€‹ÀpÕÀpÕÀpcÀpdÀpjÀp‡ÀppÀpkÀpxÀp†ÀpyÀp€Àp…Àp�ÀpˆÀpÃÀp�Àp‰Àp‘Àp½Àp·Àp¿Àpò€‹ÀqdÀqdÀpòÀpóÀpùÀqÀpÿÀpúÀqÀqÀqÀqÀqÀqÀqÀqRÀqÀqÀq ÀqLÀqFÀqNÀq�”‡ÀscÀsc�Ò/// A filter operation to apply to a raster image. /// /// See also: /// /// * [BackdropFilter], a widget that applies [ImageFilter] to its rendering. /// * [ImageFiltered], a widget that applies [ImageFilter] to its children. /// * [SceneBuilder.pushBackdropFilter], which is the low-level API for using /// this class as a backdrop filter. /// * [SceneBuilder.pushImageFilter], which is the low-level API for using /// this class as a child layer filter.ÀsÅÀsÅÀsÐÀsÑÀsÒÀsÑÀsó€óÀt7ÀtBÀtCÀtGÀtC9/// Creates an image filter that applies a Gaussian blur.ÀtIÀtQÀtPÀt^ÀtfÀteÀtsÀt~Àt}ÀtYÀtnÀtê�$Àu…Àu�Àu‘Àu—Àu‘€Ž/// Creates an image filter that dilates each input pixel's channel values /// to the max value within the given radii along the x and y axes.Àu™Àu¡Àu Àu¯Àu·Àu¶ÀuªÀuÀÀv�%Àv°Àv»Àv¼ÀvÁÀv¼€‘/// Create a filter that erodes each input pixel's channel values /// to the minimum channel value within the given radii along the x and y axes.ÀvÃÀvËÀvÊÀvÙÀváÀvàÀvÔÀvêÀw;‚!Àx%Àx0Àx1Àx7Àx1€Ù/// Creates an image filter that applies a matrix transformation. /// /// For example, applying a positive scale matrix (see [Matrix4.diagonal3]) /// when used with [BackdropFilter] would magnify the background image.Àx=ÀxJÀxIÀxX2ÀxgÀxfÀxvÀxƒÀx„Ày`�žÀzcÀznÀzoÀzvÀzo€ð/// Composes the `inner` filter with `outer`, to combine their effects. /// /// Creates a single [ImageFilter] that when applied, has the same effect as /// subsequently applying `inner` and `outer`, i.e., /// result = outer(inner(source)).ÀzxÀzŽÀz�Àz”ÀzªÀz©À{‰À€øÀ�À�À� À�…›/// Creates an image filter from a [FragmentShader]. /// /// The fragment shader provided here has additional requirements to be used /// by the engine for filtering. The first uniform value must be a vec2, this /// will be set by the engine to the size of the bound texture. There must /// also be at least one sampler2D uniform, the first of which will be set by /// the engine to contain the filter input. /// /// When Impeller uses the OpenGL(ES) backend, the y-axis direction is /// reversed. Custom fragment shaders must invert the y-axis on /// GLES or they will render upside-down. /// /// For example, the following is a valid fragment shader that can be used /// with this API. Note that the uniform names are not required to have any /// particular value. /// /// ```glsl /// #include /// /// uniform vec2 u_size; /// uniform float u_time; /// /// uniform sampler2D u_texture_input; /// /// out vec4 frag_color; /// /// void main() { /// vec2 uv = FlutterFragCoord().xy / u_size; /// // Reverse y axis for OpenGL backend. /// #ifdef IMPELLER_TARGET_OPENGLES /// uv.y = 1.0 - uv.y /// #endif /// frag_color = texture(u_texture_input, uv) * u_time; /// /// } /// /// ``` /// /// This API is only supported when using the Impeller rendering engine. On /// other backends a [UnsupportedError] will be thrown. To check at runtime /// whether this API is suppored use [isShaderFilterSupported].À� À�À�À„€„À„rÀ„rE/// Whether [ImageFilter.shader] is supported on the current backend.À…éÀ…ôÀ…ôÀ…@$À…MÀ…MÀ† ƒ^À†À†À†>FÀ†>À†>À†PÀ†RÀ†aÀ†`À†fÀ†uÀ†tÀ†ˆÀ†šÀ†šÀ†¢!À†¶À†¶À†é@À‡À‡À‡À‡À‡À‡#À‡(À‡$À‡qLÀ‡ˆÀ‡ˆÀ‡qÀ‡rÀ‰QÀ‰)À‰)À‰À‰À‡-@À‡FÀ‡FÀ‡-À‡.À‡ÁMÀ‡ÔÀ‡ÔÀ‡ÁÀ‡ÂÀˆ€ÿÀˆ,Àˆ,Àˆ/ Àˆ7Àˆ6ÀˆÀˆÀ‰j„ÂÀ‰pÀ‰pÀ‰¤_À‰¤À‰¤À‰¼À‰¾À‰ÍÀ‰ÌÀ‰ÔÀ‰ãÀ‰âÀ‰êÀ‰ùÀ‰øÀŠÀŠÀŠÀŠÀŠ+ÀŠ+ÀŠ5ÀŠEÀŠEÀŠf>ÀŠ~ÀŠ~ÀŠ�ÀŠ™ÀŠšÀŠžÀŠ£ÀŠŸÀŠì�=ÀŠ÷ÀŠ÷ÀŒ-SÀŒDÀŒDÀŒ-ÀŒ.À�î<ÀŽÀŽÀ�îÀ�ïÀЍ@ÀŠÁÀŠÁÀЍÀŠ©ÀŒ„TÀŒ—ÀŒ—ÀŒ„ÀŒ…ÀŒÜ�ÀŒöÀŒöÀŒù À�À�ÀŒÜÀŒÝÀŽ.‚éÀŽ4ÀŽ4ÀŽbCÀŽbÀŽbÀŽtÀŽvÀŽ…ÀŽ„ÀŽ�ÀŽœÀŽ›ÀŽ©À޶À޶ÀŽÁÀŽÎÀŽÎÀŽÚ@ÀŽòÀŽòÀ�À� À�À�À�À�À�bIÀ�yÀ�yÀ�bÀ�cÀ�×>À�ëÀ�ëÀ�×À�ØÀ�@À�7À�7À�À�À�¯JÀ�ÂÀ�ÂÀ�¯À�°À�ý€ÖÀ�À�À� À�"À�!À�ýÀ�þÀ‘‚ãÀ‘À‘À‘LBÀ‘LÀ‘LÀ‘]À‘_À‘nÀ‘mÀ‘vÀ‘…À‘„À‘’À‘ŸÀ‘ŸÀ‘ªÀ‘·À‘·À‘Ã?À‘ÛÀ‘ÛÀ‘êÀ‘öÀ‘÷À‘üÀ’À‘ýÀ’JHÀ’aÀ’aÀ’JÀ’KÀ“¼>À“ÐÀ“ÐÀ“¼À“½À’@À’À’À’À’À’–IÀ’©À’©À’–À’—À’ã€ÕÀ’ýÀ’ýÀ“ À“À“À’ãÀ’äÀ“þƒ�À”À”À”3LÀ”3À”3À”FÀ”HÀ”WÀ”VÀ”cÀ”rÀ”qÀ”ƒÀ”•À”•À”¤À”¶À”¶À”àBÀ”øÀ”øÀ•À•À•À•À•!À•À•jyÀ•�À•�À•jÀ•kÀ—EFÀ—YÀ—YÀ—EÀ—FÀ•&@À•?À•?À•&À•'À•ç_À•úÀ•úÀ•çÀ•èÀ–J€÷À–dÀ–dÀ–g À–oÀ–nÀ–JÀ–KÀ—�ƒZÀ—•À—•À—Ë(À—ËÀ—ËÀ—åÀ—æ À—ìÀ—ëÀ—÷À˜ À˜ À˜@À˜/À˜/À˜>À˜JÀ˜KÀ˜QÀ˜VÀ˜RÀ˜ 5À˜·À˜·À˜ À˜¡Àš·0ÀšËÀšËÀš·Àš¸À˜\@À˜uÀ˜uÀ˜\À˜]À˜ÙQÀ˜ìÀ˜ìÀ˜ÙÀ˜ÚÀ™.€ýÀ™HÀ™HÀ™K À™SÀ™RÀ™.À™/Àš/€„Àš‹Àš‹Àš“Àš¡Àš Àš£Àš±Àš°Àš/Àš0Àš6ÀšTÀš<Àš7ÀšDÀšSÀšEÀšMÀšUÀšrÀš\ÀšVÀš^Àšë�+Àœ Àœ �)/// An [ImageFilter] that is backed by a native DlImageFilter. /// /// This is a private class, rather than being the implementation of the public /// ImageFilter, because we want ImageFilter to be efficiently comparable, so that /// widgets can check for ImageFilter equality to avoid repainting.ÀœR€æÀœŽÀœšÀœ›ÀœŸÀœ›9/// Creates an image filter that applies a Gaussian blur.Àœ ÀœºÀœ¹ÀœËÀœÃÀœÍÀ�<�À�ÏÀ�ÛÀ�ÜÀ�âÀ�Ü€Ž/// Creates an image filter that dilates each input pixel's channel values /// to the max value within the given radii along the x and y axes.À�ãÀ�÷À�öÀžÀžÀž Àž_�ÀžõÀŸÀŸÀŸÀŸ€‘/// Create a filter that erodes each input pixel's channel values /// to the minimum channel value within the given radii along the x and y axes.ÀŸÀŸÀŸÀŸ,ÀŸ$ÀŸ.ÀŸ‚�ßÀ dÀ pÀ qÀ wÀ q€Ù/// Creates an image filter that applies a matrix transformation. /// /// For example, applying a positive scale matrix (see [Matrix4.diagonal3]) /// when used with [BackdropFilter] would magnify the background image.À xÀ ŒÀ ‹À �À •À ŸÀ¡e€ùÀ¡—À¡£À¡¤À¡³À¡¤//// Converts a color filter to an image filter.À¡´À¡ÁÀ¡ÀÀ¡ÒÀ¡ÊÀ¡ÔÀ¢b�vÀ¢•À¢¡À¢¢À¢ªÀ¢¢0/// Composes `_innerFilter` with `_outerFilter`.À¢«À¢ÀÀ¢¿À¢ÑÀ¢ÉÀ¢ÓÀ£Ü€ƒÀ£ÜÀ£èÀ£éÀ£ïÀ£éÀ£ð!À¤ À¤ À¤À¤À¤À©†€�Àª Àª o/// The original Dart object that created the native wrapper, which retains /// the values used for the filter.À¤c]À¤±À¤±À¤cÀ¤dÀ¤jÀ¤€À¤pÀ¤kÀ¤xÀ¤À¤yÀ¤�À¤ŸÀ¤ˆÀ¤‚À¤ŠÀ¤Ä€¿À¥MÀ¥MÀ¥W À¥_À¥^À¥f À¥nÀ¥mÀ¥u À¥zÀ¥yÀ¤ÄÀ¤ÅÀ¤ËÀ¤ÿÀ¤ÑÀ¤ÌÀ¤ÙÀ¤þÀ¤ÚÀ¤áÀ¤æÀ¤âÀ¤éÀ¤ñÀ¤ùÀ¥À¥;À¥ À¥À¥À¥1À¥+À¥3À¥‡€°À¦ À¦ À¦À¦À¦À¦'À¦/À¦.À¥‡À¥ˆÀ¥ŽÀ¥»À¥”À¥�À¥œÀ¥ºÀ¥�À¥¤À¥©À¥¥À¥¬À¥´À¥¼À¥ùÀ¥ÈÀ¥ÂÀ¥ÊÀ¥ïÀ¥éÀ¥ñÀ¦;€®À¦¾À¦¾À¦ÉÀ¦ÑÀ¦ÐÀ¦ÙÀ¦áÀ¦àÀ¦;À¦<À¦BÀ¦oÀ¦HÀ¦CÀ¦PÀ¦nÀ¦QÀ¦XÀ¦]À¦YÀ¦`À¦hÀ¦pÀ¦¬À¦|À¦vÀ¦~À¦¢À¦œÀ¦¤À¦í€œÀ§UÀ§UÀ§aÀ§nÀ§mÀ§vÀ§{À§zÀ¦íÀ¦îÀ¦ôÀ§ À¦úÀ¦õÀ§À§À§À§ À§À§ À§À§À§!À§CÀ§(À§"À§*À§�€™À§úÀ§úÀ¨ À¨À¨À§�À§ŽÀ§”À§ÀÀ§šÀ§•À§¢À§¿À§£À§ªÀ§¯À§«À§²À§¹À§¾À§ºÀ§ÁÀ§èÀ§ÈÀ§ÂÀ§ÊÀ¨*€ÉÀ¨±À¨±À¨¿À¨ÍÀ¨ÌÀ¨ÙÀ¨çÀ¨æÀ¨*À¨+À¨1À¨lÀ¨7À¨2À¨?À¨kÀ¨@À¨GÀ¨LÀ¨HÀ¨OÀ¨VÀ¨[À¨WÀ¨^À¨eÀ¨jÀ¨fÀ¨mÀ¨ŸÀ¨yÀ¨sÀ¨{À¨÷€‹À©_À©_À©kÀ©{À©zÀ¨÷À¨øÀ¨þÀ©*À©À¨ÿÀ© À©)À© À©À©À©À©À©#À©(À©$À©+À©MÀ©2À©,À©4Àª…ÀªžÀªžz/// Base class for objects such as [Gradient] and [ImageShader] which /// correspond to shaders as used by [Paint.shader].ÀªÊ€�À«LÀ«RÀ«SÀ«TÀ«Sa/// This class is created by the engine, and should not be instantiated /// or extended directly.À«0À«1À«7À«HÀ«8À«[À«`À«`À«qÀ«{�À¬À¬y/// Whether [dispose] has been called. /// /// This must only be used when asserts are enabled. Otherwise, it will throw.À¬–‚šÀ®‰À®‰�Û/// Release the resources used by this object. The object is no longer usable /// after this method is called. /// /// The underlying memory allocated by this object will be retained beyond /// this call if it is still needed by another object that has not been /// disposed. For example, a [Picture] that has not been disposed that /// refers to an [ImageShader] may keep its underlying resources alive. /// /// Classes that override this method must call `super.dispose()`.ÀǤªsÀÈðÀÈð�@/// A shader (as used by [Paint.shader]) that renders a color gradient. /// /// There are several types of gradients, represented by the various constructors /// on this class. /// /// See also: /// /// * [Gradient](https://api.flutter.dev/flutter/painting/Gradient-class.html), the class in the [painting] library. ///ÀÉ ‰ÀÏMÀÏUÀÏVÀÏ\ÀÏV† /// Creates a linear gradient from `from` to `to`. /// /// If `colorStops` is provided, `colorStops[i]` is a number from 0.0 to 1.0 /// that specifies where `color[i]` begins in the gradient. If `colorStops` is /// not provided, then only two stops, at 0.0 and 1.0, are implied (and /// `color` must therefore only have two entries). Stop values less than 0.0 /// will be rounded up to 0.0 and stop values greater than 1.0 will be rounded /// down to 1.0. Each stop value must be greater than or equal to the previous /// stop value. Stop values that do not meet this criteria will be rounded up /// to the previous stop value. /// /// The behavior before `from` and after `to` is described by the `tileMode` /// argument. For details, see the [TileMode] enum. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_linear.png) /// /// If `from`, `to`, `colors`, or `tileMode` are null, or if `colors` or /// `colorStops` contain null values, this constructor will throw a /// [NoSuchMethodError]. /// /// If `matrix4` is provided, the gradient fill will be transformed by the /// specified 4x4 matrix relative to the local coordinate system. `matrix4` must /// be a column-major matrix packed into a list of 16 values.ÀÏb ÀÏjÀÏiÀÏs ÀÏ{ÀÏzÀÏ‚ÀÏ�ÀÏŽÀÏœÀÏ«ÀϪÀϺ"ÀÏÄÀÏÃÀÏâÀÏðÀÏï!ÀÏÎÀÏÖÀÏ×ÀÏÿÀÐÀÐÀÐÀÐÀÐÀÐÀÐ$ÀÐ*ÀÐ=ÀÐ+ÀÐ9ÀÐ<ÀÐ:ÀÐGÀÐMÀÐyÀÐ^ÀÐVÀÐNÀÐYÀÐaÀÐpÀÐxÀÐqÀЃÀЈÀЉÀЊÀЋÀÒ)�²ÀÚQÀÚYÀÚZÀÚ`ÀÚZ‡ã/// Creates a radial gradient centered at `center` that ends at `radius` /// distance from the center. /// /// If `colorStops` is provided, `colorStops[i]` is a number from 0.0 to 1.0 /// that specifies where `color[i]` begins in the gradient. If `colorStops` is /// not provided, then only two stops, at 0.0 and 1.0, are implied (and /// `color` must therefore only have two entries). Stop values less than 0.0 /// will be rounded up to 0.0 and stop values greater than 1.0 will be rounded /// down to 1.0. Each stop value must be greater than or equal to the previous /// stop value. Stop values that do not meet this criteria will be rounded up /// to the previous stop value. /// /// The behavior before and after the radius is described by the `tileMode` /// argument. For details, see the [TileMode] enum. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_radial.png) /// /// If `center`, `radius`, `colors`, or `tileMode` are null, or if `colors` or /// `colorStops` contain null values, this constructor will throw a /// [NoSuchMethodError]. /// /// If `matrix4` is provided, the gradient fill will be transformed by the /// specified 4x4 matrix relative to the local coordinate system. `matrix4` must /// be a column-major matrix packed into a list of 16 values. /// /// If `focal` is provided and not equal to `center` and `focalRadius` is /// provided and not equal to 0.0, the generated shader will be a two point /// conical radial gradient, with `focal` being the center of the focal /// circle and `focalRadius` being the radius of that circle. If `focal` is /// provided and not equal to `center`, at least one of the two offsets must /// not be equal to [Offset.zero].ÀÚf ÀÚnÀÚmÀÚy ÀÚ�ÀÚ€ÀÚŒÀÚ™ÀÚ˜ÀÚ¦ÀÚµÀÚ´ÀÚÄ"ÀÚÎÀÚÍÀÚìÀÚúÀÚùÀÛ ÀÛÀÛÀÛÀÛ!ÀÛ ÀÚØÀÚàÀÚáÀÛ.ÀÛ:ÀÛ@ÀÛWÀÛAÀÛOÀÛVÀÛPÀÛaÀÛgÀÛ“ÀÛxÀÛpÀÛhÀÛsÀÛ{ÀÛŠÀÛ’ÀÛ‹ÀÛ�ÀÛ¢ÀÛ£ÀÛ¤ÀÛ¥ÀßߊŽÀçQÀçYÀçZÀç_ÀçZ‡3/// Creates a sweep gradient centered at `center` that starts at `startAngle` /// and ends at `endAngle`. /// /// `startAngle` and `endAngle` should be provided in radians, with zero /// radians being the horizontal line to the right of the `center` and with /// positive angles going clockwise around the `center`. /// /// If `colorStops` is provided, `colorStops[i]` is a number from 0.0 to 1.0 /// that specifies where `color[i]` begins in the gradient. If `colorStops` is /// not provided, then only two stops, at 0.0 and 1.0, are implied (and /// `color` must therefore only have two entries). Stop values less than 0.0 /// will be rounded up to 0.0 and stop values greater than 1.0 will be rounded /// down to 1.0. Each stop value must be greater than or equal to the previous /// stop value. Stop values that do not meet this criteria will be rounded up /// to the previous stop value. /// /// The behavior before `startAngle` and after `endAngle` is described by the /// `tileMode` argument. For details, see the [TileMode] enum. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_sweep.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_sweep.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_sweep.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_sweep.png) /// /// If `center`, `colors`, `tileMode`, `startAngle`, or `endAngle` are null, /// or if `colors` or `colorStops` contain null values, this constructor will /// throw a [NoSuchMethodError]. /// /// If `matrix4` is provided, the gradient fill will be transformed by the /// specified 4x4 matrix relative to the local coordinate system. `matrix4` must /// be a column-major matrix packed into a list of 16 values.Àçe ÀçmÀçlÀçxÀç…Àç„Àç’Àç¡Àç Àç°"ÀçºÀç¹ÀçØÀçàÀçßÀçõÀçýÀçüÀèÀè&Àè%&ÀçÄÀçÌÀçÍÀçìÀèÀèÀè Àè ÀèÀè5Àè;ÀèRÀè<ÀèJÀèQÀèKÀè\ÀèbÀèxÀènÀècÀèpÀè‚ÀèˆÀè´Àè™Àè‘Àè‰Àè”ÀèœÀè«Àè³Àè¬Àè¾ÀèÃÀèÄÀèÅÀèÆÀêqZÀê¼Àê¼ÀêqÀêrÀêxÀêŽÀê~ÀêyÀê†Àê�Àê‡Àê�ÀêªÀê–Àê�Àê˜ÀêÏ�ÀëUÀëUÀëfÀësÀërÀë�ÀëŽÀë�Àë™Àë§Àë¦Àë¶ Àë»ÀëºÀëÈÀëÖÀëÕÀêÏÀêÐÀêÖÀëÀêÜÀê×ÀêäÀëÀêåÀêìÀêñÀêíÀêôÀêüÀëÀë ÀëÀëÀëCÀë'Àë!Àë)Àëæ�CÀì|Àì|Àì�Àì•Àì”Àì¡Àì©Àì¨Àìµ Àì½Àì¼ÀìÈÀìÕÀìÔÀìàÀìîÀìíÀìý ÀíÀíÀíÀíÀíÀëæÀëçÀëíÀìAÀëóÀëîÀëûÀì@ÀëüÀìÀìÀìÀì ÀìÀìÀì#Àì+Àì3Àì:ÀìBÀìjÀìNÀìHÀìPÀí-�èÀî,Àî, Àî> ÀîFÀîEÀîQ ÀîYÀîXÀîdÀîlÀîkÀî| Àî„ÀîƒÀî� Àî•Àî”ÀîžÀî¦Àî¥Àî´ÀîÁÀîÀÀîÌÀîÚÀîÙÀîé ÀîîÀîíÀîûÀï ÀïÀí-Àí.Àí4ÀíñÀí?Àí:ÀíGÀííÀíOÀíVÀí[ÀíWÀídÀírÀí€ÀíŽÀíœÀíªÀí¸ÀíÆÀíÔÀíáÀíòÀîÀíùÀíóÀíûÀï�`ÀïµÀïµÀïÅÀïÍÀïÌÀïÙÀïáÀïàÀïíÀïúÀïùÀðÀðÀðÀð" Àð'Àð&Àð4Àð<Àð;ÀðKÀðSÀðRÀð`ÀðnÀðmÀïÀïÀï Àï„Àï+Àï&Àï3Àï€Àï4Àï;Àï@Àï<ÀïCÀïKÀïSÀï[ÀïcÀïjÀïrÀïzÀï…Àï£ÀïŒÀï†ÀïŽÀð}�˜Àð‰Àð‰Àð�ÀðªÀð©Àð±ÀðÀÀð¿ÀòˆÃÀòbÀòb=/// A shader (as used by [Paint.shader]) that tiles an image.Àò�…ËÀöEÀöEÀöPƒ�/// Creates an image-tiling shader. /// /// The first argument specifies the image to render. The /// [decodeImageFromList] function can be used to decode an image from bytes /// into the form expected here. (In production code, starting from /// [instantiateImageCodec] may be preferable.) /// /// The second and third arguments specify the [TileMode] for the x direction /// and y direction respectively. [TileMode.repeated] can be used for tiling /// images. /// /// The fourth argument gives the matrix to apply to the effect. The /// expression `Matrix4.identity().storage` creates a [Float64List] /// prepopulated with the identity matrix. /// /// All the arguments are required and must not be null, except for /// [filterQuality]. If [filterQuality] is not specified at construction time /// it will be deduced from the environment where it is used, such as from /// [Paint.filterQuality].ÀöV Àö]Àö\Àög ÀöqÀöpÀöy ÀöƒÀö‚Àö‹Àö˜Àö—Àö¦Àö¶ÀöµÀö)Àö*Àö0ÀöAÀö1ÀöËÀöÑÀöæÀöÒÀöÓÀöØÀöÙÀöðÀöõÀööÀö÷ÀöøÀøPEÀøaÀøaÀøPÀøQÀø™]ÀøçÀøçÀø™ÀøšÀø Àø¶Àø¦Àø¡Àø®ÀøµÀø¯Àø·ÀøÕÀø¾Àø¸ÀøÀÀøú� Àù�Àù�Àù¤ Àù¬Àù«Àù¶Àù»ÀùºÀùÃÀùÈÀùÇÀùÐÀùÕÀùÔÀùìÀùùÀùøÀøúÀøûÀùÀùLÀù ÀùÀùÀùKÀùÀùÀùÀùÀù!Àù(Àù-Àù)Àù0Àù7Àù>ÀùEÀùMÀù{ÀùYÀùSÀù[Àú €ÑÀúÏÀúÏk/// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).ÀúyÀúzÀú€Àú�Àú†Àú�ÀúŽÀúœÀú�Àú–Àú›Àú—ÀúžÀú½Àú¥ÀúŸÀú§ÀúÞŒ_ÀûÆÀûÆ€Ü/// An instance of [FragmentProgram] creates [Shader] objects (as used by /// [Paint.shader]). /// /// For more information, see the website /// [documentation]( https://docs.flutter.dev/development/ui/advanced/shaders).Àûû�!ÀüÀü&Àü'Àü1Àü'Àü2Àü:Àü9ÀûûÀûüÀüÀüÀüÀý Àý(Àý(ÀóWÀÀÀHÀIÀ/ÀGÀ0À8ÀN7ÀsÀsÀNÀOÀUÀfÀVÀŠ2À¯À¯ÀŠÀ‹À‘À¢À’Àý7„+Àþ’Àþ’�//// Creates a fragment program from the asset with key [assetKey]. /// /// The asset must be a file produced as the output of the `impellerc` /// compiler. The constructed object should then be reused via the /// [fragmentShader] method to create [Shader] objects that can be used by /// [Paint.shader].ÀþœÀþ¤Àþ£ÀO�ûÀ[À[ÀoÀwÀvÀÁaÀÀÀÁÀÂÀÈÀÞÀÎÀÉÀÖÀÝÀ×ÀßÀÀæÀàÀèÀ&€ŒÀ’À’À¡À©À¨À&À'À-ÀTÀ5À.À=ÀSÀ>ÀEÀJÀFÀMÀUÀ~À\ÀVÀ^À¶€…ÀùÀù1/// Returns a fresh instance of [FragmentShader].À?’ÌÀ 0À 0‚å/// A [Shader] generated from a [FragmentProgram]. /// /// Instances of this class can be obtained from the /// [FragmentProgram.fragmentShader] method. The float uniforms list is /// initialized to the size expected by the shader and is zero-filled. Uniforms /// of float type can then be set by calling [setFloat]. Sampler uniforms are /// set by calling [setImageSampler]. /// /// A [FragmentShader] can be re-used, and this is an efficient way to avoid /// allocating and re-initializing the uniform buffer and samplers. However, /// if two [FragmentShader] objects with different float uniforms or samplers /// are required to exist simultaneously, they must be obtained from two /// different calls to [FragmentProgram.fragmentShader].À R€ÊÀ RÀ `À aÀ bÀ aÀ cÀ tÀ sÀ }À †À …À ¢À —À ¤À µÀ ºÀ »À ¼À ½À À .À .À =<À VÀ VÀ kÀ vÀ xÀ wÀ }(À ‰À ‰À “À ª‡�À¢À¢†œ/// Sets the float uniform at [index] to [value]. /// /// All uniforms defined in a fragment shader that are not samplers must be /// set through this method. This includes floats and vec2, vec3, and vec4. /// The correct index for each uniform is determined by the order of the /// uniforms as defined in the fragment program, ignoring any samplers. For /// data types that are composed of multiple floats such as a vec4, more than /// one call to [setFloat] is required. /// /// For example, given the following uniforms in a fragment program: /// /// ```glsl /// uniform float uScale; /// uniform sampler2D uTexture; /// uniform vec2 uMagnitude; /// uniform vec4 uColor; /// ``` /// /// Then the corresponding Dart code to correctly initialize these uniforms /// is: /// /// ```dart /// void updateShader(ui.FragmentShader shader, Color color, ui.Image image) { /// shader.setFloat(0, 23); // uScale /// shader.setFloat(1, 114); // uMagnitude x /// shader.setFloat(2, 83); // uMagnitude y /// /// // Convert color to premultiplied opacity. /// shader.setFloat(3, color.red / 255 * color.opacity); // uColor r /// shader.setFloat(4, color.green / 255 * color.opacity); // uColor g /// shader.setFloat(5, color.blue / 255 * color.opacity); // uColor b /// shader.setFloat(6, color.opacity); // uColor a /// /// // initialize sampler uniform. /// shader.setImageSampler(0, image); /// } /// ``` /// /// Note how the indexes used does not count the `sampler2D` uniform. This /// uniform will be set separately with [setImageSampler], with the index starting /// over at 0. /// /// Any float uniforms that are left uninitialized will default to `0`.À« À°À¯À¶ À¾À½À>‚9ÀŽÀŽ�À¡=À¡CÀ¡KÀ¡JÀ¡VÀ¡^À¡]À¡iÀ¡oÀ¡nÀ¡y À¡€À¡À¡Š�À¢ˆÀ¢ˆ€î/// Draws the given [Path] with the given [Paint]. /// /// Whether this shape is filled or stroked (or both) is controlled by /// [Paint.style]. If the path is filled, then sub-paths within it are /// implicitly closed (see [Path.close]).À¢‘ À¢—À¢–À¢œ À¢£À¢¢À¢­€ÝÀ£WÀ£W€ /// Draws the given [Image] into the canvas with its top-left corner at the /// given [Offset]. The image is composited into the canvas using the given [Paint].À£a À£hÀ£gÀ£n À£vÀ£uÀ£} À£„À£ƒÀ£Ž�øÀ¥JÀ¥J�¤/// Draws the subset of the given image described by the `src` argument into /// the canvas in the axis-aligned rectangle given by the `dst` argument. /// /// This might sample from outside the `src` rect by up to half the width of /// an applied filter. /// /// Multiple calls to this method with different arguments (from the same /// image) can be batched into a single call to [drawAtlas] to improve /// performance.À¥X À¥_À¥^À¥eÀ¥kÀ¥jÀ¥oÀ¥uÀ¥tÀ¥y À¥€À¥À¥ŠƒQÀ¨œÀ¨œ‚ò/// Draws the given [Image] into the canvas using the given [Paint]. /// /// The image is drawn in nine portions described by splitting the image by /// drawing two horizontal lines and two vertical lines, where the `center` /// argument describes the rectangle formed by the four points where these /// four lines intersect each other. (This forms a 3-by-3 grid of regions, /// the center region being described by the `center` argument.) /// /// The four regions in the corners are drawn, without scaling, in the four /// corners of the destination rectangle described by `dst`. The remaining /// five regions are drawn by stretching them to fit such that they exactly /// cover the destination rectangle while maintaining their relative /// positions.À¨ª À¨±À¨°À¨· À¨½À¨¼À¨ÄÀ¨ÊÀ¨ÉÀ¨Î À¨ÕÀ¨ÔÀ¨ß€‚À©DÀ©D[/// Draw the given picture onto the canvas. To create a picture, see /// [PictureRecorder].À©PÀ©YÀ©XÀ©e„IÀ­|À­|ƒé/// Draws the text in the given [Paragraph] into this canvas at the given /// [Offset]. /// /// The [Paragraph] object must have had [Paragraph.layout] called on it /// first. /// /// To align the text, set the `textAlign` on the [ParagraphStyle] object /// passed to the [ParagraphBuilder.new] constructor. For more details see /// [TextAlign] and the discussion at [ParagraphStyle.new]. /// /// If the text is left aligned or justified, the left margin will be at the /// position specified by the `offset` argument's [Offset.dx] coordinate. /// /// If the text is right aligned or justified, the right margin will be at the /// position described by adding the [ParagraphConstraints.width] given to /// [Paragraph.layout], to the `offset` argument's [Offset.dx] coordinate. /// /// If the text is centered, the centering axis will be at the position /// described by adding half of the [ParagraphConstraints.width] given to /// [Paragraph.layout], to the `offset` argument's [Offset.dx] coordinate.À­ŠÀ­•À­”À­Ÿ À­§À­¦À­²�ôÀ¯dÀ¯d�–/// Draws a sequence of points according to the given [PointMode]. /// /// The `points` argument is interpreted as offsets from the origin. /// /// The `paint` is used for each point ([PointMode.points]) or line /// ([PointMode.lines] or [PointMode.polygon]), ignoring [Paint.style]. /// /// See also: /// /// * [drawRawPoints], which takes `points` as a [Float32List] rather than a /// [List].À¯oÀ¯zÀ¯yÀ¯„À¯’À¯‘À¯™ À¯ À¯ŸÀ¯ª‚OÀ±µÀ±µ�í/// Draws a sequence of points according to the given [PointMode]. /// /// The `points` argument is interpreted as a list of pairs of floating point /// numbers, where each pair represents an x and y offset from the origin. /// /// The `paint` is used for each point ([PointMode.points]) or line /// ([PointMode.lines] or [PointMode.polygon]), ignoring [Paint.style]. /// /// See also: /// /// * [drawPoints], which takes `points` as a [List] rather than a /// [List].À±ÃÀ±ÎÀ±ÍÀ±ØÀ±åÀ±äÀ±ì À±óÀ±òÀ±ý†;À·öÀ·ö…»/// Draws a set of [Vertices] onto the canvas as one or more triangles. /// /// The [Paint.color] property specifies the default color to use for the /// triangles. /// /// The [Paint.shader] property, if set, overrides the color entirely, /// replacing it with the colors from the specified [ImageShader], [Gradient], /// or other shader. /// /// The `blendMode` parameter is used to control how the colors in the /// `vertices` are combined with the colors in the `paint`. If there are no /// colors specified in `vertices` then the `blendMode` has no effect. If /// there are colors in the `vertices`, then the color taken from the /// [Paint.shader] or [Paint.color] in the `paint` is blended with the colors /// specified in the `vertices` using the `blendMode` parameter. For the /// purposes of this blending, the colors from the `paint` parameter are /// considered the source, and the colors from the `vertices` are considered /// the destination. [BlendMode.dst] ignores the `paint` and uses only the /// colors of the `vertices`; [BlendMode.src] ignores the colors of the /// `vertices` and uses only the colors in the `paint`. /// /// All parameters must not be null. /// /// See also: /// * [Vertices.new], which creates a set of vertices to draw on the canvas. /// * [Vertices.raw], which creates the vertices using typed data lists /// rather than unencoded lists. /// * [paint], Image shaders can be used to draw images on a triangular mesh.À¸À¸ À¸ À¸À¸!À¸ À¸+ À¸2À¸1À¸<–PÀÍÜÀÍÜ””/// Draws many parts of an image - the [atlas] - onto the canvas. /// /// This method allows for optimization when you want to draw many parts of an /// image onto the canvas, such as when using sprites or zooming. It is more efficient /// than using multiple calls to [drawImageRect] and provides more functionality /// to individually transform each image part by a separate rotation or scale and /// blend or modulate those parts with a solid color. /// /// The method takes a list of [Rect] objects that each define a piece of the /// [atlas] image to be drawn independently. Each [Rect] is associated with an /// [RSTransform] entry in the [transforms] list which defines the location, /// rotation, and (uniform) scale with which to draw that portion of the image. /// Each [Rect] can also be associated with an optional [Color] which will be /// composed with the associated image part using the [blendMode] before blending /// the result onto the canvas. The full operation can be broken down as: /// /// - Blend each rectangular portion of the image specified by an entry in the /// [rects] argument with its associated entry in the [colors] list using the /// [blendMode] argument (if a color is specified). In this part of the operation, /// the image part will be considered the source of the operation and the associated /// color will be considered the destination. /// - Blend the result from the first step onto the canvas using the translation, /// rotation, and scale properties expressed in the associated entry in the /// [transforms] list using the properties of the [Paint] object. /// /// If the first stage of the operation which blends each part of the image with /// a color is needed, then both the [colors] and [blendMode] arguments must /// not be null and there must be an entry in the [colors] list for each /// image part. If that stage is not needed, then the [colors] argument can /// be either null or an empty list and the [blendMode] argument may also be null. /// /// The optional [cullRect] argument can provide an estimate of the bounds of the /// coordinates rendered by all components of the atlas to be compared against /// the clip to quickly reject the operation if it does not intersect. /// /// An example usage to render many sprites from a single sprite atlas with no /// rotations or scales: /// /// ```dart /// class Sprite { /// Sprite(this.index, this.center); /// int index; /// Offset center; /// } /// /// class MyPainter extends CustomPainter { /// MyPainter(this.spriteAtlas, this.allSprites); /// /// // assume spriteAtlas contains N 10x10 sprites side by side in a (N*10)x10 image /// ui.Image spriteAtlas; /// List allSprites; /// /// @override /// void paint(Canvas canvas, Size size) { /// Paint paint = Paint(); /// canvas.drawAtlas(spriteAtlas, [ /// for (final Sprite sprite in allSprites) /// RSTransform.fromComponents( /// rotation: 0.0, /// scale: 1.0, /// // Center of the sprite relative to its rect /// anchorX: 5.0, /// anchorY: 5.0, /// // Location at which to draw the center of the sprite /// translateX: sprite.center.dx, /// translateY: sprite.center.dy, /// ), /// ], [ /// for (final Sprite sprite in allSprites) /// Rect.fromLTWH(sprite.index * 10.0, 0.0, 10.0, 10.0), /// ], null, null, null, paint); /// } /// /// // ... /// } /// ``` /// /// Another example usage which renders sprites with an optional opacity and rotation: /// /// ```dart /// class Sprite { /// Sprite(this.index, this.center, this.alpha, this.rotation); /// int index; /// Offset center; /// int alpha; /// double rotation; /// } /// /// class MyPainter extends CustomPainter { /// MyPainter(this.spriteAtlas, this.allSprites); /// /// // assume spriteAtlas contains N 10x10 sprites side by side in a (N*10)x10 image /// ui.Image spriteAtlas; /// List allSprites; /// /// @override /// void paint(Canvas canvas, Size size) { /// Paint paint = Paint(); /// canvas.drawAtlas(spriteAtlas, [ /// for (final Sprite sprite in allSprites) /// RSTransform.fromComponents( /// rotation: sprite.rotation, /// scale: 1.0, /// // Center of the sprite relative to its rect /// anchorX: 5.0, /// anchorY: 5.0, /// // Location at which to draw the center of the sprite /// translateX: sprite.center.dx, /// translateY: sprite.center.dy, /// ), /// ], [ /// for (final Sprite sprite in allSprites) /// Rect.fromLTWH(sprite.index * 10.0, 0.0, 10.0, 10.0), /// ], [ /// for (final Sprite sprite in allSprites) /// Colors.white.withAlpha(sprite.alpha), /// ], BlendMode.srcIn, null, paint); /// } /// /// // ... /// } /// ``` /// /// The length of the [transforms] and [rects] lists must be equal and /// if the [colors] argument is not null then it must either be empty or /// have the same length as the other two lists. /// /// See also: /// /// * [drawRawAtlas], which takes its arguments as typed data lists rather /// than objects.ÀÍë ÀÍòÀÍñÀÍüÀÎÀÎÀÎÀÎ*ÀÎ)ÀÎ4ÀÎBÀÎAÀÎMÀÎYÀÎXÀÎgÀÎnÀÎmÀÎ{ À΂ÀÎ�ÀÎ�š¿Àè Àè ˜ä/// Draws many parts of an image - the [atlas] - onto the canvas. /// /// This method allows for optimization when you want to draw many parts of an /// image onto the canvas, such as when using sprites or zooming. It is more efficient /// than using multiple calls to [drawImageRect] and provides more functionality /// to individually transform each image part by a separate rotation or scale and /// blend or modulate those parts with a solid color. It is also more efficient /// than [drawAtlas] as the data in the arguments is already packed in a format /// that can be directly used by the rendering code. /// /// A full description of how this method uses its arguments to draw onto the /// canvas can be found in the description of the [drawAtlas] method. /// /// The [rstTransforms] argument is interpreted as a list of four-tuples, with /// each tuple being ([RSTransform.scos], [RSTransform.ssin], /// [RSTransform.tx], [RSTransform.ty]). /// /// The [rects] argument is interpreted as a list of four-tuples, with each /// tuple being ([Rect.left], [Rect.top], [Rect.right], [Rect.bottom]). /// /// The [colors] argument, which can be null, is interpreted as a list of /// 32-bit colors, with the same packing as [Color.value]. If the [colors] /// argument is not null then the [blendMode] argument must also not be null. /// /// An example usage to render many sprites from a single sprite atlas with no rotations /// or scales: /// /// ```dart /// class Sprite { /// Sprite(this.index, this.center); /// int index; /// Offset center; /// } /// /// class MyPainter extends CustomPainter { /// MyPainter(this.spriteAtlas, this.allSprites); /// /// // assume spriteAtlas contains N 10x10 sprites side by side in a (N*10)x10 image /// ui.Image spriteAtlas; /// List allSprites; /// /// @override /// void paint(Canvas canvas, Size size) { /// // For best advantage, these lists should be cached and only specific /// // entries updated when the sprite information changes. This code is /// // illustrative of how to set up the data and not a recommendation for /// // optimal usage. /// Float32List rectList = Float32List(allSprites.length * 4); /// Float32List transformList = Float32List(allSprites.length * 4); /// for (int i = 0; i < allSprites.length; i++) { /// Sprite sprite = allSprites[i]; /// final double rectX = sprite.index * 10.0; /// rectList[i * 4 + 0] = rectX; /// rectList[i * 4 + 1] = 0.0; /// rectList[i * 4 + 2] = rectX + 10.0; /// rectList[i * 4 + 3] = 10.0; /// /// // This example sets the RSTransform values directly for a common case of no /// // rotations or scales and just a translation to position the atlas entry. For /// // more complicated transforms one could use the RSTransform class to compute /// // the necessary values or do the same math directly. /// transformList[i * 4 + 0] = 1.0; /// transformList[i * 4 + 1] = 0.0; /// transformList[i * 4 + 2] = sprite.center.dx - 5.0; /// transformList[i * 4 + 3] = sprite.center.dy - 5.0; /// } /// Paint paint = Paint(); /// canvas.drawRawAtlas(spriteAtlas, transformList, rectList, null, null, null, paint); /// } /// /// // ... /// } /// ``` /// /// Another example usage which renders sprites with an optional opacity and rotation: /// /// ```dart /// class Sprite { /// Sprite(this.index, this.center, this.alpha, this.rotation); /// int index; /// Offset center; /// int alpha; /// double rotation; /// } /// /// class MyPainter extends CustomPainter { /// MyPainter(this.spriteAtlas, this.allSprites); /// /// // assume spriteAtlas contains N 10x10 sprites side by side in a (N*10)x10 image /// ui.Image spriteAtlas; /// List allSprites; /// /// @override /// void paint(Canvas canvas, Size size) { /// // For best advantage, these lists should be cached and only specific /// // entries updated when the sprite information changes. This code is /// // illustrative of how to set up the data and not a recommendation for /// // optimal usage. /// Float32List rectList = Float32List(allSprites.length * 4); /// Float32List transformList = Float32List(allSprites.length * 4); /// Int32List colorList = Int32List(allSprites.length); /// for (int i = 0; i < allSprites.length; i++) { /// Sprite sprite = allSprites[i]; /// final double rectX = sprite.index * 10.0; /// rectList[i * 4 + 0] = rectX; /// rectList[i * 4 + 1] = 0.0; /// rectList[i * 4 + 2] = rectX + 10.0; /// rectList[i * 4 + 3] = 10.0; /// /// // This example uses an RSTransform object to compute the necessary values for /// // the transform using a factory helper method because the sprites contain /// // rotation values which are not trivial to work with. But if the math for the /// // values falls out from other calculations on the sprites then the values could /// // possibly be generated directly from the sprite update code. /// final RSTransform transform = RSTransform.fromComponents( /// rotation: sprite.rotation, /// scale: 1.0, /// // Center of the sprite relative to its rect /// anchorX: 5.0, /// anchorY: 5.0, /// // Location at which to draw the center of the sprite /// translateX: sprite.center.dx, /// translateY: sprite.center.dy, /// ); /// transformList[i * 4 + 0] = transform.scos; /// transformList[i * 4 + 1] = transform.ssin; /// transformList[i * 4 + 2] = transform.tx; /// transformList[i * 4 + 3] = transform.ty; /// /// // This example computes the color value directly, but one could also compute /// // an actual Color object and use its Color.value getter for the same result. /// // Since we are using BlendMode.srcIn, only the alpha component matters for /// // these colors which makes this a simple shift operation. /// colorList[i] = sprite.alpha << 24; /// } /// Paint paint = Paint(); /// canvas.drawRawAtlas(spriteAtlas, transformList, rectList, colorList, BlendMode.srcIn, null, paint); /// } /// /// // ... /// } /// ``` /// /// See also: /// /// * [drawAtlas], which takes its arguments as objects rather than typed /// data lists.Àè² Àè¹Àè¸ÀèÃÀèÐÀèÏÀèâÀèïÀèîÀèùÀéÀéÀéÀéÀéÀé*Àé1Àé0Àé> ÀéEÀéDÀéS�8Àê<Àê<€×/// Draws a shadow for a [Path] representing the given material elevation. /// /// The `transparentOccluder` argument should be true if the occluding object /// is not opaque. /// /// The arguments must not be null.ÀêG ÀêMÀêLÀêR ÀêYÀêXÀê_ÀêgÀêfÀêqÀêwÀêvÀê�ÀOiÀêšÀêšÀêß��ÀêßÀêßÀêìÀêíÀêþÀêýÀëÀëÀëÀîr!ÀîŠÀîŠHÀìs€þÀìôÀìôÀíÀíÀíÀí+ Àí3Àí2Àí< ÀíDÀíCÀíL ÀíTÀíSÀí^ ÀífÀíeÀìsÀìtÀìzÀì¿Àì€Àì{ÀìˆÀì¾Àì‰Àì‘Àì˜Àì�Àì™Àì Àì¨Àì°Àì¸ÀìÀÀìâÀìÌÀìÆÀìÎÀî˜oÀïÀïÀî˜Àî™Àî¤Àî¥Àî«ÀîÈÀî±Àî¬Àî¹ÀîÇÀîºÀîÁÀîÆÀîÂÀîÉÀîîÀîÐÀîÊÀîÒÀîèÀîâÀîêÀï �ÀïÀïÀï Àï%Àï$Àð+�-Àð<Àð<ÀðF ÀðMÀðLÀðT Àð[ÀðZÀð+Àð,Àñ\€¹ÀñÌÀñÌÀñäÀñôÀñóÀòÀò Àò Àñ\Àñ]ÀñcÀñ�ÀñiÀñdÀñqÀñ�ÀñrÀñyÀñ~ÀñzÀñ�Àñ‰Àñ‘ÀñºÀñ˜Àñ’ÀñšÀò�Àò¥Àò¥Àòµ Àò½Àò¼ÀòÆ ÀòÎÀòÍÀòÖ ÀòÞÀòÝÀòè ÀòðÀòïÀòûÀó Àó ÀóÀó&Àó%ÀòÀòÀò ÀòmÀò&Àò!Àò.ÀòlÀò/Àò6Àò;Àò7Àò>ÀòFÀòNÀòVÀò^ÀòfÀònÀò“ÀòzÀòtÀò|Àó8uÀó£Àó£Àó8Àó9ÀóDÀóEÀóKÀóhÀóQÀóLÀóYÀógÀóZÀóaÀófÀóbÀóiÀó‘ÀópÀójÀórÀó‹Àó…Àó�À󱀓Àô*Àô*Àô9 Àô>Àô=Àó±Àó²Àó½Àó¾ÀóÄÀóèÀóÊÀóÅÀóÒÀóçÀóÓÀóÚÀóßÀóÛÀóâÀóéÀôÀóðÀóêÀóòÀôÀô ÀôÀôHÀô¸Àô¸ÀôHÀôIÀôTÀôUÀô[ÀôyÀôbÀô\ÀôjÀôxÀôkÀôrÀôwÀôsÀôzÀô§Àô�Àô{ÀôƒÀô¡Àô›Àô£ÀôË€�ÀõHÀõHÀõR ÀõZÀõYÀõ] ÀõeÀõdÀôËÀôÌÀô×ÀôØÀôÞÀõ ÀôäÀôßÀôìÀõ ÀôíÀôôÀôùÀôõÀôüÀõÀõ Àõ6ÀõÀõ ÀõÀõ0Àõ*Àõ2ÀõlHÀõ}Àõ}Àõƒ Àõ‹ÀõŠÀõ� Àõ˜Àõ—ÀõlÀõmÀõ¸€ŠÀö%Àö%Àö, Àö4Àö3Àö7 Àö?Àö>Àõ¸Àõ¹Àõ¿ÀõìÀõÅÀõÀÀõÍÀõëÀõÎÀõÕÀõÚÀõÖÀõÝÀõåÀõíÀöÀõôÀõîÀõöÀö ÀöÀöÀöF€‰Àö¸Àö¸Àö¿ÀöÇÀöÆÀöFÀöGÀöRÀöSÀöYÀö~Àö_ÀöZÀögÀö}ÀöhÀöoÀötÀöpÀöwÀöÀö¦Àö†Àö€ÀöˆÀö ÀöšÀö¢ÀöÓ€“À÷KÀ÷KÀ÷P À÷XÀ÷WÀ÷[ À÷cÀ÷bÀöÓÀöÔÀößÀöàÀöæÀ÷ÀöìÀöçÀöôÀ÷ÀöõÀöüÀ÷ÀöýÀ÷À÷ À÷À÷9À÷À÷À÷À÷3À÷-À÷5À÷j€²À÷{À÷{À÷…À÷’À÷‘À÷jÀ÷kÀø {Àø{Àø{Àø†Àø“Àø’Àø Àø!Àø'ÀøLÀø-Àø(Àø5ÀøKÀø6Àø=ÀøBÀø>ÀøEÀøMÀøiÀøTÀøNÀøVÀøŸ€�Àø·Àø·ÀøŸÀø Àù0€�ÀùŽÀùŽÀùœÀù©Àù¨Àù0Àù1Àù7Àù\Àù=Àù8ÀùEÀù[ÀùFÀùMÀùRÀùNÀùUÀù]Àù|ÀùdÀù^ÀùfÀùµ�ÖÀùÆÀùÆÀùÏ ÀùÕÀùÔÀùÛ ÀùãÀùâÀùýÀúÀúÀùµÀù¶ÀùëÀùñÀùòÀúÀû��Àü)Àü)Àü8 Àü@Àü?ÀüI ÀüQÀüPÀüY ÀüaÀü`Àük ÀüsÀürÀü~ ÀüƒÀü‚ÀüŽÀü”Àü“Àû�Àû�Àû–ÀûàÀûœÀû—Àû¤ÀûßÀû¥Àû¬Àû±Àû­Àû´Àû¼ÀûÄÀûÌÀûÔÀûÛÀûáÀüÀûíÀûçÀûïÀü ÀüÀüÀü¨€œÀü¹Àü¹Àüà ÀüÊÀüÉÀüÑÀü×ÀüÖÀü¨Àü©ÀüäÀýH€‘Àý©Àý©Àý´ÀýÁÀýÀÀýÇÀýÍÀýÌÀýHÀýIÀýOÀýzÀýUÀýPÀý]ÀýyÀý^ÀýeÀýjÀýfÀýmÀýuÀý{Àý—Àý‚Àý|Àý„ÀýÝ€ÐÀýîÀýîÀþÀþÀþÀþÀþ$Àþ#ÀýÝÀýÞÀþ1Àþ±€¹Àÿ!Àÿ!Àÿ4"ÀÿJÀÿIÀÿXÀÿ^Àÿ]Àþ±Àþ²Àþ¸ÀþêÀþ¾Àþ¹ÀþÆÀþéÀþÇÀþÎÀþÓÀþÏÀþÖÀþÝÀþâÀþÞÀþåÀþëÀÿÀþòÀþìÀþôÀÿnvÀÿÀÿÀÿˆ ÀÿŽÀÿ�Àÿ”ÀÿšÀÿ™ÀÿnÀÿoÀÿ§Àÿ耕ÀOÀOÀYÀfÀeÀkÀqÀpÀÿèÀÿéÀÿïÀ!ÀÿõÀÿðÀÿýÀ ÀÿþÀÀ ÀÀ ÀÀÀÀÀ"À=À)À#À+À�€ÁÀ’À’À�À‚ÀF€ŒÀªÀªÀ¾ÀËÀÊÀFÀGÀMÀrÀSÀNÀ[ÀqÀ\ÀcÀhÀdÀkÀsÀ˜ÀzÀtÀ|ÀÖ€ÍÀçÀçÀÖÀ×À§€˜ÀÀÀ+À8À7À§À¨À®ÀÓÀ´À¯À¼ÀÒÀ½ÀÄÀÉÀÅÀÌÀÔÀÿÀÛÀÕÀÝÀCpÀTÀTÀ^ ÀeÀdÀkÀvÀuÀCÀDÀ·€•À'À'À2 À7À6À= ÀBÀAÀ·À¸À¾ÀêÀÄÀ¿ÀÌÀéÀÍÀÔÀÙÀÕÀÜÀäÀëÀÀòÀìÀôÀÀ ÀÀP€ÊÀaÀaÀj ÀrÀqÀu À}À|À€ À‡À†ÀPÀQÀ�À©À©À¸ ÀÀÀ¿ÀÇ ÀÏÀÎÀÖ ÀÞÀÝÀå ÀíÀìÀôÀÀÀÀÀÀÀÀ%ÀrÀ+À&À3ÀqÀ4À;À@À<ÀCÀKÀSÀ[ÀcÀkÀsÀ—ÀÀyÀ�À1ZÀBÀBÀL ÀSÀRÀ1À2À�€ŸÀòÀòÀýÀ À ÀÀ$À#À�À�À–ÀÃÀœÀ—À¤ÀÂÀ¥À¬À±À­À´À¼ÀÄÀàÀËÀÅÀÍÀ2�ÀCÀCÀL ÀRÀQÀW À^À]À2À3ÀG�ÀÒÀÒÀá ÀéÀèÀò ÀúÀùÀ  À À À  À À À 'À 7À 6À HÀ RÀ QÀGÀHÀNÀ›ÀTÀOÀ\ÀšÀ]ÀdÀiÀeÀlÀtÀ|À„ÀŒÀ”ÀœÀÀÀ¨À¢ÀªÀ d€žÀ uÀ uÀ  À †À …À Œ À “À ’À dÀ eÀ €ºÀ qÀ qÀ |À ‰À ˆÀ �À ŸÀ žÀ ¬À ¶À µÀ À À À BÀ À À À AÀ À #À (À $À +À 3À ;À CÀ _À JÀ DÀ LÀ Ä€äÀ ÕÀ ÕÀ à À çÀ æÀ í À ôÀ óÀ ú À À À ÄÀ ÅÀ ¬€õÀ )À )À :À GÀ FÀ QÀ ^À ]À hÀ xÀ wÀ ‰À “À ’À ¬À ­À ³À ðÀ ¹À ´À ÁÀ ïÀ ÂÀ ÉÀ ÎÀ ÊÀ ÑÀ ÙÀ áÀ éÀ ñÀ À ýÀ ÷À ÿÀ ¥€ÒÀ ¶À ¶À ÈÀ ×À ÖÀ å À ìÀ ëÀ ¥À ¦À {€üÀ þÀ þÀ"À,À+À>ÀNÀMÀ_ÀiÀhÀ {À |À ‚À ¾À ˆÀ ƒÀ �À ½À ‘À ˜À �À ™À  À §À ¬À ¨À ¯À ·À ¿À ìÀ ËÀ ÅÀ ÍÀ{�ÀŒÀŒÀ• À›ÀšÀ  À§À¦À{À|À��ÀÀÀ* À2À1À; ÀCÀBÀK ÀSÀRÀ] ÀeÀdÀpÀ€ÀÀ‘À›ÀšÀ�À‘À—ÀäÀ�À˜À¥ÀãÀ¦À­À²À®ÀµÀ½ÀÅÀÍÀÕÀÝÀåÀ ÀñÀëÀóÀ­€¨À¾À¾ÀÉÀÑÀÐÀÓ ÀÛÀÚÀâ ÀéÀèÀ­À®ÀY€þÀÞÀÞÀïÀ÷ÀöÀýÀÀÀ ÀÀÀÀ.À-À?ÀIÀHÀYÀZÀ`À¥ÀfÀaÀnÀ¤ÀoÀvÀ{ÀwÀ~À†ÀŽÀ–ÀžÀ¦ÀÌÀ²À¬À´À[�EÀlÀlÀt ÀzÀyÀÀ‡À†À’ÀšÀ™À¥À«ÀªÀµ À¼À»À[À\À¤�±À†À† À” ÀœÀ›À¥ À­À¬Àµ À½À¼ÀÇ ÀÏÀÎÀÚÀâÀáÀñÀùÀøÀÀÀ ÀÀ,À+À=ÀGÀFÀ¤À¥À«ÀYÀ¶À±À¾ÀUÀÆÀÍÀÒÀÎÀÛÀéÀ÷ÀÀÀ!À/À;ÀIÀZÀtÀaÀ[ÀcÀYxÀjÀjÀs ÀyÀxÀ~ À…À„ÀYÀZÀÕ€¾ÀFÀFÀPÀ]À\ÀbÀrÀqÀÀ‰ÀˆÀÕÀÖÀÜÀÀâÀÝÀêÀÀëÀòÀ÷ÀóÀúÀÀÀÀ ÀÀÀ4À ÀÀ"À—�©À¨À¨À² À¹À¸À¿ ÀÇÀÆÀÎ ÀÕÀÔÀ—À˜ÀD�*ÀÛÀÛÀë ÀóÀòÀýÀÀÀ ÀÀÀÀ)À(À:ÀDÀCÀRÀWÀVÀDÀEÀKÀ ÀSÀLÀ[ÀŸÀ\ÀcÀhÀdÀkÀrÀwÀsÀzÀ‚ÀŠÀ’ÀšÀ¡ÀÆÀ­À§À¯Àr‚2ÀƒÀƒÀ‘ À˜À—ÀžÀ¤À£À¨À®À­À² À¹À¸ÀrÀsÀ¨‚>ÀÇÀÇ ÀÛ ÀãÀâÀíÀõÀôÀ À ÀÀÀÀÀ)À1À0À?ÀGÀFÀS À[ÀZÀfÀnÀmÀ{ÀƒÀ‚À‘À¡À À²À¼À»ÀÊÀÏÀÎ À¨À©À¯À‘À¼ÀµÀÄÀ�ÀÌÀÓÀØÀÔÀáÀèÀíÀéÀöÀÀÀ À.À<ÀJÀXÀfÀtÀ‚À’À²À™À“À›Àê‚DÀûÀûÀ ÀÀÀ ÀÀÀ#À)À(À- À4À3ÀêÀëÀ 2‚JÀ!QÀ!Q À!e À!mÀ!lÀ!wÀ!À!~À!ŽÀ!–À!•À!¤À!¬À!«À!¼À!ÄÀ!ÃÀ!ÕÀ!ÝÀ!ÜÀ!é À!ñÀ!ðÀ!üÀ"À"À"À"À"À"'À"7À"6À"HÀ"RÀ"QÀ"`À"eÀ"d À 2À 3À 9À!À FÀ ?À NÀ!À VÀ ]À bÀ ^À kÀ rÀ wÀ sÀ €À ŽÀ œÀ ªÀ ¸À ÆÀ ÔÀ âÀ ðÀ þÀ! À!À!<À!#À!À!%À"€€„À"‘À"‘À"�À"¦À"¥À"€À"�À#€‰À#lÀ#lÀ#yÀ#‰À#ˆÀ#À# À#À#;À#À#À#À#:À#À#%À#*À#&À#-À#4À#9À#5À#<À#ZÀ#CÀ#=À#EÀ#•�GÀ#¦À#¦À#´À#¿À#¾À#É À#ÑÀ#ÐÀ#•À#–À$à€±À$ñÀ$ñÀ$üÀ%À%À%À%À%À%& À%-À%,À$àÀ$áÀ%•�À%¦À%¦À%´À%¿À%¾À%ÉÀ%ÖÀ%ÕÀ%Ý À%äÀ%ãÀ%•À%–À&­€èÀ' À' À'1À'AÀ'@À'RÀ'\À'[À'j À'oÀ'nÀ'}À'ŠÀ'‰À&­À&®À&´À&ðÀ&ºÀ&µÀ&ÂÀ&ïÀ&ÃÀ&ÊÀ&ÏÀ&ËÀ&ÒÀ&ÚÀ&âÀ&éÀ&ñÀ'À&øÀ&òÀ&úÀ'™€ÈÀ'ªÀ'ªÀ'·À'ÁÀ'ÀÀ'ÊÀ'ÕÀ'ÔÀ'ß À'æÀ'åÀ'™À'šÀ(e€ûÀ(êÀ(êÀ(ýÀ)À)À) À)À)À)'À)7À)6À)HÀ)RÀ)QÀ(eÀ(fÀ(lÀ(¯À(rÀ(mÀ(zÀ(®À({À(‚À(‡À(ƒÀ(ŠÀ(‘À(–À(’À(™À( À(¨À(°À(ØÀ(¼À(¶À(¾À)dˆ!À)uÀ)uÀ)„ À)‹À)ŠÀ)•À)¨À)§À)·À)ÃÀ)ÂÀ)ÍÀ)ÛÀ)ÚÀ)æÀ)òÀ)ñÀ*À*À*À* À*À*À)dÀ)eÀ1‰„ŒÀ1šÀ1šÀ1¬ À1³À1²À1½À1ÊÀ1ÉÀ1ÜÀ1éÀ1èÀ1óÀ1ÿÀ1þÀ2 À2À2À2$À2+À2*À28 À2?À2>À1‰À1ŠÀ6�âÀ7 À7 À7À7)À7(À7:À7DÀ7CÀ7RÀ7WÀ7VÀ7n À7vÀ7uÀ7€À7�À7ŒÀ7ŸÀ7¬À7«À7¶À7ÂÀ7ÁÀ7Í À7ÒÀ7ÑÀ7àÀ7îÀ7íÀ6À6À6 À6×À6-À6&À65À6ÓÀ6=À6DÀ6IÀ6EÀ6RÀ6`À6nÀ6{À6‚À6‡À6ƒÀ6�À6žÀ6¬À6ºÀ6ÇÀ6ØÀ6ôÀ6ßÀ6ÙÀ6áÀ7ÿ€¸À8À8À8 À8!À8 À8& À8-À8,À83À8;À8:À8EÀ8KÀ8JÀ7ÿÀ8À8»€ìÀ9=À9=À9NÀ9[À9ZÀ9d À9iÀ9hÀ9sÀ9{À9zÀ9‰À9�À9ŽÀ8»À8¼À8ÂÀ9À8ÈÀ8ÃÀ8ÐÀ9À8ÑÀ8ØÀ8ÝÀ8ÙÀ8àÀ8çÀ8ìÀ8èÀ8ïÀ8÷À8ÿÀ9À9+À9À9 À9À9«KÀ9¾À9¾À9«À9¬À:hЏÀ;ÆÀ;Æ�N/// An object representing a sequence of recorded graphical operations. /// /// To create a [Picture], use a [PictureRecorder]. /// /// A [Picture] can be placed in a [Scene] using a [SceneBuilder], via /// the [SceneBuilder.addPicture] method. A [Picture] can also be /// drawn into a [Canvas], using the [Canvas.drawPicture] method.À;Ò�À<âÀ<â€è/// A callback that is invoked to report a picture creation. /// /// It's preferred to use [MemoryAllocations] in flutter/foundation.dart /// than to use [onCreate] directly because [MemoryAllocations] /// allows multiple callbacks.À<ï�À>À>€ë/// A callback that is invoked to report the picture disposal. /// /// It's preferred to use [MemoryAllocations] in flutter/foundation.dart /// than to use [onDispose] directly because [MemoryAllocations] /// allows multiple callbacks.ÀCd€ÇÀDÀD€§/// Whether this reference to the underlying picture is [dispose]d. /// /// This only returns a valid value if asserts are enabled, and must not be /// used otherwise.ÀD/€ïÀE ÀE €É/// Returns the approximate number of bytes allocated for this object. /// /// The actual size of this picture may be larger, particularly if it contains /// references to image or other large objects.À>�DÀ?5À?5� /// Creates an image from this picture. /// /// The returned image will be `width` pixels wide and `height` pixels high. /// The picture is rasterized within the 0 (left), 0 (top), `width` (right), /// `height` (bottom) bounds. Content outside these bounds is clipped.À?= À?BÀ?AÀ?H À?MÀ?LÀ?Xƒ‚ÀB·ÀB·ƒ6/// Synchronously creates a handle to an image of this picture. /// /// {@template dart.ui.painting.Picture.toImageSync} /// The returned image will be `width` pixels wide and `height` pixels high. /// The picture is rasterized within the 0 (left), 0 (top), `width` (right), /// `height` (bottom) bounds. Content outside these bounds is clipped. /// /// The image object is created and returned synchronously, but is rasterized /// asynchronously. If the rasterization fails, an exception will be thrown /// when the image is drawn to a [Canvas]. /// /// If a GPU context is available, this image will be created as GPU resident /// and not copied back to the host. This means the image will be more /// efficient to draw. /// /// If no GPU context is available, the image will be rasterized on the CPU. /// {@endtemplate}ÀBà ÀBÈÀBÇÀBÎ ÀBÓÀBÒÀBÞ€‚ÀCVÀCVn/// Release the resources used by this object. The object is no longer usable /// after this method is called.ÀE"ˆÂÀE-ÀE-ÀEt€µÀFÀF$ÀF%ÀF&ÀF%€™/// This class is created by the engine, and should not be instantiated /// or extended directly. /// /// To create a [Picture], use a [PictureRecorder].ÀLÀL ÀL ÀLÀL"€ýÀL7ÀL7ÀL"ÀL#ÀM#€�ÀMžÀMžÀM#ÀM$ÀM/ÀM0ÀM6ÀMUÀM>ÀM7ÀMFÀMTÀMGÀMNÀMSÀMOÀMVÀM‰ÀM]ÀMWÀM_ÀMƒÀM}ÀM…ÀF-�½ÀFGÀFGÀFO ÀFTÀFSÀFZ ÀF_ÀF^ÀF-ÀF.ÀGÀH]ÀH]ÀHf ÀHkÀHjÀHq ÀHvÀHuÀH}ÀH•ÀH”ÀGîÀGïÀGõÀH,ÀGýÀGöÀHÀH+ÀHÀH ÀHÀHÀHÀHÀH%ÀH-ÀHHÀH4ÀH.ÀH6ÀH¢�5ÀH´ÀH´ÀHÀ ÀHÅÀHÄÀHË ÀHÐÀHÏÀH¢ÀH£ÀIÛ€£ÀJIÀJIÀJV ÀJ[ÀJZÀJa ÀJfÀJeÀJmÀJuÀJtÀIÛÀIÜÀIâÀJÀIèÀIãÀIðÀJÀIñÀIøÀIýÀIùÀJÀJÀJÀJÀJ7ÀJÀJÀJ!ÀJ‚€°ÀJ“ÀJ“ÀJ‚ÀJƒÀK6€ÍÀKøÀKøk/// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).ÀK¦ÀK§ÀK­ÀKÊÀK³ÀK®ÀK»ÀKÉÀK¼ÀKÃÀKÈÀKÄÀKËÀKæÀKÒÀKÌÀKÔÀM·+ÀMÊÀMÊÀM·ÀM¸ÀMæ‡UÀQ�ÀQ�ƒ‹/// Records a [Picture] containing a sequence of graphical operations. /// /// To begin recording, construct a [Canvas] to record the commands. /// To end recording, use the [PictureRecorder.endRecording] method. /// /// ## Use with the Flutter framework /// /// The Flutter framework's [RendererBinding] provides a hook for creating /// [PictureRecorder] objects ([RendererBinding.createPictureRecorder]) that /// allows tests to hook into the scene creation logic. When creating a /// [PictureRecorder] and [Canvas] that will be used with a [PictureLayer] as /// part of the [Scene] in the context of the Flutter framework, consider /// calling [RendererBinding.createPictureRecorder] instead of calling the /// [PictureRecorder.new] constructor directly. /// /// This does not apply when using a canvas to generate a bitmap for other /// purposes, e.g. for generating a PNG image using [Picture.toImage].ÀQ•€×ÀRAÀRAÀRP€�/// Creates a new idle PictureRecorder. To associate it with a /// [Canvas] and begin recording, pass this [PictureRecorder] to the /// [Canvas] constructor.ÀRp�™ÀSýÀSý�u/// Whether this object is currently recording commands. /// /// Specifically, this returns true if a [Canvas] object has been /// created to record commands and recording has not yet ended via a /// call to [endRecording], and false if either this /// [PictureRecorder] has not yet been associated with a [Canvas], /// or the [endRecording] method has already been called.ÀT �,ÀU*ÀU*� /// Finishes recording graphical operations. /// /// Returns a picture containing the graphical operations that have been /// recorded thus far. After calling this function, both the picture recorder /// and the canvas objects are invalid and cannot be used further.ÀU=„ÀUHÀUHÀUŸ2ÀUŸÀUŸÀUµÀXðÀXÿÀXÿÀV:4ÀVOÀVOÀV:ÀV;ÀUÕaÀV'ÀV'ÀUÕÀUÖÀUÜÀUòÀUâÀUÝÀUêÀUñÀUëÀUóÀVÀUúÀUôÀUüÀVr�æÀV†ÀV†ÀVrÀVsÀX\€�ÀXÃÀXÃÀXÑÀXáÀXàÀX\ÀX]ÀXcÀXˆÀXiÀXdÀXqÀX‡ÀXrÀXyÀX~ÀXzÀX�ÀX‰ÀX±ÀX�ÀXŠÀX’ÀY LÀYÀYÀY ÀY ÀY[šíÀY¶ÀY¶T/// A single shadow. /// /// Multiple shadows are stacked together in a [TextStyle].ÀYÁ‚PÀ[LÀ[LÀ[R�p/// Construct a shadow. /// /// The default shadow is a black shadow with zero offset and zero blur. /// Default shadows should be completely covered by the casting element, /// and not be visible. /// /// Transparency should be adjusted through the [color] alpha. /// /// Shadow order matters due to compositing multiple translucent objects not /// being commutative.À[Y(À[_À[^À[‡À[�À[ŒÀ[¦À[¬À[«À[fÀ[lÀ[qÀ[€À[rÀ[•À[›À[œÀ[¸À[ÄÀ[ÊÀ[ÜÀ\À[ÖÀ[ËÀ[ÙÀ[Þ À\,À\&À\&À\7À\i&À\zÀ\zÀ\�À\“'À\¤À\¤À\¶À\´À\¹À\¾#À\ÏÀ\ÏÀ\ÝÀ\ÛÀ\àÀ\å#À\öÀ\öÀ]À]À]À] &À]À]À].À],À]1À]7€¼À]îÀ]/// Color that the shadow will be drawn with. /// /// The shadows are shapes composited directly over the base canvas, and do not /// represent optical occlusion.À]ø�4À_&À_&�/// The displacement of the shadow from the casting element. /// /// Positive x/y offsets will shift the shadow to the right and down, while /// negative offsets shift the shadow to the left and up. The offsets are /// relative to the position of the element that is casting it.À_1iÀ_�À_�O/// The standard deviation of the Gaussian to convolve with the shadow's shape.Àa€®ÀaŸÀaŸn/// The [blurRadius] in sigmas instead of logical pixels. /// /// See the sigma argument to [MaskFilter.blur].ÀoGÀo1Ào1ÀoÀoÀ_Ÿ�|À`¾À`¾h/// Converts a blur radius in pixels to sigmas. /// /// See the sigma argument to [MaskFilter.blur]. ///À`Ó À`ÛÀ`ÚÀaÑ‚‹ÀcáÀcá�õ/// Create the [Paint] object that corresponds to this shadow description. /// /// The [offset] is not represented in the [Paint] object. /// To honor this as well, the shape should be translated by [offset] before /// being filled using this [Paint]. /// /// This class does not provide a way to disable shadows to avoid /// inconsistencies in shadow blur rendering, primarily as a method of /// reducing test flakiness. [toPaint] should be overridden in subclasses to /// provide this functionality.Àd`€ÜÀdÇÀdÇ[/// Returns a new shadow with its [offset] and [blurRadius] scaled by the given /// factor.ÀdÍ ÀdÕÀdÔÀe@…×ÀiJÀiJƒÔ/// Linearly interpolate between two shadows. /// /// If either shadow is null, this function linearly interpolates from /// a shadow that matches the other shadow in color but has a zero /// offset and a zero blurRadius. /// /// {@template dart.ui.shadow.lerp} /// The `t` argument represents position on the timeline, with 0.0 meaning /// that the interpolation has not started, returning `a` (or something /// equivalent to `a`), 1.0 meaning that the interpolation has finished, /// returning `b` (or something equivalent to `b`), and values in between /// meaning that the interpolation is at the relevant point on the timeline /// between `a` and `b`. The interpolation can be extrapolated beyond 0.0 and /// 1.0, so negative values and values greater than 1.0 are valid (and can /// easily be generated by curves such as [Curves.elasticInOut]). /// /// Values for `t` are usually obtained from an [Animation], such as /// an [AnimationController]. /// {@endtemplate}ÀiO ÀiXÀiWÀiZ ÀicÀibÀieÀimÀilÀkƒÀkàÀkà€¥/// Linearly interpolate between two lists of shadows. /// /// If the lists differ in length, excess items are lerped with null. /// /// {@macro dart.ui.shadow.lerp}ÀkéÀkøÀk÷ÀkúÀl ÀlÀl ÀlÀlÀn&€óÀn@Àn@ÀnC ÀnKÀnJÀn&Àn'Àp"ƒÔÀp2Àp2ÀpAÀpPÀpOÀsúLÀt Àt ÀsúÀsûÀtJŽÌÀuÀu€¯/// A handle to a read-only byte buffer that is managed by the engine. /// /// The creator of this object is responsible for calling [dispose] when it is /// no longer needed.Àu: Àu:ÀuIÀuJÀuKÀuJÀuL ÀuRÀuQÀ~M À~QÀ~QÀ~]À~bÀ~bÀ~sÀ}üNÀ~8À~81/// The length, in bytes, of the underlying data.À~}�ÀÀy/// Whether [dispose] has been called. /// /// This must only be used when asserts are enabled. Otherwise, it will throw.Àu^�gÀuàÀuà^/// Creates a copy of the data from a [Uint8List] suitable for internal use /// in the engine.ÀuîÀuùÀuøÀvɃGÀwaÀwar/// Create a buffer from the asset with key [assetKey]. /// /// Throws an [Exception] if the asset does not exist.ÀwkÀwsÀwrÀz�÷Àz£Àz£i/// Create a buffer from the file with [path]. /// /// Throws an [Exception] if the asset does not exist.Àz° Àz¸Àz·À|€•À|tÀ|tÀ|zÀ|…À|„À|ŠÀ|›À|šÀ|À|À|À|>À|À|À|&À|=À|'À|/À|7À|?À|_À|FÀ|@À|HÀ|¨€§À}À}À}%À}-À},À}6À}FÀ}EÀ|¨À|©À|¯À|×À|·À|°À|¿À|ÖÀ|ÀÀ|ÈÀ|ÐÀ|ØÀ}À|ßÀ|ÙÀ|áÀ}S€¥À}ÀÀ}ÀÀ}ÎÀ}ÖÀ}ÕÀ}ßÀ}ïÀ}îÀ}SÀ}TÀ}ZÀ}‚À}bÀ}[À}jÀ}�À}kÀ}sÀ}{À}ƒÀ}«À}ŠÀ}„À}ŒÀ˜‚£À�³À�³‚/// Release the resources used by this object. The object is no longer usable /// after this method is called. /// /// The underlying memory allocated by this object will be retained beyond /// this call if it is still needed by another object that has not been /// disposed. For example, an [ImageDescriptor] that has not been disposed /// may still retain a reference to the memory from this buffer even if it /// has been disposed. Freeing that memory requires disposing all resources /// that may still hold it.À‚?€ÕÀƒ Àƒ k/// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).À‚¯À‚°À‚¶À‚ÓÀ‚¼À‚·À‚ÄÀ‚ÒÀ‚ÅÀ‚ÌÀ‚ÑÀ‚ÍÀ‚ÔÀ‚÷À‚ÛÀ‚ÕÀ‚ÝÀƒ‰‰ÀƒÝÀƒÝ€µ/// A descriptor of data that can be turned into an [Image] via a [Codec]. /// /// Use this class to determine the height, width, and byte size of image data /// before decoding it.Àƒñ‚çÀ†À†(À†)À†,À†)�Ð/// Creates an image descriptor from raw image pixels. /// /// The `pixels` parameter is the pixel data. They are packed in bytes in the /// order described by `pixelFormat`, then grouped in rows, from left to right, /// then top to bottom. /// /// The `rowBytes` parameter is the number of bytes consumed by each row of /// pixels in the data buffer. If unspecified, it defaults to `width` multiplied /// by the number of bytes per pixel in the provided `format`.À†2À†CÀ†BÀ†PÀ†^À†]À†hÀ†vÀ†uÀ†� À†‡À††À†” À†ªÀ†©ÀˆCyÀˆ¶Àˆ¶d/// The width, in pixels, of the image. /// /// On the Web, this is only supported for [raw] images.ÀˆÀ{À‰4À‰4e/// The height, in pixels, of the image. /// /// On the Web, this is only supported for [raw] images.À‰?€…À‰¶À‰¶h/// The number of bytes per pixel in the image. /// /// On web, this is only supported for [raw] images.À†Ü�cÀ‡FÀ‡FH/// Creates an image descriptor from encoded data in a supported format.À‡NÀ‡_À‡^À‰È€øÀжÀж€Þ/// Release the resources used by this object. The object is no longer usable /// after this method is called. /// /// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).ÀŠÄ�ÛÀŒgÀŒg�‚/// Creates a [Codec] object which is suitable for decoding the data in the /// buffer to an [Image]. /// /// If only one of targetWidth or targetHeight are specified, the other /// dimension will be scaled according to the aspect ratio of the supplied /// dimension. /// /// If either targetWidth or targetHeight is less than or equal to zero, it /// will be treated as if it is null.ÀŒyÀŒÀŒ~ÀŒ‹ÀŒ‘ÀŒ�ÀŒ£�qÀŒ®ÀŒ®À�À�À�À�À�À�À�$ƒ£À�DÀ�ZÀ�[À�^À�[�Ð/// Creates an image descriptor from raw image pixels. /// /// The `pixels` parameter is the pixel data. They are packed in bytes in the /// order described by `pixelFormat`, then grouped in rows, from left to right, /// then top to bottom. /// /// The `rowBytes` parameter is the number of bytes consumed by each row of /// pixels in the data buffer. If unspecified, it defaults to `width` multiplied /// by the number of bytes per pixel in the provided `format`.À�dÀ�uÀ�tÀ�‚À��À��À�šÀ�¨À�§À�³ À�¹À�¸À�Æ À�ÜÀ�ÛÀ’Ÿ À’¤À’¤À“] À“bÀ“bÀ”!À”&À”&À“%4À“9À“9À“%À“&À“æ7À“úÀ“úÀ“æÀ“çÀ”¿LÀ”ÓÀ”ÓÀ”¿À”À À�Ë€²À‘>À‘>À‘KÀ‘\À‘[À‘cÀ‘tÀ‘sÀ�ËÀ�ÌÀ�ÒÀ‘À�ÚÀ�ÓÀ�âÀ‘À�ãÀ�ëÀ�òÀ�÷À�óÀ�úÀ‘À‘)À‘ À‘À‘ À‘��À’À’À’À’'À’&À’9À’JÀ’IÀ’U À’ZÀ’YÀ’d À’iÀ’hÀ’t À’yÀ’xÀ’†À’‹À’ŠÀ‘�À‘‚À‘ˆÀ‘ÂÀ‘ŽÀ‘‰À‘–À‘ÁÀ‘—À‘ŸÀ‘§À‘®À‘µÀ‘¼À‘ÃÀ‘ïÀ‘ÏÀ‘ÉÀ‘ÑÀ’¯rÀ“À“À’¯À’°À’¶À’ÔÀ’½À’·À’ÅÀ’ÓÀ’ÆÀ’ÍÀ’ÒÀ’ÎÀ’ÕÀ“À’ÜÀ’ÖÀ’ÞÀ’þÀ’øÀ“À“ntÀ“ÕÀ“ÕÀ“nÀ“oÀ“uÀ““À“|À“vÀ“„À“’À“…À“ŒÀ“‘À“�À“”À“ÄÀ“›À“•À“�À“¾À“¸À“ÀÀ”9€‚À”§À”§À”9À”:À”@À”^À”GÀ”AÀ”OÀ”]À”PÀ”WÀ”\À”XÀ”_À”–À”fÀ”`À”hÀ”�À”ŠÀ”’À•pÀ•uÀ•uÀ•À•À•À•À•"À•?À•(À•#À•0À•>À•1À•8À•=À•9À•@À•cÀ•GÀ•AÀ•IÀ•ƒƒ(À•�À•�À•¯À•µÀ•´À•ÁÀ•ÇÀ•ÆÀ•ƒÀ•„À˜¯€ÇÀ™1À™1À™CÀ™JÀ™IÀ™SÀ™XÀ™WÀ™dÀ™iÀ™hÀ˜¯À˜°À˜¶À˜éÀ˜¼À˜·À˜ÄÀ˜èÀ˜ÅÀ˜ÌÀ˜ÑÀ˜ÍÀ˜ÔÀ˜ÜÀ˜ãÀ˜êÀ™À˜öÀ˜ðÀ˜øÀ™z€˜À™�À™�À™zÀ™{À¦ƒùÀ§ƒÀ§ƒ�u/// An exception thrown by [Canvas.drawImage] and related methods when drawing /// an [Image] created via [Picture.toImageSync] that is in an invalid state. /// /// This exception may be thrown if the requested image dimensions exceeded the /// maximum 2D texture size allowed by the GPU, or if no GPU surface or context /// was available for rasterization at request time.À§ºBÀ§ÀÀ§ÝÀ§ÞÀ§ßÀ§ÞÀ§à À§æÀ§åÀ§ï À§õÀ§ôÀ¨IÀ¨BÀ¨B2/// A string containing details about the failure.À¨NiÀ¨²À¨²O/// If available, the stack trace at the time [Picture.toImageSync] was called.À¨¼�BÀ¨ÏÀ¨ÏÀ¨¼À¨½ÀL<ÀOõÀWWÀWW‹/// Algorithms to use when painting on the canvas. /// /// When drawing a shape or image onto a canvas, different algorithms can be /// used to blend the pixels. The different values of [BlendMode] specify /// different such algorithms. /// /// Each algorithm has two inputs, the _source_, which is the image being drawn, /// and the _destination_, which is the image into which the source image is /// being composited. The destination is often thought of as the _background_. /// The source and destination both have four color channels, the red, green, /// blue, and alpha channels. These are typically represented as numbers in the /// range 0.0 to 1.0. The output of the algorithm also has these same four /// channels, with values computed from the source and destination. /// /// The documentation of each value below describes how the algorithm works. In /// each case, an image shows the output of blending a source image with a /// destination image. In the images below, the destination is represented by an /// image with horizontal lines and an opaque landscape photograph, and the /// source is represented by an image with vertical lines (the same lines but /// rotated) and a bird clip-art image. The [src] mode shows only the source /// image, and the [dst] mode shows only the destination image. In the /// documentation below, the transparency is illustrated by a checkerboard /// pattern. The [clear] mode drops both the source and destination, resulting /// in an output that is entirely transparent (illustrated by a solid /// checkerboard pattern). /// /// The horizontal and vertical bars in these images show the red, green, and /// blue channels with varying opacity levels, then all three color channels /// together with those same varying opacity levels, then all three color /// channels set to zero with those varying opacity levels, then two bars showing /// a red/green/blue repeating gradient, the first with full opacity and the /// second with partial opacity, and finally a bar with the three color channels /// set to zero but the opacity varying in a repeating gradient. /// /// ## Application to the [Canvas] API /// /// When using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the /// [Paint] given to the [Canvas.saveLayer] will be applied when /// [Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new /// layer onto which shapes and images are painted; when [Canvas.restore] is /// called, that layer is then composited onto the parent layer, with the source /// being the most-recently-drawn shapes and images, and the destination being /// the parent layer. (For the first [Canvas.saveLayer] call, the parent layer /// is the canvas itself.) /// /// See also: /// /// * [Paint.blendMode], which uses [BlendMode] to define the compositing /// strategy.ÀX€îÀX÷ÀX÷€Þ/// Drop both the source and destination images, leaving nothing. /// /// This corresponds to the "clear" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_clear.png)ÀY�HÀZFÀZF�4/// Drop the destination image, only paint the source image. /// /// Conceptually, the destination is first cleared, then the source image is /// painted. /// /// This corresponds to the "Copy" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_src.png)ÀZN�MÀ[˜À[˜�9/// Drop the source image, only paint the destination image. /// /// Conceptually, the source image is discarded, leaving the destination /// untouched. /// /// This corresponds to the "Destination" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_dst.png)À[ �ìÀ]…À]…�Ð/// Composite the source image over the destination image. /// /// This is the default value. It represents the most intuitive case, where /// shapes are painted on top of what is below, with transparent areas showing /// the destination layer. /// /// This corresponds to the "Source over Destination" Porter-Duff operator, /// also known as the Painter's Algorithm. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_srcOver.png)À]‘�­À_7À_7�‘/// Composite the source image under the destination image. /// /// This is the opposite of [srcOver]. /// /// This corresponds to the "Destination over Source" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_dstOver.png) /// /// This is useful when the source image should have been painted before the /// destination image, but could not be.À_C‚šÀaØÀaØ‚x/// Show the source image, but only where the two images overlap. The /// destination image is not rendered, it is treated merely as a mask. The /// color channels of the destination are ignored, only the opacity has an /// effect. /// /// To show the destination image instead, consider [dstIn]. /// /// To reverse the semantic of the mask (only showing the source where the /// destination is absent, rather than where it is present), consider /// [srcOut]. /// /// This corresponds to the "Source in Destination" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_srcIn.png)Àaâ‚„ÀdaÀda‚f/// Show the destination image, but only where the two images overlap. The /// source image is not rendered, it is treated merely as a mask. The color /// channels of the source are ignored, only the opacity has an effect. /// /// To show the source image instead, consider [srcIn]. /// /// To reverse the semantic of the mask (only showing the source where the /// destination is present, rather than where it is absent), consider [dstOut]. /// /// This corresponds to the "Destination in Source" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_dstIn.png)Àdk‚˜ÀfýÀfý‚y/// Show the source image, but only where the two images do not overlap. The /// destination image is not rendered, it is treated merely as a mask. The color /// channels of the destination are ignored, only the opacity has an effect. /// /// To show the destination image instead, consider [dstOut]. /// /// To reverse the semantic of the mask (only showing the source where the /// destination is present, rather than where it is absent), consider [srcIn]. /// /// This corresponds to the "Source out Destination" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_srcOut.png)Àg‚ŽÀi�Ài�‚o/// Show the destination image, but only where the two images do not overlap. The /// source image is not rendered, it is treated merely as a mask. The color /// channels of the source are ignored, only the opacity has an effect. /// /// To show the source image instead, consider [srcOut]. /// /// To reverse the semantic of the mask (only showing the destination where the /// source is present, rather than where it is absent), consider [dstIn]. /// /// This corresponds to the "Destination out Source" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_dstOut.png)Ài›‚gÀkûÀkû‚E/// Composite the source image over the destination image, but only where it /// overlaps the destination. /// /// This corresponds to the "Source atop Destination" Porter-Duff operator. /// /// This is essentially the [srcOver] operator, but with the output's opacity /// channel being set to that of the destination image instead of being a /// combination of both image's opacity channels. /// /// For a variant with the destination on top instead of the source, see /// [dstATop]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_srcATop.png)Àl‚]Àn]Àn]‚;/// Composite the destination image over the source image, but only where it /// overlaps the source. /// /// This corresponds to the "Destination atop Source" Porter-Duff operator. /// /// This is essentially the [dstOver] operator, but with the output's opacity /// channel being set to that of the source image instead of being a /// combination of both image's opacity channels. /// /// For a variant with the source on top instead of the destination, see /// [srcATop]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_dstATop.png)Àni�;Ào¡Ào¡�+/// Apply a bitwise `xor` operator to the source and destination images. This /// leaves transparency where they would overlap. /// /// This corresponds to the "Source xor Destination" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_xor.png)Ào©ƒOÀrôÀrôƒ,/// Sum the components of the source and destination images. /// /// Transparency in a pixel of one of the images reduces the contribution of /// that image to the corresponding output pixel, as if the color of that /// pixel in that image was darker. /// /// This corresponds to the "Source plus Destination" Porter-Duff operator. /// /// This is the right blend mode for cross-fading between two images. Consider /// two images A and B, and an interpolation time variable _t_ (from 0.0 to /// 1.0). To cross fade between them, A should be drawn with opacity 1.0 - _t_ /// into a new layer using [BlendMode.srcOver], and B should be drawn on top /// of it, at opacity _t_, into the same layer, using [BlendMode.plus]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_plus.png)ÀrýƒVÀvKÀvKƒ'/// Multiply the color components of the source and destination images. /// /// This can only result in the same or darker colors (multiplying by white, /// 1.0, results in no change; multiplying by black, 0.0, results in black). /// /// When compositing two opaque images, this has similar effect to overlapping /// two transparencies on a projector. /// /// For a variant that also multiplies the alpha channel, consider [multiply]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_modulate.png) /// /// See also: /// /// * [screen], which does a similar computation but inverted. /// * [overlay], which combines [modulate] and [screen] to favor the /// destination image. /// * [hardLight], which combines [modulate] and [screen] to favor the /// source image.Àv¡…!À{¼À{¼„â/// Multiply the inverse of the components of the source and destination /// images, and inverse the result. /// /// Inverting the components means that a fully saturated channel (opaque /// white) is treated as the value 0.0, and values normally treated as 0.0 /// (black, transparent) are treated as 1.0. /// /// This is essentially the same as [modulate] blend mode, but with the values /// of the colors inverted before the multiplication and the result being /// inverted back before rendering. /// /// This can only result in the same or lighter colors (multiplying by black, /// 1.0, results in no change; multiplying by white, 0.0, results in white). /// Similarly, in the alpha channel, it can only result in more opaque colors. /// /// This has similar effect to two projectors displaying their images on the /// same screen simultaneously. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_screen.png) /// /// See also: /// /// * [modulate], which does a similar computation but without inverting the /// values. /// * [overlay], which combines [modulate] and [screen] to favor the /// destination image. /// * [hardLight], which combines [modulate] and [screen] to favor the /// source image.À{ÞƒÞÀµÀµƒ®/// Multiply the components of the source and destination images after /// adjusting them to favor the destination. /// /// Specifically, if the destination value is smaller, this multiplies it with /// the source value, whereas is the source value is smaller, it multiplies /// the inverse of the source value with the inverse of the destination value, /// then inverts the result. /// /// Inverting the components means that a fully saturated channel (opaque /// white) is treated as the value 0.0, and values normally treated as 0.0 /// (black, transparent) are treated as 1.0. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_overlay.png) /// /// See also: /// /// * [modulate], which always multiplies the values. /// * [screen], which always multiplies the inverses of the values. /// * [hardLight], which is similar to [overlay] but favors the source image /// instead of the destination image.ÀÁ�7À€òÀ€ò�"/// Composite the source and destination image by choosing the lowest value /// from each color channel. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_darken.png)À€ý�:À‚0À‚0�$/// Composite the source and destination image by choosing the highest value /// from each color channel. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_lighten.png)À‚<�{Àƒ­Àƒ­�b/// Divide the destination by the inverse of the source. /// /// Inverting the components means that a fully saturated channel (opaque /// white) is treated as the value 0.0, and values normally treated as 0.0 /// (black, transparent) are treated as 1.0. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_colorDodge.png)Àƒ¼�‘À…DÀ…D�y/// Divide the inverse of the destination by the source, and inverse the result. /// /// Inverting the components means that a fully saturated channel (opaque /// white) is treated as the value 0.0, and values normally treated as 0.0 /// (black, transparent) are treated as 1.0. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_colorBurn.png)À…RƒâÀ‰+À‰+ƒ°/// Multiply the components of the source and destination images after /// adjusting them to favor the source. /// /// Specifically, if the source value is smaller, this multiplies it with the /// destination value, whereas is the destination value is smaller, it /// multiplies the inverse of the destination value with the inverse of the /// source value, then inverts the result. /// /// Inverting the components means that a fully saturated channel (opaque /// white) is treated as the value 0.0, and values normally treated as 0.0 /// (black, transparent) are treated as 1.0. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_hardLight.png) /// /// See also: /// /// * [modulate], which always multiplies the values. /// * [screen], which always multiplies the inverses of the values. /// * [overlay], which is similar to [hardLight] but favors the destination /// image instead of the source image.À‰9�sÀŠ£ÀŠ£�U/// Use [colorDodge] for source values below 0.5 and [colorBurn] for source /// values above 0.5. /// /// This results in a similar but softer effect than [overlay]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_softLight.png) /// /// See also: /// /// * [color], which is a more subtle tinting effect.Àб�ÅÀŒlÀŒl�¤/// Subtract the smaller value from the bigger value for each channel. /// /// Compositing black has no effect; compositing white inverts the colors of /// the other image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. /// /// The effect is similar to [exclusion] but harsher. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_difference.png)ÀŒ{�ÔÀŽFÀŽF�²/// Subtract double the product of the two images from the sum of the two /// images. /// /// Compositing black has no effect; compositing white inverts the colors of /// the other image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. /// /// The effect is similar to [difference] but softer. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_exclusion.png)ÀŽT‚ÙÀ‘%À‘%‚´/// Multiply the components of the source and destination images, including /// the alpha channel. /// /// This can only result in the same or darker colors (multiplying by white, /// 1.0, results in no change; multiplying by black, 0.0, results in black). /// /// Since the alpha channel is also multiplied, a fully-transparent pixel /// (opacity 0.0) in one image results in a fully transparent pixel in the /// output. This is similar to [dstIn], but with the colors combined. /// /// For a variant that multiplies the colors but does not multiply the alpha /// channel, consider [modulate]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_multiply.png)À‘M‚÷À”AÀ”A‚Ñ/// Take the hue of the source image, and the saturation and luminosity of the /// destination image. /// /// The effect is to tint the destination image with the source image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. Regions that are entirely transparent in the source image take /// their hue from the destination. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_hue.png) /// /// See also: /// /// * [color], which is a similar but stronger effect as it also applies the /// saturation of the source image. /// * [HSVColor], which allows colors to be expressed using Hue rather than /// the red/green/blue channels of [Color].À”I‚kÀ–ªÀ–ª‚D/// Take the saturation of the source image, and the hue and luminosity of the /// destination image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. Regions that are entirely transparent in the source image take /// their saturation from the destination. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_saturation.png) /// /// See also: /// /// * [color], which also applies the hue of the source image. /// * [luminosity], which applies the luminosity of the source image to the /// destination.À–¹‚ãÀ™—À™—‚½/// Take the hue and saturation of the source image, and the luminosity of the /// destination image. /// /// The effect is to tint the destination image with the source image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. Regions that are entirely transparent in the source image take /// their hue and saturation from the destination. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_color.png) /// /// See also: /// /// * [hue], which is a similar but weaker effect. /// * [softLight], which is a similar tinting effect but also tints white. /// * [saturation], which only applies the saturation of the source image.À™¡‚�Àœ$Àœ$‚d/// Take the luminosity of the source image, and the hue and saturation of the /// destination image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. Regions that are entirely transparent in the source image take /// their luminosity from the destination. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_luminosity.png) /// /// See also: /// /// * [saturation], which applies the saturation of the source image to the /// destination. /// * [ImageFilter.blur], which can be used with [BackdropFilter] for a /// related effect.Àœ3Œ{À¡­À¡­…t/// Quality levels for image sampling in [ImageFilter] and [Shader] objects that sample /// images and for [Canvas] operations that render images. /// /// When scaling up typically the quality is lowest at [none], higher at [low] and [medium], /// and for very large scale factors (over 10x) the highest at [high]. /// /// When scaling down, [medium] provides the best quality especially when scaling an /// image to less than half its size or for animating the scale factor between such /// reductions. Otherwise, [low] and [high] provide similar effects for reductions of /// between 50% and 100% but the image may lose detail and have dropouts below 50%. /// /// To get high quality when scaling images up and down, or when the scale is /// unknown, [medium] is typically a good balanced choice. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/filter_quality.png) /// /// When building for the web using the `--web-renderer=html` option, filter /// quality has no effect. All images are rendered using the respective /// browser's default setting. /// /// See also: /// /// * [Paint.filterQuality], which is used to pass [FilterQuality] to the /// engine while using drawImage calls on a [Canvas]. /// * [ImageShader]. /// * [ImageFilter.matrix]. /// * [Canvas.drawImage]. /// * [Canvas.drawImageRect]. /// * [Canvas.drawImageNine]. /// * [Canvas.drawAtlas].À¢>€ÙÀ£À£€Ì/// The fastest filtering method, albeit also the lowest quality. /// /// This value results in a "Nearest Neighbor" algorithm which just /// repeats or eliminates pixels as an image is scaled up or down.À£€²À£ËÀ£Ë€¦/// Better quality than [none], faster than [medium]. /// /// This value results in a "Bilinear" algorithm which smoothly /// interpolates between pixels in an image.À£Ó‚ŽÀ¦[À¦[‚k/// The best all around filtering method that is only worse than [high] /// at extremely large scale factors. /// /// This value improves upon the "Bilinear" algorithm specified by [low] /// by utilizing a Mipmap that pre-computes high quality lower resolutions /// of the image at half (and quarter and eighth, etc.) sizes and then /// blends between those to prevent loss of detail at small scale sizes. /// /// {@template dart.ui.filterQuality.seeAlso} /// See also: /// /// * [FilterQuality] class-level documentation that goes into detail about /// relative qualities of the constant values. /// {@endtemplate}À¦f‚EÀ¨§À¨§‚&/// Best possible quality when scaling up images by scale factors larger than /// 5-10x. /// /// When images are scaled down, this can be worse than [medium] for scales /// smaller than 0.5x, or when animating the scale factor. /// /// This option is also the slowest. /// /// This value results in a standard "Bicubic" algorithm which uses a 3rd order /// equation to smooth the abrupt transitions between pixels while preserving /// some of the sense of an edge and avoiding sharp peaks in the result. /// /// {@macro dart.ui.filterQuality.seeAlso}À¨°†ÆÀ©£À©£€±/// Styles to use for line endings. /// /// See also: /// /// * [Paint.strokeCap] for how this value is used. /// * [StrokeJoin] for the different kinds of line segment joins.À©±�…À«2À«2�r/// Begin and end contours with a flat edge and no extension. /// /// ![A butt cap ends line segments with a square end that stops at the end of /// the line segment.](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/butt_cap.png) /// /// Compare to the [square] cap, which has the same shape, but extends past /// the end of the line by half a stroke width.À«;�ËÀ­À­�µ/// Begin and end contours with a semi-circle extension. /// /// ![A round cap adds a rounded end to the line segment that protrudes /// by one half of the thickness of the line (which is the radius of the cap) /// past the end of the segment.](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/round_cap.png) /// /// The cap is colored in the diagram above to highlight it: in normal use it /// is the same color as the line.À­ ‚hÀ¯mÀ¯m‚I/// Begin and end contours with a half square extension. This is /// similar to extending each contour by half the stroke width (as /// given by [Paint.strokeWidth]). /// /// ![A square cap has a square end that effectively extends the line length /// by half of the stroke width.](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/square_cap.png) /// /// The cap is colored in the diagram above to highlight it: in normal use it /// is the same color as the line. /// /// Compare to the [butt] cap, which has the same shape, but doesn't extend /// past the end of the line.À¯xˆÀ±"À±"�g/// Styles to use for line segment joins. /// /// This only affects line joins for polygons drawn by [Canvas.drawPath] and /// rectangles, not points drawn as lines with [Canvas.drawPoints]. /// /// See also: /// /// * [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is /// used. /// * [StrokeCap] for the different kinds of line endings.À±1‚YÀ³…À³…‚7/// Joins between line segments form sharp corners. /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} /// /// The center of the line segment is colored in the diagram above to /// highlight the join, but in normal usage the join is the same color as the /// line. /// /// See also: /// /// * [Paint.strokeJoin], used to set the line segment join style to this /// value. /// * [Paint.strokeMiterLimit], used to define when a miter is drawn instead /// of a bevel when the join is set to this value.À³��ÌÀµVÀµV�®/// Joins between line segments are semi-circular. /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/round_join.mp4} /// /// The center of the line segment is colored in the diagram above to /// highlight the join, but in normal usage the join is the same color as the /// line. /// /// See also: /// /// * [Paint.strokeJoin], used to set the line segment join style to this /// value.Àµ`‚À·rÀ·r�÷/// Joins between line segments connect the corners of the butt ends of the /// line segments to give a beveled appearance. /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/bevel_join.mp4} /// /// The center of the line segment is colored in the diagram above to /// highlight the join, but in normal usage the join is the same color as the /// line. /// /// See also: /// /// * [Paint.strokeJoin], used to set the line segment join style to this /// value.À·|‚ÖÀ¸À¸T/// Strategies for painting shapes and paths on a canvas. /// /// See [Paint.style].À¸~€·À¹1À¹1€¬/// Apply the [Paint] to the inside of the shape. For example, when /// applied to the [Canvas.drawCircle] call, this results in a disc /// of the given size being painted.À¹:�ÀºIÀºI�/// Apply the [Paint] to the edge of the shape. For example, when /// applied to the [Canvas.drawCircle] call, this results is a hoop /// of the given size being painted. The line drawn on the edge will /// be the width given by the [Paint.strokeWidth] property.ÀºT� ÀºåÀºå€‹/// Different ways to clip content. /// /// See also: /// /// * [Paint.isAntiAlias], the anti-aliasing switch for general draw operations.Àºî‚'À½À½‚ /// No clip at all. /// /// This is the default option for most widgets: if the content does not /// overflow the widget boundary, don't pay any performance cost for clipping. /// /// If the content does overflow, consider the following [Clip] options: /// /// * [hardEdge], which is the fastest clipping, but with lower fidelity. /// * [antiAlias], which is a little slower than [hardEdge], but with smoothed edges. /// * [antiAliasWithSaveLayer], which is much slower than [antiAlias], and should /// rarely be used.À½‚RÀ¿dÀ¿d‚-/// Clip, but do not apply anti-aliasing. /// /// This mode enables clipping, but curves and non-axis-aligned straight lines will be /// jagged as no effort is made to anti-alias. /// /// Faster than other clipping modes, but slower than [none]. /// /// This is a reasonable choice when clipping is needed, if the container is an axis- /// aligned rectangle or an axis-aligned rounded rectangle with very small corner radii. /// /// See also: /// /// * [antiAlias], recommended when clipping is needed and the shape is not /// an axis-aligned rectangle.À¿qƒ*ÀÂ’ÀÂ’‚ü/// Clip with anti-aliasing. /// /// This mode has anti-aliased clipping edges, which reduces jagged edges when /// the clip shape itself has edges that are diagonal, curved, or otherwise /// not axis-aligned. /// /// This is much faster than [antiAliasWithSaveLayer], but slower than [hardEdge]. /// /// Unlike [hardEdge] and [antiAliasWithSaveLayer], this clipping can have /// bleeding edge artifacts /// ([Skia Fiddle example](https://fiddle.skia.org/c/21cb4c2b2515996b537f36e7819288ae)). /// /// See also: /// /// * [hardEdge], which is faster, but with lower fidelity. /// * [antiAliasWithSaveLayer], which is much slower, but avoids bleeding /// edge artifacts. /// * [Paint.isAntiAlias], which is the anti-aliasing switch for general draw operations.À „¾ÀÇHÀÇH„y/// Clip with anti-aliasing and `saveLayer` immediately following the clip. /// /// This mode not only clips with anti-aliasing, but also allocates an offscreen /// buffer. All subsequent paints are carried out on that buffer before finally /// being clipped and composited back. /// /// This is very slow. It has no bleeding edge artifacts, unlike [antiAlias], /// but it changes the semantics as it introduces an offscreen buffer. /// For example, see this /// [Skia Fiddle without `saveLayer`](https://fiddle.skia.org/c/83ed46ceadaf90f36a4df3b98cbe1c35) /// and this /// [Skia Fiddle with `saveLayer`](https://fiddle.skia.org/c/704acfa049a7e99fbe685232c45d1582). /// /// Use this mode only if necessary. For example, if you have an /// image overlaid on a very different background color. In these /// cases, consider if you can avoid overlaying multiple colors in one /// location (e.g. by having the background color only present where the image is /// absent). If possible, prefer [antiAlias] as it is much faster. /// /// See also: /// /// * [antiAlias], which is much faster, and has similar clipping results. /// * [Canvas.saveLayer].Àé….ÀºÀº�Ë/// The color space describes the colors that are available to an [Image]. /// /// This value can help decide which [ImageByteFormat] to use with /// [Image.toByteData]. Images that are in the [extendedSRGB] color space /// should use something like [ImageByteFormat.rawExtendedRgba128] so that /// colors outside of the sRGB gamut aren't lost. /// /// This is also the result of [Image.colorSpace]. /// /// See also: https://en.wikipedia.org/wiki/Color_spaceÀÉ€ØÀ�À�€Ç/// The sRGB color space. /// /// You may know this as the standard color space for the web or the color /// space of non-wide-gamut Flutter apps. /// /// See also: https://en.wikipedia.org/wiki/SRGBÀ¦�À²À²�/// A color space that is backwards compatible with sRGB but can represent /// colors outside of that gamut with values outside of [0..1]. In order to /// see the extended values an [ImageByteFormat] like /// [ImageByteFormat.rawExtendedRgba128] must be used.ÀÃ�QÀ À �9/// The Display P3 color space. /// /// This is a wide gamut color space that has broad hardware support. It's /// supported in cases like using Impeller on iOS. When used on a platform /// that doesn't support Display P3, the colors will be clamped to sRGB. /// /// See also: https://en.wikipedia.org/wiki/DCI-P3À ‰À–À–Y/// The format in which image bytes should be returned when using /// [Image.toByteData].Àª€‚À%À%t/// Raw RGBA format. /// /// Unencoded bytes, in RGBA row-primary form with premultiplied alpha, 8 bits per channel.À1€ŽÀ°À°x/// Raw straight RGBA format. /// /// Unencoded bytes, in RGBA row-primary form with straight alpha, 8 bits per channel.ÀÄ€»ÀrÀr€¥/// Raw unmodified format. /// /// Unencoded bytes, in the image's existing format. For example, a grayscale /// image may use a single 8-bit channel for each pixel.À„‚ÎÀ@À@‚�/// Raw extended range RGBA format. /// /// Unencoded bytes, in RGBA row-primary form with straight alpha, 32 bit /// float (IEEE 754 binary32) per channel. /// /// Example usage: /// /// ```dart /// import 'dart:ui' as ui; /// import 'dart:typed_data'; /// /// Future> getFirstPixel(ui.Image image) async { /// final ByteData data = /// (await image.toByteData(format: ui.ImageByteFormat.rawExtendedRgba128))!; /// final Float32List floats = Float32List.view(data.buffer); /// return { /// 'r': floats[0], /// 'g': floats[1], /// 'b': floats[2], /// 'a': floats[3], /// }; /// } /// ```ÀW‚¾À"À"‚œ/// PNG format. /// /// A loss-less compression format for images. This format is well suited for /// images with hard edges, such as screenshots or sprites, and images with /// text. Transparency is supported. The PNG format supports images up to /// 2,147,483,647 pixels in either dimension, though in practice available /// memory provides a more immediate limitation on maximum image size. /// /// PNG images normally use the `.png` file extension and the `image/png` MIME /// type. /// /// See also: /// /// * , the Wikipedia page on PNG. /// * , the PNG standard.À"ƒ?À"^À"^>/// The format of pixel data given to [decodeImageFromPixels].À"n€ÙÀ#?À#?€Ê/// Each pixel is 32 bits, with the highest 8 bits encoding red, the next 8 /// bits encoding green, the next 8 bits encoding blue, and the lowest 8 bits /// encoding alpha. Premultiplied alpha is used.À#L€ÙÀ$À$€Ê/// Each pixel is 32 bits, with the highest 8 bits encoding blue, the next 8 /// bits encoding green, the next 8 bits encoding red, and the lowest 8 bits /// encoding alpha. Premultiplied alpha is used.À$*�,À%KÀ%K�/// Each pixel is 128 bits, where each color component is a 32 bit float that /// is normalized across the sRGB gamut. The first float is the red /// component, followed by: green, blue and alpha. Premultiplied alpha isn't /// used, matching [ImageByteFormat.rawExtendedRgba128].À�ƃ•ÀžcÀžc€—/// Determines the winding rule that decides how the interior of a [Path] is /// calculated. /// /// This enum is used by the [Path.fillType] property.Àžt�¯À À �—/// The interior is defined by a non-zero sum of signed edge crossings. /// /// For a given point, the point is considered to be on the inside of the path /// if a line drawn from the point to infinity crosses lines going clockwise /// around the point a different number of times than it crosses lines going /// counter-clockwise around that point. /// /// See: À (�0À¡QÀ¡Q�/// The interior is defined by an odd number of edge crossings. /// /// For a given point, the point is considered to be on the inside of the path /// if a line drawn from the point to infinity crosses an odd number of lines. /// /// See: À¡]ˆPÀ¢À¢€ˆ/// Strategies for combining paths. /// /// See also: /// /// * [Path.combine], which uses this enum to decide how to combine two paths.À¢#�£À£¼À£¼�„/// Subtract the second path from the first path. /// /// For example, if the two paths are overlapping circles of equal diameter /// but differing centers, the result would be a crescent portion of the /// first circle that was not overlapped by the second circle. /// /// See also: /// /// * [reverseDifference], which is the same but subtracting the first path /// from the second.À£Ë�‡À¥IÀ¥I�k/// Create a new path that is the intersection of the two paths, leaving the /// overlapping pieces of the path. /// /// For example, if the two paths are overlapping circles of equal diameter /// but differing centers, the result would be only the overlapping portion /// of the two circles. /// /// See also: /// * [xor], which is the inverse of this operationÀ¥W�$À¦vÀ¦v�/// Create a new path that is the union (inclusive-or) of the two paths. /// /// For example, if the two paths are overlapping circles of equal diameter /// but differing centers, the result would be a figure-eight like shape /// matching the outer boundaries of both circles.À¦€�‚À§ÿÀ§ÿ�n/// Create a new path that is the exclusive-or of the two paths, leaving /// everything but the overlapping pieces of the path. /// /// For example, if the two paths are overlapping circles of equal diameter /// but differing centers, the figure-eight like shape less the overlapping parts /// /// See also: /// * [intersect], which is the inverse of this operationÀ¨�£À©™À©™�}/// Subtract the first path from the second path. /// /// For example, if the two paths are overlapping circles of equal diameter /// but differing centers, the result would be a crescent portion of the /// second circle that was not overlapped by the first circle. /// /// See also: /// /// * [difference], which is the same but subtracting the second path /// from the first.À8uƒ{À8ëÀ8ë4/// Styles to use for blurs in [MaskFilter] objects.À92€–À9ÂÀ9€‹/// Fuzzy inside and outside. This is useful for painting shadows that are /// offset from the shape that ostensibly is casting the shadow.À9Í€ÍÀ:•À:•€Á/// Solid inside, fuzzy outside. This corresponds to drawing the shape, and /// additionally drawing the blur. This can make objects appear brighter, /// maybe even as if they were fluorescent.À:Ÿ€æÀ;€À;€€Ú/// Nothing inside, fuzzy outside. This is useful for painting shadows for /// partially transparent shapes, when they are painted separately but without /// an offset, so that the shadow doesn't paint below the shape.À;ŠcÀ;èÀ;èY/// Fuzzy inside, nothing outside. This can make shapes appear to be lit from /// within.À¯4“À¶À¶†’/// Defines what happens at the edge of a gradient or the sampling of a source image /// in an [ImageFilter]. /// /// A gradient is defined along a finite inner area. In the case of a linear /// gradient, it's between the parallel lines that are orthogonal to the line /// drawn between two points. In the case of radial gradients, it's the disc /// that covers the circle centered on a particular point up to a given radius. /// /// An image filter reads source samples from a source image and performs operations /// on those samples to produce a result image. An image defines color samples only /// for pixels within the bounds of the image but some filter operations, such as a blur /// filter, read samples over a wide area to compute the output for a given pixel. Such /// a filter would need to combine samples from inside the image with hypothetical /// color values from outside the image. /// /// This enum is used to define how the gradient or image filter should treat the regions /// outside that defined inner area. /// /// See also: /// /// * [painting.Gradient], the superclass for [LinearGradient] and /// [RadialGradient], as used by [BoxDecoration] et al, which works in /// relative coordinates and can create a [Shader] representing the gradient /// for a particular [Rect] on demand. /// * [dart:ui.Gradient], the low-level class used when dealing with the /// [Paint.shader] property directly, with its [Gradient.linear] and /// [Gradient.radial] constructors. /// * [dart:ui.ImageFilter.blur], an ImageFilter that may sometimes need to /// read samples from outside an image to combine with the pixels near the /// edge of the image.À¶‚£À¸²À¸²‚‡/// Samples beyond the edge are clamped to the nearest color in the defined inner area. /// /// A gradient will paint all the regions outside the inner area with the /// color at the end of the color stop list closest to that region. /// /// An image filter will substitute the nearest edge pixel for any samples taken from /// outside its source image. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_sweep.png)À¸¼ƒ5À»éÀ»éƒ/// Samples beyond the edge are repeated from the far end of the defined area. /// /// For a gradient, this technique is as if the stop points from 0.0 to 1.0 were then /// repeated from 1.0 to 2.0, 2.0 to 3.0, and so forth (and for linear gradients, similarly /// from -1.0 to 0.0, -2.0 to -1.0, etc). /// /// An image filter will treat its source image as if it were tiled across the enlarged /// sample space from which it reads, each tile in the same orientation as the base image. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_sweep.png)À»öƒ|À¿lÀ¿lƒY/// Samples beyond the edge are mirrored back and forth across the defined area. /// /// For a gradient, this technique is as if the stop points from 0.0 to 1.0 were then /// repeated backwards from 2.0 to 1.0, then forwards from 2.0 to 3.0, then backwards /// again from 4.0 to 3.0, and so forth (and for linear gradients, similarly in the /// negative direction). /// /// An image filter will treat its source image as tiled in an alternating forwards and /// backwards or upwards and downwards direction across the sample space from which /// it is reading. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_sweep.png)À¿w‚½ÀÂ/ÀÂ/‚Ÿ/// Samples beyond the edge are treated as transparent black. /// /// A gradient will render transparency over any region that is outside the circle of a /// radial gradient or outside the parallel lines that define the inner area of a linear /// gradient. /// /// An image filter will substitute transparent black for any sample it must read from /// outside its source image. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_sweep.png)À ‚ÃÀÇÀÇw/// Defines how a list of points is interpreted when drawing a set of triangles. /// /// Used by [Canvas.drawVertices].ÀÖQÀÀE/// Draw each sequence of three points as the vertices of a triangle.À,[ÀzÀzK/// Draw each sliding window of three points as the vertices of a triangle.ÀŒ�AÀÂÀÂ�)/// Draw the first point and each sliding window of two points as the vertices /// of a triangle. /// /// This mode is not natively supported by most backends, and is instead /// implemented by unrolling the points into the equivalent /// [VertexMode.triangles], which is generally more efficient.ÀI„%ÀIäÀIä€�/// Defines how a list of points is interpreted when drawing a set of points. /// /// Used by [Canvas.drawPoints] and [Canvas.drawRawPoints].ÀIò�·ÀK£ÀK£�ž/// Draw each point separately. /// /// If the [Paint.strokeCap] is [StrokeCap.round], then each point is drawn /// as a circle with the diameter of the [Paint.strokeWidth], filled as /// described by the [Paint] (ignoring [Paint.style]). /// /// Otherwise, each point is drawn as an axis-aligned square with sides of /// length [Paint.strokeWidth], filled as described by the [Paint] (ignoring /// [Paint.style]).ÀK®€éÀL’ÀL’€×/// Draw each sequence of two points as a line segment. /// /// If the number of points is odd, then the last point is ignored. /// /// The lines are stroked as described by the [Paint] (ignoring /// [Paint.style]).ÀLœ€›ÀM0ÀM0€‹/// Draw the entire sequence of points as one line. /// /// The lines are stroked as described by the [Paint] (ignoring /// [Paint.style]).ÀM<�ÀMºÀMºx/// Defines how a new clip region should be merged with the existing clip /// region. /// /// Used by [Canvas.clipRect].ÀMÅBÀMýÀMý5/// Subtract the new region from the existing region.ÀN BÀNEÀNE6/// Intersect the new region from the existing region.„‰o„ބބ› „¡„ „út„ÿ„ÿ… ………p€œ…u…u…‹…š…™†€�†††" †*†)†Ÿ€Û†¤†¤†´†Á†À‡|€�‡�‡�‡� ‡˜‡—ˆ lˆˆˆˆ$ˆ#ˆ& ˆ.ˆ-À€ØÀÀÀ0À<À;Àó�ÀþÀþÀ ÀÀÀTpÀT/ÀT/ÀT: ÀTBÀTAÀTÀTÀTÀT'ÀTÀjj‰?ÀrBÀrB‡‰/// Instantiates an image [Codec]. /// /// This method is a convenience wrapper around the [ImageDescriptor] API, and /// using [ImageDescriptor] directly is preferred since it allows the caller to /// make better determinations about how and whether to use the `targetWidth` /// and `targetHeight` parameters. /// /// The `list` parameter is the binary image data (e.g a PNG or GIF binary data). /// The data can be for either static or animated images. The following image /// formats are supported: /// {@template dart.ui.imageFormats} /// JPEG, PNG, GIF, Animated GIF, WebP, Animated WebP, BMP, and WBMP. Additional /// formats may be supported by the underlying platform. Flutter will /// attempt to call platform API to decode unrecognized formats, and if the /// platform API supports decoding the image Flutter will be able to render it. /// {@endtemplate} /// /// The `targetWidth` and `targetHeight` arguments specify the size of the /// output image, in image pixels. If they are not equal to the intrinsic /// dimensions of the image, then the image will be scaled after being decoded. /// If the `allowUpscaling` parameter is not set to true, both dimensions will /// be capped at the intrinsic dimensions of the image, even if only one of /// them would have exceeded those intrinsic dimensions. If exactly one of these /// two arguments is specified, then the aspect ratio will be maintained while /// forcing the image to match the other given dimension. If neither is /// specified, then the image maintains its intrinsic size. /// /// Scaling the image to larger than its intrinsic size should usually be /// avoided, since it causes the image to use more memory than necessary. /// Instead, prefer scaling the [Canvas] transform. If the image must be scaled /// up, the `allowUpscaling` parameter must be set to true. /// /// The returned future can complete with an error if the image decoding has /// failed.Àr[ÀrfÀreÀroÀruÀrtÀrƒÀr‰ÀrˆÀr˜ÀržÀr�Àr®Às«Š¡À{åÀ{åˆ+/// Instantiates an image [Codec]. /// /// This method is a convenience wrapper around the [ImageDescriptor] API, and /// using [ImageDescriptor] directly is preferred since it allows the caller to /// make better determinations about how and whether to use the `targetWidth` /// and `targetHeight` parameters. /// /// The [buffer] parameter is the binary image data (e.g a PNG or GIF binary data). /// The data can be for either static or animated images. The following image /// formats are supported: {@macro dart.ui.imageFormats} /// /// The [buffer] will be disposed by this method once the codec has been created, /// so the caller must relinquish ownership of the [buffer] when they call this /// method. /// /// The [targetWidth] and [targetHeight] arguments specify the size of the /// output image, in image pixels. If they are not equal to the intrinsic /// dimensions of the image, then the image will be scaled after being decoded. /// If the `allowUpscaling` parameter is not set to true, both dimensions will /// be capped at the intrinsic dimensions of the image, even if only one of /// them would have exceeded those intrinsic dimensions. If exactly one of these /// two arguments is specified, then the aspect ratio will be maintained while /// forcing the image to match the other given dimension. If neither is /// specified, then the image maintains its intrinsic size. /// /// Scaling the image to larger than its intrinsic size should usually be /// avoided, since it causes the image to use more memory than necessary. /// Instead, prefer scaling the [Canvas] transform. If the image must be scaled /// up, the `allowUpscaling` parameter must be set to true. /// /// The returned future can complete with an error if the image decoding has /// failed. /// /// ## Compatibility note on the web /// /// When running Flutter on the web, only the CanvasKit renderer supports image /// resizing capabilities (not the HTML renderer). So if image resizing is /// critical to your use case, and you're deploying to the web, you should /// build using the CanvasKit renderer.À|À|À|À|$À|*À|)À|8À|>À|=À|MÀ|SÀ|RÀ|cÀ~N‰„À…eÀ…e‡/// Instantiates an image [Codec]. /// /// This method is a convenience wrapper around the [ImageDescriptor] API. /// /// The [buffer] parameter is the binary image data (e.g a PNG or GIF binary /// data). The data can be for either static or animated images. The following /// image formats are supported: {@macro dart.ui.imageFormats} /// /// The [buffer] will be disposed by this method once the codec has been /// created, so the caller must relinquish ownership of the [buffer] when they /// call this method. /// /// The [getTargetSize] parameter, when specified, will be invoked and passed /// the image's intrinsic size to determine the size to decode the image to. /// The width and the height of the size it returns must be positive values /// greater than or equal to 1, or null. It is valid to return a /// [TargetImageSize] that specifies only one of `width` and `height` with the /// other remaining null, in which case the omitted dimension will be scaled to /// maintain the aspect ratio of the original dimensions. When both are null or /// omitted, the image will be decoded at its native resolution (as will be the /// case if the [getTargetSize] parameter is omitted). /// /// Scaling the image to larger than its intrinsic size should usually be /// avoided, since it causes the image to use more memory than necessary. /// Instead, prefer scaling the [Canvas] transform. /// /// The returned future can complete with an error if the image decoding has /// failed. /// /// ## Compatibility note on the web /// /// When running Flutter on the web, only the CanvasKit renderer supports image /// resizing capabilities (not the HTML renderer). So if image resizing is /// critical to your use case, and you're deploying to the web, you should /// build using the CanvasKit renderer.À…†À…—À…–À…¢&À…¼À…»À‡ÔsÀ‡äÀ‡äÀ‡ùÀ‡þÀ‡ýÀˆ ÀˆÀˆÀ��©À‘FÀ‘F�0/// Loads a single image frame from a byte array into an [Image] object. /// /// This is a convenience wrapper around [instantiateImageCodec]. Prefer using /// [instantiateImageCodec] which also supports multi frame images and offers /// better error handling. This function swallows asynchronous errors.À‘ZÀ‘eÀ‘dÀ‘jÀ‘€À‘À‘»�-À‘ÈÀ‘ÈÀ‘âÀ‘íÀ‘ìÀ‘òÀ’À’À’êŠÚÀ˜�À˜�…�/// Convert an array of pixel values into an [Image] object. /// /// The `pixels` parameter is the pixel data. They are packed in bytes in the /// order described by `format`, then grouped in rows, from left to right, /// then top to bottom. /// /// The `rowBytes` parameter is the number of bytes consumed by each row of /// pixels in the data buffer. If unspecified, it defaults to `width` multiplied /// by the number of bytes per pixel in the provided `format`. /// /// The `targetWidth` and `targetHeight` arguments specify the size of the /// output image, in image pixels. If they are not equal to the intrinsic /// dimensions of the image, then the image will be scaled after being decoded. /// If the `allowUpscaling` parameter is not set to true, both dimensions will /// be capped at the intrinsic dimensions of the image, even if only one of /// them would have exceeded those intrinsic dimensions. If exactly one of these /// two arguments is specified, then the aspect ratio will be maintained while /// forcing the image to match the other given dimension. If neither is /// specified, then the image maintains its intrinsic size. /// /// Scaling the image to larger than its intrinsic size should usually be /// avoided, since it causes the image to use more memory than necessary. /// Instead, prefer scaling the [Canvas] transform. If the image must be scaled /// up, the `allowUpscaling` parameter must be set to true. À˜¦À˜±À˜°À˜º À˜¿À˜¾À˜Ç À˜ÌÀ˜ËÀ˜ÕÀ˜âÀ˜áÀ˜ëÀ™À™À™ À™À™À™À™%À™$À™3À™9À™8À™HÀ™NÀ™MÀ™^ÀG]‰qÀGmÀGmÀG€ÀGŒÀG‹ÀG“ÀGŸÀGžÀÂ9�¹ÀÂEÀÂEÀÂZÀÂgÀÂfÀÃô€ëÀÃþÀÃþÀÄÀÄÀÄÀÄá�›ÀÄíÀÄíÀÄþÀÅ ÀÅ ÀÆ~�$ÀÆŠÀÆŠÀÆ› ÀÆ£ÀÆ¢Àƪ ÀƲÀƱÀ ‚¼À À À )À )À )À ,À <À ;À¢Óƒ2À£ À£ B/// A variant of `_futurize` that can communicate specific errors.À£3À£3À£3À£6"À£OÀ£NÀ%[dÀ%�À%�+/// Signature for [Image] lifecycle events.À%² À%¹À%¸ÀT�mÀT»ÀT»1/// Callback signature for [decodeImageFromList].ÀTà ÀTçÀTæÀˆI�]À‰JÀ‰J€ø/// Signature for a callback that determines the size to which an image should /// be decoded given its intrinsic size. /// /// See also: /// /// * [instantiateImageCodecWithSize], which used this signature for its /// `getTargetSize` argument.À‰}À‰‚À‰�À‰‘À‰–À‰•À9úlÀ:0À:0-/// Signature for [Picture] lifecycle events.À:UÀ:^À:]ÀšdÀšSÀšS4/// Generic callback signature, used by [_futurize].Àš]Àš]Àš]ÀšpÀšsÀšrÀš|€…ÀšÂÀšÂ=/// Generic callback signature, used by [_futurizeWithError].ÀšÕÀšÕÀšÕÀšèÀšëÀšêÀšò ÀšûÀšúÀ›€ÕÀ›žÀ›ž€’/// Signature for a method that receives a [_Callback]. /// /// Return value should be null on success, and a string error message on /// failure.À›ªÀ›ªÀ›ªÀ›ÀÀ›ÏÀ›ÎÀ›Ú€±Àœ?Àœ?\/// Signature for a method that receives a [_CallbackWithError]. /// See also: [_Callbacker]ÀœTÀœTÀœTÀœjÀœ‚Àœ�Ÿj<€†€¤€µ€¶€Î€ï�-�F�y�«�¬�ù‚C‚“‚äƒ4ƒ‚ƒÓ„„„b„ˆ„‰„¨„è„÷„ù„ú……^…m…o…p…ª…ü† † ††3†�†œ†ž†Ÿ†Ë‡ ‡j‡y‡{‡|‡¡‡ùˆˆ ˆ ˆ7ˆvˆxˆyˆ¦ˆªˆû‰L‰˜‰ãŠjЍЬŠÜŠàŠì‹C‹k‹¨‹àŒŒ Œ$ŒtŒ¼� �D�H�T�¡�é�펎fŽnŽrŽÂ��d�h�v�z�Ç��/�€�„�Û�é‘8‘>‘i‘o‘—‘½‘ä’ ’’_’­’Õ’Û“!“n“““™“Ù“é”:”Š”É”Þ”÷•L•M•‹•‘•â–+–;–A–R–X–f–Ž–Þ–ä—#—s—y—š—ê—ô˜ ˜$˜=˜X˜r˜™˜«˜»˜Í˜Þ˜ß™%™+™x™ˆ™­™Ô™úššCšIš”š¡š§šä›G›H›¡›ì›íœ7œNœTœyœ œÆ��C�I�Œ�’�Ú�àžžYž“ž”žãžöŸŸ.ŸJŸKŸrŸ„Ÿ…ŸªŸ¼Ÿ½ŸäŸöŸ÷  / 0 U t u › Â Æ Ç õ û¡H¡a¡À¡ß¡à¢¢¢`¢°££"£m£º£÷£ý¤I¤”¤±¤·¤ß¤å¥1¥}¥È¦¦¦+¦x¦Æ§§a§~§‘§´§Ô§ó¨¨¨¨O¨U¨¤¨Æ¨ø©'©(©[©a©²©Ô©íªªªKª}ªªª«ªä««D«E«}«¯«Ü«Ý¬¬#¬g¬®¬´¬ÿ­M­j­p­­�­¥­Ð®®$®9®L®]®p®‚®ž®¥®Ã¯ ¯2¯M¯d¯¯˜¯½¯Æ¯Ì° °d°­°º°â°è°ì°í±6±l±r±ª±Å±õ±ù±ú²C²‹²‘²É³³+³Y³Š³Ž³�³ß´ ´´J´c´•´™´š´ãµµµWµrµ¢µ¦µ§µø¶%¶+¶c¶}¶®¶²¶³¶ñ·.·N·n·t·µ·¹·º¸¸ ¸_¸}¸ƒ¸Á¸ß¹¹R¹„¹¶¹èººººMºSº›ºÞºä».»{»º¼¼¼S¼�¼è½4½‚½Ò¾¾p¾�¾£¾ò¿¿G¿}¿³¿È¿ß¿ôÀ@À@+À@3À@@À@WÀ@yÀ@ˆÀ@¶À@ÑÀAÀAKÀA‰ÀAÆÀAêÀAõÀAýÀBÀBÀBÀBKÀB‘ÀB—ÀBãÀC*ÀCuÀCÄÀDÀDOÀD‹ÀDÉÀDðÀEÀE2ÀEKÀEQÀExÀE�ÀE·ÀE×ÀEðÀFÀF?ÀF~ÀF¼ÀFçÀFðÀFýÀGÀG;ÀGlÀG‰ÀG¢ÀG»ÀHÀHSÀHŸÀHÊÀHÓÀHÙÀHÝÀHÞÀI+ÀI1ÀI\ÀI�ÀIÊÀIÎÀIÏÀIÛÀIþÀJ ÀJ3ÀJ9ÀJeÀJyÀJÀJœÀJ´ÀJÌÀJäÀJüÀK$ÀK(ÀK)ÀK5ÀKpÀKqÀK}ÀK”ÀL9ÀL;ÀL<ÀLoÀLsÀLÀÀM ÀM)ÀM-ÀM~ÀMËÀNÀNhÀN¸ÀOÀOGÀOKÀO›ÀOæÀP7ÀPƒÀPÑÀQÀQeÀQ°ÀQÿÀREÀR`ÀRdÀR²ÀRÿÀSIÀS›ÀSèÀT9ÀTzÀT~ÀT¥ÀT©ÀT÷ÀU8ÀU‰ÀUÖÀV'ÀVvÀVÅÀVàÀVäÀVòÀVöÀWAÀWRÀWcÀW²ÀWÅÀX ÀX ÀXPÀXVÀX’ÀX˜ÀXõÀXþÀXÿÀY>ÀYDÀY“ÀY¢ÀY¨ÀYãÀYéÀZDÀZKÀZLÀZ‹ÀZ‘ÀZÜÀZíÀZóÀ[5À[;À[–À[�À[žÀ[ÛÀ[áÀ\/À\€À\�À\£À\ñÀ]À]$À]ƒÀ]ŽÀ]�À]ÍÀ]ÓÀ]üÀ^À^PÀ^VÀ^µÀ^»À_ À_5À_@À_AÀ_‰À_ÖÀ`#À`1À`7À`vÀ`|À`ÉÀaÀa!Àa'ÀasÀayÀaÖÀaßÀaàÀb-Àb{ÀbÅÀbËÀcÀc ÀcXÀcªÀc°ÀcüÀdÀd_ÀdhÀdiÀd¸Àe ÀeZÀe`Àe Àe¦ÀeóÀfDÀfJÀf—Àf�ÀfûÀgÀgÀgZÀg¨ÀgòÀgøÀh3Àh9Àh‹Àh×ÀhÝÀi*Ài0ÀiŽÀi˜Ài™ÀièÀjÀjÀj\ÀjbÀj²ÀjþÀk2Àk8ÀkƒÀk”ÀkšÀkùÀlÀlÀlTÀloÀluÀlÃÀlÉÀmÀm`Àm”ÀmšÀmåÀmöÀmüÀn[ÀnfÀngÀn·ÀnëÀnñÀo>ÀoDÀoŸÀo¦Ào§ÀoæÀoìÀp;Àp‡Àp­Àp³ÀqÀqÀqXÀq¦Àq÷ÀrFÀr�Àr–ÀròÀrúÀrûÀsEÀsKÀsšÀséÀsïÀt@ÀtiÀtoÀtÀÀtÆÀu&Àu,Àu<ÀuBÀu„ÀuÌÀuèÀv2ÀvIÀvUÀvVÀvžÀvŸÀvêÀwÀwÀwbÀw¯ÀwÞÀwäÀx5Àx�Àx§Àx­ÀxýÀyLÀy�Ày£ÀyòÀzÀzÀzxÀz~ÀzŽÀz”ÀzäÀzõÀ{=À{YÀ{£À{ºÀ{ÜÀ|%À|TÀ|ZÀ|«À|ùÀ}JÀ}iÀ}oÀ}»À~À~7À~=À~œÀ~¢À~²À~¸À~ñÀ8ÀˆÀ³À¾À¿À€ À€,À€2À€{À€ŒÀ€’À€ðÀ€úÀ€ûÀ�JÀ�iÀ�oÀ�¸À�ÉÀ�ÏÀ‚.À‚9À‚:À‚uÀ‚{À‚ÇÀƒÀƒCÀƒIÀƒ«Àƒ¹ÀƒºÀ„ À„À„_À„¬À„ÛÀ„áÀ…BÀ…OÀ…PÀ…™À…ÃÀ…ÉÀ†À†bÀ†°À†ÝÀ†ãÀ‡/À‡|À‡«À‡±ÀˆÀˆÀˆ(Àˆ.ÀˆgÀˆ®ÀˆýÀ‰)À‰6À‰7À‰…À‰�À‰£À‰åÀ‰ëÀŠLÀŠRÀŠbÀŠhÀŠ¡ÀŠ®ÀНÀŠøÀŠþÀ‹MÀ‹dÀ‹jÀ‹³À‹ÄÀ‹ÊÀŒÀŒÀŒjÀŒxÀŒyÀŒÅÀŒÓÀŒÙÀ�(À�?À�EÀ�ŽÀ�ŸÀ�¥À�ÝÀ�ãÀŽDÀŽQÀŽRÀŽ À޹ÀŽ¿À�À�]À�cÀ�¯À�üÀ�DÀ�JÀ�™À�½À�ÃÀ‘#À‘KÀ‘œÀ‘µÀ‘»À’À’ À’SÀ’£À’ÉÀ’ÏÀ“*À“0À“@À“FÀ“–À“¿À”À”?À”FÀ”GÀ”˜À”±À”·À•À•PÀ•}À•ƒÀ•åÀ•ëÀ•ûÀ–À–CÀ–’À–¨À–¶À–·À—À—!À—'À—pÀ—vÀ—¿À˜À˜DÀ˜JÀ˜§À˜­À˜½À˜ÃÀ˜ùÀ™GÀ™•À™žÀ™ŸÀ™ðÀš ÀšÀšXÀš¨ÀšÕÀšÛÀ›=À›CÀ›SÀ›YÀ›¨À›¾Àœ Àœ"Àœ0Àœ2Àœ3Àœ‹ÀœÆÀœÊÀ�'À�nÀ�rÀ�ÇÀžÀžqÀžÅÀžÉÀŸÀŸRÀŸVÀŸ¯ÀŸ³À À HÀ gÀ kÀ yÀ }À ÈÀ¡À¡À¡4À¡OÀ¡nÀ¡�À¡¨À¡½À¢À¢;À¢<À¢€À¢†À¢ÌÀ£À£À£À£RÀ£XÀ£šÀ£ÉÀ£ÐÀ£ÑÀ¤À¤CÀ¤IÀ¤”À¤áÀ¥*À¥uÀ¥{À¥«À¥»À¥ÁÀ¦À¦DÀ¦YÀ¦cÀ¦dÀ¦´À¦ÁÀ¦ÇÀ§À§RÀ§XÀ§À§…À§×À¨'À¨rÀ¨xÀ¨¥À¨­À¨¯À¨°À¨ÔÀ¨ØÀ¨æÀ¨êÀ©À©bÀ©žÀ©¯À©ïÀ©õÀªFÀªªÀª°ÀªþÀ«0À«8À«9À«tÀ«zÀ«ÄÀ¬À¬„À¬ŠÀ¬ÚÀ¬ÿÀ­À­ À­LÀ­‘À­¶À­¼À® À®|À®‚À®ÒÀ®÷À®ýÀ¯KÀ¯kÀ¯uÀ¯wÀ¯xÀ¯¢À¯¦À¯óÀ°7À°;À°IÀ°MÀ°™À°¥À°àÀ±À±/À±eÀ±kÀ±ÔÀ±ÚÀ²"À²rÀ²~À²„À²”À²šÀ²èÀ²ùÀ³JÀ³ƒÀ³ŒÀ³�À³ÂÀ³ÈÀ´/À´5À´}À´ÍÀ´ÙÀ´ßÀ´ïÀ´õÀµCÀµTÀµ]Àµ^Àµ¬ÀµÞÀµäÀ¶KÀ¶QÀ¶™À¶éÀ¶õÀ¶ûÀ· À·À·_À·pÀ·yÀ·{À·|À·¶À·ºÀ·ÑÀ¸ À¸"À¸mÀ¸{À¸|À¸ÂÀ¹À¹/À¹7À¹8À¹|À¹ÂÀº ÀºGÀºQÀºSÀºTÀºxÀº|ÀºŠÀºŽÀºàÀºìÀ»À»À»SÀ»¤À»ªÀ»õÀ»ûÀ¼HÀ¼¡À¼öÀ½À½À½À½DÀ½JÀ½£À½ÔÀ½ÚÀ¾À¾ À¾xÀ¾ÓÀ¾ÙÀ¾éÀ¾ïÀ¿>À¿bÀ¿nÀ¿oÀ¿ŽÀ¿”À¿åÀÀ3ÀÀKÀÀQÀÀ¦ÀÀ¬ÀÀùÀÁÀÁrÀÁxÀÁˆÀÁŽÀÁÍÀÂÀÂ3ÀÂ�ÀÂ�ÀžÀÂìÀÂòÀÃEÀ×ÀÃÀÀÃÆÀÄÀÄ_ÀÄ{ÀÄßÀÄîÀÅPÀÅVÀÅ™ÀÅÝÀÆ&ÀÆzÀÆ¿ÀÆÅÀÆÕÀÆÛÀÇ)ÀÇFÀÇ`ÀÇbÀÇcÀÇ¥ÀÇ©ÀÇïÀÈÀÈ"ÀÈjÀÈ€ÀÈ‹ÀÈŒÀÈÓÀÈÙÀÉ$ÀÉbÀÉhÀɶÀÊÀÊNÀÊjÀʺÀË ÀË.ÀË|ÀË¥ÀË©À˪ÀËÙÀËÞÀÌ)ÀÌtÀÌÃÀÍÀÍ`ÀÍeÀ͵ÀÎÀÎÀÎÀÎdÀÎeÀΆÀ΢ÀÎÖÀÎ×ÀÏÀÏ.ÀÏVÀÏ€ÀÏ©ÀÏÓÀÏýÀÐ&ÀÐKÀÐvÀПÀÐÊÀÐûÀÑ)ÀÑTÀшÀѸÀÑäÀÑåÀÒ'ÀÒcÀÒ£ÀÒáÀÓ!ÀÓaÀÓŸÀÓÕÀÔÀÔUÀÔ•ÀÔáÀÕ'ÀÕgÀÕ¹ÀÖÀÖEÀÖFÀÖ‡ÀÖÉÀÖÊÀ×À×/À×KÀ×fÀ×gÀוÀרÀ×ÜÀ×ÝÀØÀØ.ÀØYÀØ­ÀØ®ÀØôÀÙÀÙÀÙ ÀÙ9ÀÙ€ÀÙ„ÀÙ…ÀÙ¥ÀÙõÀÚÀÚFÀÚŠÀÚŽÀÚ�ÀÚÇÀÚ÷ÀÚøÀÛ1ÀÛ7ÀÛWÀÛ]ÀÛmÀÛsÀÛ¹ÀÛêÀÜ2ÀÜ8ÀÜ€ÀÜ•ÀÜ©ÀÜöÀÝGÀÝ–ÀÝíÀÞ#ÀÞ_ÀÞfÀÞÇÀÞËÀÞÌÀÞçÀß*ÀßoÀß³ÀßþÀà^ÀàbÀàcÀà›ÀàÜÀàÝÀá)Àá/ÀáqÀáÂÀâÀâ4Àâ:Àâ‡Àâ¨Àâ®ÀâÕÀâÛÀâëÀâñÀã@ÀãtÀã¾ÀãÔÀãðÀä=ÀäxÀä|Àä}Àä ÀäÚÀåÀå Àå!ÀåeÀåkÀå“Àå¯ÀæÀæÀæÀæ)ÀæNÀæŒÀæ�Àæ‘ÀæËÀçÀçWÀç]ÀçšÀçµÀçùÀçýÀçþÀè ÀèBÀèˆÀèŒÀè�ÀèÎÀèþÀéÀé6ÀéRÀé¤Àé¨Àé©ÀéÌÀéñÀê3Àê7Àê8ÀêyÀêÀêÐÀëÀë!Àë[ÀëaÀëÀë…ÀëîÀëôÀì[ÀìaÀìÈÀìÎÀíÀíkÀíwÀí}Àí�Àí“ÀíâÀîÀîWÀî–Àî´ÀïÀï Àï Àï2ÀïWÀïšÀïžÀïŸÀï×ÀðÀðÀðZÀð¨ÀðóÀñ@ÀñŽÀñ”ÀñÙÀñßÀò-ÀòQÀòWÀòÀÀòÆÀó/Àó5ÀóžÀó¤ÀóðÀôAÀôMÀôSÀôcÀôiÀô³ÀôÎÀõÀõ7Àõ€Àõ„Àõ…Àõ¬ÀõêÀö5Àö9Àö:ÀöŠÀöÈÀöÎÀöòÀ÷À÷UÀ÷vÀ÷‹À÷¬À÷ÌÀø'ÀønÀøyÀøÀø�Àø”Àø•Àø»ÀøÔÀù&ÀùnÀù¶ÀùÃÀúÀúBÀú”ÀúíÀû>ÀûDÀûHÀûIÀû›ÀûïÀü;ÀüAÀüiÀü¶ÀüÚÀý4Àý8Àý9ÀýdÀý‰ÀýÏÀýÓÀýÔÀþÀþÀþJÀþPÀþ`ÀþfÀþ¢ÀþÚÀÿ ÀÿTÀÿkÀÿ›ÀÿŸÀÿ Àÿ¾ÀÿÎÀ2ÀEÀOÀ_À„À®ÀÀÀ À3À=ÀuÀyÀzÀÁÀÓÀÙÀþÀÀUÀvÀÍÀïÀóÀôÀÀbÀ‚À ÀÎÀÖÀãÀ)À/À3À4ÀoÀuÀ¼ÀÖÀÜÀêÀÀ1ÀCÀ]À­À¸ÀÀÀÊÀÐÀàÀæÀ!ÀBÀ™À»À¿ÀÀÀèÀÀÀMÀUÀbÀ£ÀùÀ$ÀhÀpÀvÀzÀ{ÀºÀÀÀ À VÀ ‡À ¡À èÀ ìÀ íÀ À XÀ \À ]À iÀ À ¸À ×À ÝÀ À (À DÀ mÀ ‹À «À çÀ öÀ À !À JÀ oÀ wÀ £À àÀ 5À ?À NÀ tÀ |À ”À šÀ ²À ãÀ ûÀÀ1ÀYÀqÀwÀ¨ÀÔÀìÀòÀÀNÀfÀlÀŠÀÅÀÝÀãÀÀSÀkÀqÀ‹À¾ÀÖÀÜÀûÀ8ÀPÀVÀnÀ§À­ÀÄÀâÀæÀèÀéÀ4À8À{ÀÅÀÀBÀFÀyÀ}ÀµÀÇÀãÀéÀ6ÀbÀhÀ›À£À¤ÀñÀ?ÀwÀ°ÀÀÀÁÀãÀéÀ6ÀƒÀÎÀÔÀ ÀÀÀÀIÀaÀ{À‹À­À½ÀÜÀìÀðÀòÀóÀÀ1À=À[ÀgÀ�À™À¼ÀÉÀÀÀ À ÀLÀdÀ²ÀÿÀGÀ‘À¨À¿ÀÅÀ#À.À/ÀOÀUÀ®ÀÁÀÂÀßÀåÀ5ÀpÀ�À‚À¨À®ÀúÀ'À-ÀBÀHÀVÀtÀ”ÀšÀâÀÀVÀ˜À¹ÀÓÀíÀÀ!À,À4À>ÀTÀUÀgÀmÀ½À À WÀ ¤À íÀ óÀ!DÀ!PÀ!VÀ!fÀ!lÀ!ËÀ"À"À"À"À"YÀ"lÀ"ºÀ# À#=À#IÀ#JÀ#™À#èÀ$À$'À$(À$xÀ$¿À%À%IÀ%XÀ%ZÀ%[À%‡À%ÀÀ%ÁÀ%÷À%ûÀ&;À&?À&�À&¥À&©À&øÀ'GÀ'ŽÀ'ÖÀ($À(2À(6À(‚À(ÑÀ)À)À)*À).À)œÀ)ëÀ*À*`À*nÀ* À*°À*ØÀ*ëÀ*õÀ+À+.À+2À+3À+TÀ+pÀ+‡À+ˆÀ+ÆÀ+ÌÀ,À,YÀ,zÀ,¡À,¢À,áÀ,çÀ-2À-uÀ-–À-¾À-¿À-ÚÀ-ÛÀ.À.2À.3À.uÀ.‰À.ŠÀ.¤À.¥À.òÀ/#À/)À/zÀ/•À/›À/æÀ01À0€À0 À0³À0ÎÀ0ûÀ1'À1=À1tÀ1‰À1¬À1ÄÀ1ÊÀ1ÎÀ1ÏÀ2À2À2gÀ2}À2˜À2¬À2¼À2ØÀ2ëÀ2õÀ3 À3kÀ3oÀ3pÀ3¥À3«À3÷À4À4 À4RÀ4¡À4èÀ4îÀ5;À5TÀ5¤À5óÀ6=À6‰À6ÞÀ7 À79À7=À7>À7zÀ7€À7ÌÀ8À8GÀ8MÀ8œÀ8êÀ9À9iÀ9–À9´À9çÀ:À:À:4À:BÀ:jÀ:yÀ:ÇÀ:ÍÀ:ÑÀ:ÒÀ;#À;EÀ;KÀ;‹À;ÁÀ;ßÀ;ïÀ6À>„À>ÐÀ>îÀ>ôÀ?BÀ?kÀ?qÀ?¹À@ À@ À@&À@\À@bÀ@pÀ@‹À@«À@ÃÀ@ÉÀAÀA@ÀA_ÀA©ÀAºÀAÌÀAìÀB<ÀBŠÀB°ÀBæÀBñÀCÀCÀC ÀCBÀCvÀCÁÀCìÀD/ÀDsÀD°ÀDÉÀDÏÀE ÀE;ÀEAÀE^ÀExÀE~ÀE ÀE¾ÀEÙÀEáÀEçÀFÀF&ÀF,ÀFGÀFMÀFpÀF©ÀF³ÀF¹ÀFäÀFìÀFöÀFüÀGAÀG�ÀG³ÀGÅÀGÚÀGòÀHÀHnÀH¼ÀHÿÀIÀIÀI-ÀIXÀI\ÀI]ÀI©ÀIïÀIõÀJBÀJŒÀJÜÀK+ÀKuÀKÂÀKûÀKüÀLÀL2ÀL4ÀL5ÀLOÀL„ÀLÍÀLèÀLíÀM;ÀM]ÀMyÀM‡ÀMˆÀM×ÀMñÀMòÀNBÀN]ÀN^ÀN³ÀNüÀOIÀOyÀO°ÀOÁÀOâÀOìÀOöÀOþÀPÀPÀP?ÀP•ÀPîÀPïÀQ ÀQÀQ4ÀQ@ÀQXÀQ¥ÀQ½ÀRÀR?ÀRFÀR\ÀRlÀRpÀRqÀR¼ÀRáÀS#ÀS?ÀS@ÀSiÀSjÀS°ÀSÏÀSÐÀSÜÀT ÀTÀTÀT)ÀTJÀT~ÀT€ÀT�ÀT³ÀTïÀTðÀU$ÀU(ÀUdÀU~ÀU‚ÀUÌÀVÀVcÀV©ÀVôÀWÀW!ÀWZÀW^ÀWjÀWvÀW°ÀWñÀXÀX\ÀX§ÀXÄÀYÀY/ÀYPÀYVÀY^ÀYbÀYxÀY|ÀYˆÀY•ÀYÏÀZÀZPÀZ�ÀZÛÀZõÀ[DÀ[ŒÀ[­À[³À[»À[ÍÀ\À\3À\9À\wÀ\“À\ÑÀ\ÒÀ]À]À]TÀ]oÀ]pÀ]™À]ŸÀ]çÀ]íÀ^9À^NÀ^PÀ^QÀ^qÀ^uÀ^½À^×À^ÛÀ_À_0À_GÀ_mÀ_ƒÀ_„À_³À_¹À_íÀ`À`-À`.À`VÀ`\À` À`¦À`÷À`ýÀa>ÀanÀa’Àa“ÀaãÀbÀb ÀbWÀb|ÀbŽÀb�Àb‘ÀbÝÀbâÀc+ÀcFÀcKÀc„Àc¢Àc¶Àc·ÀcÑÀcÒÀcÞÀdÀdÀdnÀdŽÀd�Àd®Àd¯Àd»ÀeÀeÀe_Àe„Àe…Àe‘Àe¼ÀfÀf.ÀfCÀfcÀf}Àf…Àf ÀfÃÀg$Àg.ÀggÀgvÀg’Àg©ÀgçÀh+Àh8ÀhCÀhKÀhSÀhlÀhŠÀh�Àh­Àh±Àh²ÀhîÀi?Ài�Ài�ÀiœÀiÞÀiùÀiúÀjÀjgÀjiÀjjÀj�Àj‘ÀjàÀk0Àk~Àk¡Àk¥Àk÷ÀlEÀl`Àl ÀlÅÀmÀm\Àm¨ÀmøÀn ÀnÀnZÀn¤ÀnôÀoCÀo�ÀoàÀp/ÀpwÀp³Àp·ÀqÀqKÀq›Àq×ÀqÛÀr(Àr4ÀrYÀrmÀr�Àr–Àr´Àr¿Às Às5ÀsAÀs_ÀsÀs£Às¨ÀsªÀs«ÀsÎÀsÒÀt!ÀtqÀt¿ÀtâÀtæÀu:ÀuˆÀuÁÀuÅÀvÀvgÀvsÀvwÀvÂÀw Àw\Àw«Àw÷ÀxHÀx—ÀxßÀyÀyÀyiÀy³ÀzÀz?ÀzCÀz�ÀzœÀz ÀzÅÀzÉÀ{À{dÀ{¯À{×À|À|"À|6À|KÀ|iÀ|nÀ|–À|¢À|áÀ|þÀ}BÀ}jÀ}tÀ}»À}åÀ}ïÀ}÷À~?À~FÀ~KÀ~MÀ~NÀ~qÀ~uÀ~ÀÀ~ÄÀÀ`ÀŸÀ£ÀìÀ€;À€QÀ€UÀ€£À€ðÀ�<À�}À�ÌÀ‚À‚lÀ‚¼À‚óÀ‚÷ÀƒAÀƒ‹Àƒ¿ÀƒÃÀ„À„À„ À„EÀ„IÀ„™À„äÀ…/À…WÀ…„À… À…ÊÀ…ÕÀ…ÿÀ†KÀ†SÀ†®À†íÀ‡.À‡VÀ‡{À‡¢À‡©À‡·À‡ÍÀ‡ÑÀ‡ÓÀ‡ÔÀˆ$ÀˆFÀˆHÀˆIÀˆ˜ÀˆÁÀˆÅÀˆÓÀˆ×À‰!À‰BÀ‰§À‰¨À‰íÀ‰ñÀ‰ÿÀŠÀŠOÀŠ�ÀеÀŠÍÀŠùÀŠÿÀ‹NÀ‹fÀ‹™À‹ÃÀ‹ïÀ‹ðÀŒÀŒ$ÀŒsÀŒÃÀ�À�^À�‰À��À�ÅÀ�ÙÀ�ÚÀŽ ÀŽÀŽ_ÀŽ®ÀŽûÀ�IÀ�sÀ�yÀ�¯À�ÄÀ�ÅÀ�ÑÀ� À�À�À�YÀ�]À�¬À�úÀ‘AÀ‘‹À‘¸À‘ºÀ‘»À’À’RÀ’oÀ’wÀ’£À’±À’ÆÀ’ÊÀ’çÀ’éÀ’êÀ“'À“+À“yÀ“ÄÀ“ÜÀ“àÀ”,À”}À”¼À”ÀÀ• À•UÀ•¥À•ôÀ–@À–‘À–àÀ—(À—dÀ—hÀ—²À—üÀ˜LÀ˜ˆÀ˜¤À˜¸À˜ÅÀ˜ÓÀ˜éÀ™ À™À™1À™FÀ™dÀ™iÀ™†À™ºÀ™¾À™ÜÀšÀšÀšÀš_Àš›Àš©Àš½ÀšÓÀšíÀ›À›À›À›+À›oÀ›—À›ŸÀ›æÀœÀœÀœÀœÀœ.Àœ~ÀœœÀœàÀœûÀ�À�"À�HÀ�dÀ�„À�…À�±À�½À�ÃÀ�ÅÀ�ÆÀžÀž#Àž'Àž^ÀžrÀž¼ÀžÂÀŸÀŸbÀŸ±ÀŸÜÀŸâÀ À %À &À hÀ nÀ ¿À¡À¡À¡OÀ¡ZÀ¡\À¡]À¡�À¡…À¡“À¡—À¡æÀ¢ À¢!À¢UÀ¢[À¢©À¢ôÀ£5À£;À£KÀ£QÀ£ À£ºÀ£ÈÀ£ÉÀ¤À¤>À¤DÀ¤’À¤àÀ¤úÀ¥À¥À¥GÀ¥TÀ¥UÀ¥ À¥¦À¥ôÀ¦?À¦tÀ¦}À¦~À¦ÉÀ§À§À§VÀ§ªÀ§°À§ÀÀ§ýÀ¨À¨À¨9À¨?À¨�À¨ØÀ©À©À©/À©5À©~À©—À©¬À©®À©¯ÀªÀªÀªmÀª�Àª–ÀªæÀ«/À«€À«ÉÀ«ãÀ«éÀ¬8À¬„À¬¾À¬ÄÀ­À­4À­FÀ­HÀ­IÀ­¡À­ëÀ®À®!À®"À®.À®vÀ®‘À®“À®”À®ÆÀ®ÊÀ¯À¯À¯VÀ¯•À¯©À¯­À¯óÀ°À°"À°aÀ°¤À°ÌÀ°ÐÀ±À±MÀ±cÀ±ÐÀ±ôÀ²À²À²=À²CÀ²�À²ßÀ³À³6À³fÀ³}À³�À³‚À³ÀÀ³ÆÀ´ À´(À´LÀ´MÀ´‚À´¥À´¦À´îÀµÀµÀµcÀµpÀµ“Àµ”ÀµÛÀ¶ À¶:À¶;À¶~À¶¾À¶ÍÀ¶ÓÀ·DÀ·¹À·ÿÀ¸À¸CÀ¸ŠÀ¸ÏÀ¸ÜÀ¹*À¹+À¹pÀ¹·À¹ÆÀ¹ÌÀº9ÀºªÀºüÀºýÀ»BÀ»‰À»ÎÀ»ãÀ¼=À¼>À¼„À¼ÈÀ½ À½TÀ½yÀ½À½ìÀ¾]À¾£À¾¤À¾êÀ¿.À¿sÀ¿ºÀÀÀÀ(ÀÀvÀÀwÀÀºÀÀÜÀÀâÀÁ%ÀÁIÀÁOÀÁ–ÀÁÖÀÂÀÂaÀ¨ÀÂìÀÃÀà ÀÃeÀÛÀÃìÀÃíÀÄ<ÀÄ�ÀćÀÄÖÀÅÀÅcÀÅŠÀÅ�ÀÅÕÀÆ$ÀÆpÀÆvÀƉÀÆžÀÆ¿ÀÆÚÀÆõÀÇÀÇÀÇÀÇfÀÇ«ÀDZÀÇåÀÇëÀÈ:ÀȈÀÈËÀÉÀÉÀÉ^ÀɬÀÉùÀÊÀÊ+ÀÊEÀÊfÀÊ�ÀÊœÀÊ·ÀʽÀʾÀËÀËÀË7ÀË8ÀËzÀ˨ÀË®ÀÌÀÌNÀÌiÀÌjÀ̲ÀÌïÀÍ.ÀÍoÀ͵ÀÍùÀÎ=ÀÎIÀÎOÀλÀÏ+ÀÏ1ÀÏ¡ÀÐÀÐUÀÐVÀШÀжÀмÀÑ ÀÑ0ÀÑ6ÀÑ}ÀѱÀѲÀÑôÀÒ7ÀÒGÀÒeÀÒfÀÒ³ÀÒáÀÓÀÓÀÓ^ÀÓdÀÓ±ÀÓÿÀÔ*ÀÔlÀÔmÀÔ³ÀÔòÀÕ/ÀÕ5ÀÕ‚ÀÕÓÀÕþÀÖGÀÖHÀÖ�ÀÖÎÀÖÞÀÖßÀ×$À×hÀ׃ÀדÀ×”À×äÀØ1ÀØPÀØVÀØžÀؤÀØéÀÙÀÙ ÀÙIÀÙxÀÙ•ÀÙ–ÀÙÖÀÚÀÚ-ÀÚ.ÀÚcÀÚiÀÚ¹ÀÛÀÛQÀÛ�ÀÛ–ÀÛçÀÜ6À܈ÀÜÕÀÝÀÝmÀÝ{ÀÝÀÀÝÔÀÝÕÀÞ!ÀÞ4ÀÞ:ÀÞŠÀÞØÀßÀß[À߇ÀߨÀßëÀßñÀàÀànÀàuÀàyÀàzÀàÉÀàúÀáÀáLÀá”ÀáãÀâ2Àâ|Àâ´ÀâºÀãÀãRÀã›ÀãÏÀãÕÀä%ÀärÀäÂÀåÀåRÀåŸÀåîÀæ>Àæ�Àæ“ÀæáÀç0ÀçdÀçjÀç»ÀèÀè@ÀèBÀèCÀè�ÀèµÀèÇÀèÛÀèßÀèàÀé.ÀésÀé†Àé‡ÀéÀÀéàÀéáÀê(ÀêNÀêOÀê[ÀêŸÀê«ÀêìÀêíÀëAÀë`ÀëaÀë»ÀëçÀëèÀëôÀìRÀì~ÀìÀì‹ÀìÄÀìèÀìúÀìþÀí4Àí5ÀíAÀíŸÀíËÀíÌÀíØÀîÀî5ÀîGÀîKÀî�Àî‚ÀîŽÀî×ÀîþÀïÀïÀïcÀïdÀïpÀï¹ÀïèÀïúÀïþÀðUÀðVÀðbÀð»ÀðØÀðêÀðîÀñIÀñJÀñVÀñ¯ÀñÔÀñæÀñêÀòMÀòNÀòZÀò«ÀòÈÀòÚÀòÞÀó-Àó.Àó:Àó‹Àó°ÀóÂÀóÆÀôÀôÀô*Àô|ÀôœÀôûÀôÿÀõÀõ_ÀõzÀõŒÀõ�Àõ¨Àõ¹ÀõÉÀõÛÀõîÀöÀöÀö2Àö7Àö8ÀöDÀöWÀölÀö�Àö¨ÀöÃÀöÞÀöåÀ÷ À÷-À÷‡À÷‹À÷ŒÀ÷éÀø ÀøÀøÀø<ÀøPÀødÀøxÀøŒÀø¡Àø´ÀøÈÀøÍÀøÎÀøÚÀøõÀùÀù0ÀùKÀùfÀù�ÀùˆÀù±ÀùÕÀùîÀúÀúÀú*Àú:ÀúJÀúZÀúkÀúrÀúvÀúwÀúÔÀúüÀûÀûÀû7ÀûKÀû_ÀûsÀû‡ÀûœÀû¯ÀûÃÀûÈÀûÉÀûÕÀûñÀüÀüMÀüQÀüRÀü›Àü¸ÀüÊÀüÎÀýÀýÀý+ÀýGÀýgÀý£Àý§Àý¨ÀýñÀþÀþ Àþ$ÀþtÀþuÀþ�ÀþÂÀþâÀÿ5Àÿ9Àÿ:Àÿ“Àÿ¯ÀÿÁÀÿÅÀÿÞÀÿïÀÿÿÀÀ$À;ÀRÀWÀXÀdÀ™ÀËÀÏÀÐÀ"À_À`ÀlÀ‹À­ÀÑÀÕÀÖÀ ÀNÀOÀ[À’ÀÄÀôÀøÀùÀRÀ™ÀšÀ¦ÀéÀ À(ÀPÀžÀ«ÀæÀìÀðÀñÀQÀ“À”ÀäÀ ÀÀoÀpÀ|ÀÆÀêÀÀ-À�ÀŽÀÐÀÖÀÚÀÛÀ#ÀGÀKÀ”À•ÀåÀ À À @À VÀ eÀ tÀ ŒÀ ‘À ’À žÀ ëÀ À À À ^À wÀ xÀ „À ¤À ÇÀ ñÀ õÀ öÀ VÀ …À †À ’À °À ÔÀ À *À ;À ?À @À —À ÓÀ ÔÀ àÀ À .À \À {À ŒÀ �À ‘À äÀ#À$À0ÀEÀpÀ®À²À³ÀøÀÀÀÀÉÀÊÀÖÀÀ>ÀBÀCÀOÀnÀpÀqÀ³À·ÀÅÀ#À3ÀdÀjÀ�À½À¾ÀÀ À^ÀŠÀÇÀÀÀÀ3À9ÀŒÀÐÀéÀêÀÀÀnÀÀÀÜÀóÀôÀ$À*ÀzÀÉÀåÀëÀ9ÀˆÀ×À%À6À{À´À¶À·ÀÿÀÀTÀ ÀæÀêÀ0À4À€ÀÏÀíÀñÀ;À‹À¬ÀìÀÀqÀrÀšÀ›À§ÀÙÀÛÀÜÀ+ÀEÀ€À«À¬ÀÇÀêÀëÀ÷ÀÀEÀfÀ~ÀáÀ=À²À»ÀÁÀÛÀßÀàÀìÀÀ'ÀWÀjÀpÀˆÀšÀžÀ À¡ÀàÀäÀ ,À wÀ ÅÀ éÀ íÀ!;À!ŠÀ!ÖÀ"&À"tÀ"‚À"•À"³À"ñÀ#3À#fÀ#gÀ#�À#£À#ìÀ$6À$À$–À$—À$¼À$ÂÀ%À%VÀ%¦À%ÅÀ%ÜÀ%ÝÀ&À&À&^À&¥À&óÀ'BÀ'{À'�À'ÏÀ(À(nÀ(§À(ÁÀ(ÂÀ(áÀ(âÀ)2À)YÀ)_À)®À)ûÀ*À*À*NÀ*TÀ*šÀ*ÌÀ+ À+À+À+[À+aÀ+£À+çÀ,5À,’À,–À,—À,£À,ºÀ-À-À-À-OÀ-„À-©À-­À-®À.À.EÀ.FÀ.jÀ.vÀ.¡À.ìÀ.óÀ/À/À/À/{À/¨À/©À/íÀ/ùÀ0$À0oÀ0vÀ0¹À0ôÀ1À1#À10À1‚À1ˆÀ1ŒÀ1�À1èÀ2.À2/À2�À2›À2ÆÀ3À3À3FÀ3‰À3šÀ3žÀ3ŸÀ3íÀ4À4À46À4HÀ4^À4pÀ4€À4šÀ4ŸÀ4 À4ÄÀ4ÐÀ4ûÀ5FÀ5MÀ5qÀ5uÀ5vÀ5ÔÀ6À6À6-À62À6‡À6±À6ÉÀ6õÀ7À7"À7(À79À7=À7>À7˜À7¾À7¿À8 À8À8RÀ8rÀ8tÀ8uÀ8ªÀ8æÀ8÷À9/À90À9}À9ÀÀ9ÊÀ9ËÀ:À:eÀ:“À:œÀ:�À:êÀ;;À;~À;‡À;ˆÀ;ØÀ;æÀ;ïÀ;ñÀ;òÀ:À>ˆÀ>ØÀ>éÀ>ïÀ?>À?DÀ?jÀ?pÀ?€À?†À?ÓÀ@À@À@!À@8À@9À@À@ÊÀ@ôÀA*ÀA+ÀA7ÀAZÀA®ÀA²ÀA³ÀA¿ÀAòÀAóÀAÿÀBPÀBRÀBSÀBtÀB±ÀB³ÀB´ÀBïÀCÀCÀCdÀCfÀCgÀCšÀC¿ÀCÞÀCêÀD(ÀD?ÀDhÀD�ÀD¸ÀDàÀEÀE ÀEÀEÀEÀEKÀE\ÀEˆÀE‰ÀE¦ÀE§ÀE³ÀEñÀFÀFÀFvÀFÐÀG+ÀGOÀGVÀGZÀG\ÀG]ÀG­ÀGýÀHIÀHNÀH`ÀHvÀH‹ÀH¡ÀH´ÀH¼ÀHÐÀI.ÀI�ÀIèÀJ ÀJÀJÀJ+ÀJVÀJtÀJ½ÀJûÀKÀKSÀKmÀK¿ÀKÅÀLÀLFÀLaÀLŸÀLºÀM ÀMÀM%ÀM?ÀM\ÀMzÀM¬ÀMÒÀNÀN'ÀNBÀNJÀNlÀN‰ÀN§ÀNêÀOÀOBÀOeÀO—ÀOŸÀO¾ÀOÛÀOùÀP+ÀPQÀPlÀP�ÀPÁÀPÉÀPÍÀPÏÀPÐÀQ!ÀQpÀQ¾ÀR ÀR;ÀR?ÀRˆÀR•ÀRÀÀS ÀS^ÀS¢ÀS¨ÀSùÀTGÀTtÀT¯ÀTÅÀTãÀTùÀUÀUÀU^ÀU¥ÀUºÀUÀÀV ÀV5ÀV;ÀVnÀV¡ÀVÔÀWÀW:ÀW@ÀW�ÀWÛÀWáÀWïÀX/ÀXFÀX]ÀXtÀX‹ÀX•ÀXŸÀX¥ÀX·ÀX½ÀXÞÀXäÀXòÀY0ÀYLÀYhÀY„ÀY ÀYªÀY´ÀYºÀZAÀZGÀZUÀZ’ÀZµÀZØÀZûÀ[À[(À[2À[8À[ÁÀ[ÇÀ[ÕÀ\À\<À\bÀ\ˆÀ\®À\¸À\ÂÀ\òÀ]À] À]8À]TÀ]UÀ]¡À]±À]ÙÀ]îÀ^À^À^DÀ^EÀ^“À^®À^ÖÀ^ëÀ_À_À_AÀ_BÀ_YÀ_xÀ_—À_ªÀ_«À_ÛÀ`À`TÀ`�À`æÀ`çÀ`ÿÀa ÀaXÀaYÀa‚Àa—Àa®ÀaâÀaùÀbÀb+ÀbDÀbrÀb�Àb§Àb±ÀbüÀc&ÀcJÀcÀc£ÀcØÀcçÀd)Àd/Àd3Àd4Àd@ÀdcÀd�Àd£Àd©ÀdÌÀdìÀe#ÀeEÀemÀeqÀerÀe~Àe“Àe½Àf Àf$Àf%Àf1ÀfRÀfgÀf~Àf·ÀfÐÀfÿÀg#ÀgUÀgyÀg«ÀgºÀgßÀgåÀgéÀgêÀgöÀh Àh!Àh8ÀhqÀhŠÀh¹ÀhÝÀiÀi3ÀieÀitÀjÀjÀjÀjÀjÀj[Àj_Àj¯ÀjúÀkLÀkbÀk�ÀkóÀlÀlHÀlLÀlMÀl§Àl»ÀlôÀløÀm'ÀmlÀm€ÀmžÀm¢Àm£ÀmÒÀnÀn+ÀnIÀnMÀnNÀnœÀnÂÀnßÀnàÀo Ào@ÀoAÀo¦ÀoÛÀoÜÀp/Àp`ÀpaÀpÅÀpïÀpðÀqTÀq~Àq€Àq�Àq´Àq¸ÀqÆÀqÊÀrÀrfÀrµÀrÝÀs)ÀsTÀsqÀsÃÀsðÀsñÀt-ÀtŠÀtãÀtçÀtèÀu5Àu{ÀuÈÀv ÀvÀvÀvTÀv¦ÀvòÀw4Àw8Àw9Àw}ÀwƒÀwÑÀxÀx9ÀxTÀxŒÀx“Àx³ÀxñÀx÷ÀyYÀy]Ày^Ày¨Ày®ÀyýÀz4ÀzYÀz³ÀzûÀzÿÀ{À{7À{=À{ŒÀ{ÜÀ|)À|yÀ|§À|­À|öÀ}8À}dÀ}jÀ}·À~À~À~#À~1À~^À~dÀ~À~›À~¡À~ÊÀ~ÐÀ~ëÀ~ñÀÀ7ÀcÀ‰À£À°ÀìÀòÀúÀ€À€ À€À€^À€¬À€îÀ�$À�AÀ�¤À�ªÀ�äÀ‚$À‚OÀ‚À‚ÎÀƒÀƒ Àƒ%ÀƒnÀƒvÀƒ’ÀƒÖÀƒÞÀƒäÀ„À„À„À„`À„ŸÀ„ À„ñÀ…>À…eÀ…fÀ…¯À…çÀ†À† À† À†<À†…À††À† À†ÅÀ†ÆÀ†çÀ‡+À‡7À‡nÀ‡oÀ‡{À‡¾À‡¿À‡ËÀˆÀˆÀˆÀˆ?ÀˆkÀˆÀˆ…Àˆ¯ÀˆßÀ‰À‰À‰À‰À‰gÀ‰iÀ‰jÀ‰¢ÀŠÀŠÀŠÀŠ3ÀŠOÀŠPÀŠdÀЦÀвÀŠéÀŠêÀ‹À‹À‹8À‹PÀ‹lÀ‹…À‹£À‹¾À‹ÙÀ‹ñÀŒÀŒ ÀŒ&ÀŒ*ÀŒ+ÀŒ7ÀŒ�ÀŒ‚ÀŒŽÀŒÙÀŒÚÀŒæÀ� À�5À�IÀ�OÀ�À�¡À�ÃÀ�çÀ�ëÀ�ìÀ�øÀŽ+ÀŽ-ÀŽ.ÀŽ`ÀަÀާÀŽ¿ÀŽ×ÀŽØÀ�À�(À�_À�`À�lÀ�¬À�­À�¹À�úÀ�ûÀ�À�*À�VÀ�jÀ�pÀ�ÐÀ�ÔÀ�ÕÀ�áÀ‘À‘À‘À‘JÀ‘�À‘�À‘¨À‘ÀÀ‘ÁÀ’À’À’GÀ’HÀ’TÀ’“À’”À’ À’àÀ’áÀ’íÀ“À“<À“PÀ“VÀ“µÀ“¹À“ºÀ“ÆÀ“ûÀ“ýÀ“þÀ”1À”€À”�À”¢À”ÃÀ”ÄÀ”ÞÀ•$À•0À•gÀ•hÀ•tÀ•–À•äÀ•åÀ•ñÀ–GÀ–HÀ–TÀ–wÀ–£À–·À–½À–èÀ—À—>À—BÀ—CÀ—OÀ—ŒÀ—ŽÀ—�À—ÉÀ—ôÀ—õÀ˜À˜À˜YÀ˜ZÀ˜fÀ˜�À˜žÀ˜ªÀ˜ÖÀ˜×À˜ãÀ™+À™,À™8À™[À™‡À™›À™¡À™ÓÀ™õÀš(Àš,Àš-ÀštÀš´ÀšµÀšÁÀšèÀšêÀšëÀ›*À›.À›~À›ÑÀœÀœPÀœŒÀœÖÀœêÀ�5À�9À�:À�‡À�ÍÀžÀž'ÀžXÀž\Àž]Àž¡ÀžóÀŸ7ÀŸKÀŸ{ÀŸÀŸ€ÀŸÄÀŸÊÀ À bÀ ¨À ÌÀ¡ À¡À¡$À¡^À¡bÀ¡cÀ¡•À¡ÝÀ¡ñÀ¢7À¢[À¢_À¢`À¢“À¢ÜÀ¢ðÀ£FÀ£œÀ£ÕÀ£ÙÀ£ÚÀ¤(À¤<À¤\À¤`À¤aÀ¤¡À¤ÁÀ¤ÂÀ¥À¥'À¥9À¥=À¥„À¥…À¥¾À¥åÀ¥÷À¥ûÀ¦8À¦9À¦rÀ¦˜À¦ªÀ¦®À¦êÀ¦ëÀ§EÀ§ŠÀ§‹À§êÀ¨'À¨(À¨oÀ¨�À¨¡À¨ôÀ¨õÀ©OÀ©ƒÀ©„À©ÒÀ©øÀªÀªÀªÀª^Àª“ÀªÈÀ«À«.À«JÀ«XÀ«YÀ«xÀ«yÀ«¢À«¨À«ùÀ¬À¬,À¬<À¬]À¬pÀ¬zÀ¬�À¬“À¬”À¬äÀ­À­ À­ZÀ­¤À­íÀ®7À®=À®‚À®•À®¥À®óÀ¯À¯#À¯-À¯1À¯3À¯4À¯‰À¯¢À¯¦À¯óÀ°AÀ°ŽÀ°ÞÀ°âÀ±7À±‹À±äÀ²<À²�À²¸À²¼À³À³;À³?À³MÀ³QÀ³•À³ßÀ´/À´YÀ´£À´ëÀµÀµ_Àµ­ÀµÇÀ¶À¶À¶lÀ¶rÀ¶¾À·À· À·bÀ·‚À·ˆÀ·ëÀ¸NÀ¸°À¸¹À¸ºÀ¹ À¹À¹iÀ¹ÇÀ¹óÀ¹ùÀºSÀº°Àº¶À»À»‚À»çÀ»óÀ»ôÀ¼GÀ¼MÀ¼¥À¼ýÀ½SÀ½nÀ½tÀ½ÎÀ¾$À¾9À¾?À¾£À¿À¿jÀ¿tÀ¿uÀ¿µÀ¿»ÀÀÀÀpÀÀ€ÀÀ†ÀÀßÀÀÿÀÁÀÁhÀÁËÀÂ-ÀÂ6ÀÂ8ÀÂ9ÀÂpÀ˜ÀÂÒÀÂûÀÃPÀÃsÀÖÀùÀÃÜÀÃàÀÃñÀÃóÀÃôÀÄ%ÀÄMÀÄÀĨÀÄÉÀÄÍÀÄÞÀÄàÀÄáÀÅÀÅ=ÀÅwÀÅ ÀžÀÅáÀÆÀÆ(ÀÆGÀÆfÀÆjÀÆ{ÀÆ}ÀÆ~ÀÆ»ÀÆÝÀÆÿÀÇ,ÀÇEÀÇ^ÀÇwÀÇ�ÀÇ¡ÀÇ£ÀǤÀÇìÀÇðÀÈBÀÈUÀÈYÀÈgÀÈkÀÈáÀÈåÀÉ ÀÉ?ÀÉEÀÉ”ÀÉåÀÊ/ÀÊ~ÀÊÏÀË ÀËpÀË’À˘ÀËçÀÌÀÌ#À̆ÀÌéÀÍMÀͳÀ͹ÀÎÀÎJÀÎeÀÎkÀθÀÏ ÀÏKÀÏ^ÀÏoÀÏ~ÀϘÀ϶ÀÏÞÀÏøÀÐÀÐ@ÀÐ|ÀÐ�ÀмÀÑÀÑCÀÑmÀѳÀÑÇÀÒ"ÀÒ&ÀÒ'ÀÒrÀÒ’ÀÒ˜ÀÒçÀÓ8ÀÓ‚ÀÓÑÀÔ"ÀÔsÀÔÃÀÔåÀÔëÀÕ9ÀÕoÀÕuÀÕØÀÖ;ÀÖŸÀ×À× À×\À×¢À×½À×ÃÀØÀØcÀØ£ÀØ©ÀØõÀÙCÀÙ�ÀÙÛÀÚ*ÀÚOÀÚbÀÚuÀÚˆÀÚ¢ÀÚÀÀÚèÀÛÀÛÀÛ3ÀÛZÀÛ–ÀÛ©ÀÛÖÀÜÀÜFÀ܉ÀÜŠÀÜïÀÝKÀÝ�ÀÝ¥ÀݸÀÝËÀÝÞÀÝîÀÞÀÞÀÞ6ÀÞGÀÞPÀÞ]ÀÞkÀÞ¢ÀÞ×ÀÞíÀßÀßÀß%Àß:ÀßMÀß`ÀßpÀ߆Àß À߸ÀßÉÀßÒÀߨÀßÜÀßÝÀà-ÀàKÀàQÀàœÀàêÀá%Àá+ÀázÀáËÀâÀâdÀâµÀãÀãVÀãxÀã~ÀãÎÀäÀäÀäwÀäÙÀå<Àå¡Àå§ÀåöÀæFÀæiÀæoÀæ¼ÀçÀçOÀçaÀçtÀçŽÀç¬ÀçÔÀçñÀèÀè.ÀèUÀè{Àè·ÀèÊÀè÷Àé:ÀédÀéªÀé¾ÀéÎÀéßÀéðÀêÀêÀê2ÀêDÀêTÀêcÀêjÀênÀêoÀê¬ÀêÌÀêÍÀëÀëAÀëEÀëbÀë}Àë•Àë²ÀëÄÀëÞÀëãÀëäÀìDÀìhÀìlÀì‰Àì�Àì±ÀìÄÀìÜÀìùÀí Àí%Àí*Àí+Àí6ÀíIÀí^ÀílÀízÀíˆÀí–Àí¤Àí²ÀíÀÀíÎÀíÛÀíéÀíïÀîÀî:ÀîMÀî`ÀîxÀî‰ÀîšÀî°ÀîÈÀîåÀî÷ÀïÀïÀïÀï"Àï‚Àï¥ÀïÁÀïÕÀïéÀðÀðÀð0ÀðGÀð\ÀðuÀðzÀð{ÀðÍÀðëÀñ ÀñcÀñkÀñxÀñ¨ÀòÀò ÀòÀòÀòÀòÀòWÀòÀò¥Àò«ÀòçÀó6Àó|Àó®Àó´ÀôÀôSÀôaÀôgÀô®ÀôôÀõ!Àõ'ÀõmÀõ½Àö Àö'ÀöCÀöRÀöcÀöuÀö‡Àö¢ÀöÄÀöéÀöüÀ÷À÷ZÀ÷`À÷tÀ÷žÀ÷²À÷ÃÀ÷ÔÀ÷öÀøÀø Àø%ÀøCÀøIÀøMÀøNÀøZÀømÀø‚Àø’Àø–Àø—Àø×Àø÷ÀøøÀùOÀùyÀù}Àù Àù²Àù¿ÀùÌÀùèÀúÀúÀúÀúRÀúwÀú¿ÀúÛÀúÝÀúÞÀû(Àû=ÀûAÀûkÀû»ÀûùÀüÀüEÀüYÀü�ÀüªÀüÉÀüÏÀüßÀüüÀýÀýÀýÀýÀý4Àý5ÀýzÀý€ÀýÉÀþÀþ[ÀþqÀþ¯ÀþôÀÿ=Àÿ‡Àÿ´ÀÿüÀ>ÀYÀŽÀ”ÀÆÀÀAÀWÀ_ÀcÀdÀ�ÀðÀ=À‹ÀÜÀñÀLÀMÀ‚ÀÍÀÀGÀ‡À¢À°À¶À·ÀóÀÀAÀGÀKÀLÀhÀ‡ÀˆÀ¤À¾À¿ÀÀ#À$À€À³À´ÀèÀ<À>À?ÀrÀvÀ«ÀóÀCÀ‘À·À»À À UÀ £À ìÀ %À PÀ ‘À ¯À ÁÀ À À À :À ;À {À §À ¨À ÜÀ âÀ 0À ~À ÉÀ À gÀ ‘À —À ÞÀ äÀ òÀÀ0ÀOÀjÀtÀzÀÈÀÒÀØÀæÀ7ÀbÀ“ÀÄÀÊÀýÀHÀ“ÀÞÀ)À/ÀVÀ€ÀˆÀ’À˜ÀåÀ:ÀKÀQÀ›ÀÆÀÀ7À;À<ÀrÀxÀÐÀÀÀfÀ‡À¸À ÀIÀtÀxÀyÀ»ÀÁÀÀ\À—À£À¶ÀËÀíÀýÀÀÀgÀŒÀ©ÀÀÀÙÀÞÀßÀÀOÀSÀ�À‘ÀíÀÀÀrÀšÀ›ÀîÀ À À À^ÀbÀ…ÀÂÀÔÀÀ)À*ÀxÀ‰ÀŠÀÛÀðÀöÀAÀÀÀÀÏÀÑÀÒÀ ÀÀ]À£ÀîÀ:ÀŠÀ°À´ÀÀOÀžÀ®À²ÀþÀ MÀ œÀ éÀ!6À!†À!ÕÀ""À"=À"AÀ"ŽÀ"ØÀ#%À#GÀ#KÀ#šÀ#ßÀ$,À$}À$ÎÀ%À%AÀ%xÀ%¿À%ÅÀ&À&`À&®À&ùÀ'(À'.À'{À'¤À'ªÀ'ûÀ(IÀ(˜À(ÕÀ(óÀ(ùÀ)HÀ)—À)�À)ïÀ*À*À*nÀ*¿À+À+\À+ªÀ+õÀ,@À,PÀ,VÀ,¤À,ÎÀ,ÔÀ-À-À-dÀ-µÀ.À.RÀ.yÀ.…À.šÀ.¸À.ÑÀ.÷À/À/À/UÀ/ À/¦À/ýÀ0TÀ0ZÀ0jÀ0‡À0ÉÀ0ýÀ1À1lÀ1µÀ2À2À2À2'À2/À2BÀ2LÀ2’À2ÅÀ3À3pÀ3ÎÀ3ÏÀ3ßÀ3ëÀ3ýÀ4À46À4KÀ4aÀ4jÀ4¬À4²À4¶À4·À5À57À5=À5‹À5ØÀ6&À6qÀ6 À6¦À6óÀ7=À7‰À7ØÀ7ëÀ7ñÀ8BÀ8‘À8ØÀ9)À9zÀ9ÉÀ:À:À:UÀ:¤À:õÀ;>À;wÀ;}À;ÍÀ<À'À>wÀ>ÆÀ>ôÀ>úÀ?8À?HÀ?]À?zÀ?‘À?¶À?ÏÀ?ÖÀ?ûÀ@À@sÀ@|À@‚À@ÅÀAÀAÀAmÀAÄÀAÊÀAÚÀA÷ÀB9ÀBqÀB’ÀBàÀC.ÀC{ÀCŠÀC–ÀC ÀC¨ÀC»ÀCÅÀDÀD[ÀDaÀDeÀDfÀDÈÀDæÀEÀEÀE)ÀENÀEeÀE~ÀEƒÀE„ÀEÔÀE÷ÀF ÀF"ÀF2ÀFJÀF]ÀFgÀFwÀF{ÀF|ÀFÇÀFìÀG1ÀGMÀGNÀGhÀGiÀG³ÀG¹ÀHÀHÀH8ÀHLÀH\ÀHxÀH‹ÀH•ÀH¬ÀIÀIÀIÀIÀIcÀIgÀI£ÀIßÀIðÀJÀJÀJfÀJ°ÀJéÀJïÀK<ÀK‹ÀK¡ÀK«ÀK¬ÀKæÀKìÀL2ÀL8ÀLzÀL�ÀL™ÀLšÀLÐÀLÖÀMÀM.ÀM9ÀM;ÀM<ÀM†ÀM’ÀM–ÀMµÀMÃÀMûÀN ÀN ÀNCÀNPÀNRÀNSÀNˆÀNŒÀNÓÀOÀOXÀO\ÀO¥ÀOõÀP>ÀP[ÀP_ÀP¯ÀPøÀQ-ÀQ1ÀQ~ÀQ½ÀQÁÀQçÀQëÀR6ÀR†ÀRÔÀS#ÀSmÀS ÀS¤ÀSïÀT6ÀTNÀT‘ÀT¯ÀTµÀTþÀUFÀU–ÀUåÀV2ÀVuÀV{ÀVÂÀVØÀW&ÀW'ÀWoÀWuÀW¡ÀW§ÀW·ÀW½ÀXÀXCÀXRÀXSÀX¤ÀXõÀYDÀY�ÀYœÀY¢ÀYîÀZ?ÀZ�ÀZÕÀ[#À[mÀ[sÀ[ÀÀ[ÆÀ[êÀ[ðÀ\>À\ŠÀ\ÚÀ]*À]OÀ]UÀ]£À]ìÀ^=À^‹À^ÙÀ_)À_qÀ_žÀ_¤À_îÀ`À` À`À`HÀ`pÀ`‡À`ÇÀ`ðÀa'Àa`ÀazÀa”ÀaœÀa¦Àa¬ÀaûÀbIÀb—ÀbµÀb»ÀbÉÀböÀc9ÀcaÀcxÀc¸ÀcïÀd(ÀdBÀdJÀdTÀdZÀd«ÀdñÀe;ÀeAÀeOÀe|Àe“ÀeçÀf Àf:ÀfQÀf²ÀfëÀgÀg ÀgÀgÀghÀg±ÀhÀh:Àh@ÀhdÀhjÀh©Àh¯ÀhýÀiKÀiœÀiçÀj6Àj„ÀjÏÀkÀkkÀk¼Àk×ÀkÝÀkíÀkóÀlCÀleÀl­ÀlÃÀlðÀlñÀm1ÀmPÀmVÀm•Àm›ÀmäÀn(Àn:Àn;Àn—ÀnäÀo6Ào<Ào{Ào�ÀoÏÀpÀpAÀpcÀpdÀp§ÀpìÀq3ÀqhÀqnÀq“Àq©ÀqªÀqúÀrJÀrrÀrsÀrÂÀs ÀsÀs#ÀsiÀs{Às¢Às£ÀsøÀtÀtÀtiÀtµÀuÀu-ÀuPÀuQÀu¡ÀuÜÀvÀvÀvWÀv­ÀvÉÀvÏÀw!ÀwoÀw¿ÀwìÀx Àx ÀxYÀxpÀxvÀxÌÀxÒÀyÀyÀynÀy¶ÀyßÀyåÀz/ÀzCÀzœÀz�ÀzëÀ{ À{À{gÀ{mÀ{±À{·À| À|QÀ|¡À|ÛÀ|ÜÀ}*À}LÀ}RÀ}±À}·À}ûÀ~À~SÀ~›À~óÀEÀFÀ”À¨À®À€À€ À€NÀ€TÀ€¦À€îÀ�À�NÀ�OÀ� À�òÀ‚EÀ‚VÀ‚\À‚°ÀƒÀƒUÀƒ¤ÀƒóÀ„FÀ„™À„èÀ…9À…UÀ…[À…“À…åÀ†9À†ˆÀ†ÊÀ†ÐÀ‡À‡EÀ‡KÀ‡YÀ‡zÀ‡™À‡ÒÀˆÀˆ.ÀˆhÀˆ¤Àˆ³Àˆ»ÀˆÅÀˆËÀ‰À‰hÀ‰ÃÀŠÀŠ'ÀŠ-ÀŠsÀŠÀÀŠôÀŠúÀ‹JÀ‹™À‹åÀ‹ýÀŒÀŒ/ÀŒ0ÀŒ�ÀŒÓÀ�&À�,À�|À�ÎÀŽÀŽnÀŽÀÀ�À�gÀ�tÀ�zÀ�¯À�ÒÀ�ÓÀ�À�bÀ�À�³À�´À‘À‘KÀ‘QÀ‘ŸÀ‘¥À’À’À’³À’´À’ãÀ’éÀ“.À“IÀ“hÀ“iÀ“¹À“ôÀ“úÀ”eÀ”ÔÀ”ýÀ”þÀ•OÀ•‘À•—À–À–sÀ–ŸÀ– À–ðÀ—@À—fÀ—lÀ—±À—ëÀ—ìÀ˜<À˜À˜…À˜ùÀ™lÀ™°À™±À™þÀšOÀšrÀšxÀšãÀ›RÀ›{À›|À›ÇÀœÀœhÀœ‹Àœ‘ÀœþÀ�oÀ�¨À�©À�åÀ�ëÀž+ÀžxÀžÂÀŸÀŸgÀŸ·ÀŸãÀŸéÀ XÀ ËÀ ÑÀ¡)À¡‡À¡ˆÀ¡½À¡ÃÀ¢ À¢UÀ¢�À¢ªÀ¢«À¢ùÀ£PÀ£‹À£ŒÀ£ÛÀ¤'À¤-À¤|À¤•À¤›À¤çÀ¥0À¥CÀ¥‡À¥ˆÀ¥ÏÀ¥ÕÀ¦#À¦qÀ¦¾À§ À§NÀ§TÀ§¢À§ïÀ¨=À¨„À¨•À¨ÜÀ¨ÝÀ©$À©=À©bÀ©cÀ©¯À©¿À©ÅÀªÀªÀª#ÀªoÀª¼ÀªúÀ«À«OÀ«›À«¡À«òÀ¬?À¬ŒÀ¬’À¬ÜÀ­(À­uÀ­¯À­°À­õÀ­ûÀ®BÀ®HÀ®ŽÀ®ØÀ®ÞÀ®îÀ®ôÀ¯DÀ¯]À¯§À¯¨À¯íÀ¯óÀ°CÀ°�À°–À°ÜÀ±&À±,À±<À±BÀ±�À±®À±úÀ±ûÀ²EÀ²KÀ²—À²¨À²®À²÷À³HÀ³_À³eÀ³®À³üÀ´HÀ´�À´àÀµ+ÀµvÀµÅÀ¶À¶\À¶–À¶œÀ¶ÃÀ¶ÉÀ¶ÙÀ·*À·vÀ·�À·ïÀ¸9À¸:À¸~À¸„À¸ÕÀ¹.À¹�À¹ÕÀº ÀºÀºcÀº´À»À»UÀ»¥À»ùÀ¼EÀ¼KÀ¼œÀ¼ìÀ½AÀ½˜À½ÈÀ¾À¾jÀ¾®À¾´À¿À¿VÀ¿¡À¿ïÀÀDÀÀJÀÀžÀÀïÀÁ8ÀÁ>ÀÁ�ÀÁªÀÁ°ÀÁ¾ÀÁÓÀÁüÀÂÀÂ&ÀÂ.ÀÂ4ÀÂbÀ˜ÀžÀÂ÷ÀÃÀÃ6ÀÃ<ÀÃNÀÃ}ÀÞÀÃÕÀÄ ÀÄ3ÀÄRÀÄnÀÄ«ÀÄÉÀÄçÀÅ-ÀÅ[ÀʼnÀÅšÀůÀÅãÀÆ&ÀÆMÀÆWÀÆ]ÀÆlÀÆtÀÆ~ÀÆ„ÀÆÝÀÆãÀÆñÀÇÀÇJÀÇ]ÀÇtÀLJÀÇ ÀǨÀÇ®ÀÇÜÀÈÀÈÀÈqÀÈ�ÀȰÀȶÀÈÈÀÈ÷ÀÉÀÉOÀɃÀÉ­ÀÉØÀÉôÀÊ1ÀÊOÀÊmÀʳÀÊáÀËÀË ÀË5ÀËiÀˬÀËÂÀËöÀÌ*ÀÌVÀÌ`ÀÌfÀÌuÀÌ}À̇ÀÌ�ÀÌÖÀÍ!ÀÍTÀÍZÀÍjÀÍpÀ;ÀÍÕÀÍçÀÍøÀÎÀÎ0ÀÎIÀÎcÀÎwÀΈÀÎ�ÀÎŽÀÎÒÀÎØÀÏ)ÀÏ‚ÀÏÕÀÐ)ÀÐ{ÀÐÍÀÑÀÑ ÀÑZÀÑ¢ÀѨÀÑùÀÒ9ÀÒdÀÒjÀÒ¸ÀÓÀÓÀÓTÀÓ¡ÀÓñÀÓ÷ÀÔRÀÔcÀÔiÀÔwÀÔŒÀÔµÀÔÈÀÔßÀÔçÀÔíÀÕÀÕQÀÕWÀÕ°ÀÕÎÀÕïÀÕõÀÖÀÖ6ÀÖ†ÀÖÕÀ×&À×BÀׇÀ×ÑÀØ ÀØ4ÀØjÀØ“ÀغÀØêÀÙÀÙÀÙqÀÙÌÀÚ&ÀÚhÀÚ”ÀÚÀÀÚÿÀÛ>ÀÛJÀÛkÀÛÉÀÛÓÀÛÙÀÛèÀÛðÀÛúÀÜÀÜYÀÜ_ÀÜmÀÜ‚ÀÜÆÀÜÙÀÜðÀÝÀÝÀÝ$ÀÝ*ÀÝXÀÝŽÀÝ”ÀÝíÀÞ ÀÞ,ÀÞ2ÀÞDÀÞsÀÞÃÀßÀßcÀßÀßÄÀàÀàLÀà„Àà¯ÀàåÀáÀá5ÀáeÀá�Àá“ÀáîÀâEÀâ ÀâýÀãHÀãŽÀã·ÀãÑÀä Àä(ÀäDÀäˆÀä´ÀäàÀäïÀå&Àå]Àå’ÀåÇÀåÍÀæ'Àæ�ÀæÙÀç ÀçOÀç[Àç|ÀçêÀçôÀçúÀè ÀèÀèÀè!Àè1Àè7Àè„Àè™Àè®Àè¿ÀèÞÀèõÀé Àé&Àé:ÀéKÀéPÀéQÀéžÀé¤ÀéôÀê ÀêÀê5ÀêŒÀêŽÀê�ÀêÝÀëÀë;Àë˜ÀëžÀëÒÀëñÀìÀìlÀìpÀìqÀìÂÀìàÀìäÀíÀí'Àí8ÀíHÀíZÀímÀírÀísÀíÏÀî+ÀîpÀî•Àî–Àî¢ÀîðÀïÀï Àï,ÀïDÀï`Àï‰Àï²ÀïÛÀðÀð ÀðÀð$Àð(Àð)Àð5ÀðcÀð}Àð¹ÀðÆÀðêÀñOÀñUÀñYÀñZÀñ¼ÀòÀòÀòpÀò‘Àò•Àò±ÀòÂÀòÒÀòäÀò÷ÀóÀó0Àó5Àó6ÀóBÀó“Àó®Àó¯Àó»ÀôÀôEÀôFÀôRÀô©ÀôÈÀôÉÀôÕÀõ8ÀõiÀõjÀõvÀõµÀõ¶ÀöÀöCÀöDÀöPÀö¨ÀöÐÀöÑÀöÝÀ÷;À÷gÀ÷hÀ÷tÀ÷œÀ÷¼À÷úÀøÀøÀøÀøÀøkÀøœÀø�Àø©ÀøÈÀøùÀùÀù)Àù-Àù.Àù~Àù²Àù³Àù¿ÀúÀú9ÀúSÀú ÀúîÀû0ÀûˆÀûŒÀû�ÀûãÀüÀüÀüÀü4ÀüEÀüUÀügÀüzÀüŠÀü Àü¥Àü¦Àü²ÀüíÀýÀýAÀýEÀýFÀý™ÀýÚÀýÛÀýçÀþ:ÀþlÀþªÀþ®Àþ¯ÀÿÀÿkÀÿlÀÿxÀÿ°ÀÿáÀÿåÀÿæÀ?À~ÀÀ‹À©ÀØÀùÀ?ÀCÀDÀšÀÓÀÔÀàÀÀ3ÀZÀ À¤À¥ÀÀ@ÀAÀMÀ‚À°À´ÀµÀÀMÀNÀZÀ�À¯ÀÏÀÀÀÀuÀ•À™À´ÀÃÀÒÀáÀðÀÀ)À.À/À;À[ÀˆÀŒÀ�ÀâÀ/À0À<ÀfÀ†À ÀÞÀ:À@ÀDÀEÀžÀ¾ÀÂÀÝÀîÀþÀ À #À DÀ \À aÀ bÀ nÀ ›À ½À ÿÀ À À aÀ ÁÀ ÂÀ ÎÀ À +À MÀ ¥À ©À ªÀ óÀ À À 6À MÀ dÀ …À �À ¢À £À ¯À ôÀ &À tÀ xÀ yÀ ÁÀ êÀ îÀÀ:À[ÀsÀxÀyÀ…À¯ÀÏÀéÀ'ÀƒÀ‰À�ÀŽÀçÀÀ À&À7ÀGÀYÀlÀ�À¥ÀªÀ«À·ÀñÀÀRÀVÀWÀ¨ÀÊÀÎÀëÀùÀÀÀ;ÀSÀXÀYÀeÀÄÀäÀòÀÀÀ%À8ÀJÀ\ÀmÀƒÀ–À�À¡À¢À­ÀÀÀÕÀãÀñÀÿÀ ÀÀ)À5ÀCÀQÀWÀvÀ�À¡À±ÀÃÀÖÀíÀÀÀ9ÀQÀVÀWÀcÀ�ÀÎÀÒÀÓÀ6À”À•À¡ÀÝÀÿÀ#ÀIÀ]ÀnÀÀ•À¨ÀÉÀÐÀéÀ7À=ÀAÀBÀ£ÀÄÀÈÀçÀùÀÀÀ6ÀNÀjÀoÀpÀ|ÀÁÀãÀÀ!ÀKÀ_ÀoÀ~À�À¡À±ÀÀÀÑÀãÀùÀ À-À4ÀMÀ›À¡À¥À¦À±ÀÆÀÛÀðÀþÀ ÀÀ(À6ÀDÀRÀ`ÀnÀ|À‰À�À´À×ÀéÀýÀÀ%À;ÀOÀbÀwÀ�À®ÀÆÀâÀçÀèÀôÀ<À^À€ÀŸÀÉÀÝÀðÀÀÀ+À;ÀJÀ[ÀmÀƒÀ–À·À¾À×À %À +À /À 0À ;À PÀ eÀ zÀ ˆÀ –À ¤À ²À ÀÀ ÎÀ ÜÀ êÀ øÀ!À!À!À!>À!aÀ!sÀ!ŠÀ! À!¸À!ÑÀ!åÀ!øÀ" À"#À"DÀ"\À"xÀ"}À"~À"ŠÀ"°À"ÔÀ#À#À#À#\À#’À#“À#ŸÀ#ÚÀ$&À$RÀ$vÀ$¡À$ÙÀ$ÝÀ$ÞÀ$êÀ%5À%ŽÀ%’À%“À%ŸÀ%ìÀ&À&YÀ&_À&¦À&ªÀ&«À'À'-À'NÀ'fÀ'yÀ'‘À'–À'—À'£À'îÀ(À(^À(bÀ(cÀ(²À(ÖÀ(ÚÀ(ùÀ)À)#À)DÀ)\À)aÀ)bÀ)nÀ)€À)‘À)³À)ÉÀ)âÀ)üÀ*À*!À*'À*IÀ*ŒÀ*�À*µÀ*ßÀ+*À+0À+}À+˜À+íÀ+öÀ+üÀ+ýÀ,DÀ,ƒÀ,„À,®À,ÎÀ,óÀ-À-=À-sÀ-•À-·À-íÀ.#À.WÀ.‹À.±À.ÖÀ.ýÀ/%À/+À/,À/OÀ/�À/ÞÀ0À0À0=À0SÀ0fÀ0zÀ0ŽÀ0¨À0ºÀ0ÍÀ0÷À1 À1À1À1.À1|À1‚À1†À1‡À1“À1¨À1¹À1ØÀ1ïÀ2À2 À24À2EÀ2KÀ2|À2}À2¥À2ÒÀ3 À3&À3DÀ3¢À3¨À3äÀ3ÿÀ4eÀ4nÀ4tÀ4¬À4­À4ÓÀ4éÀ4üÀ5À5$À59À5FÀ5TÀ5~À5�À5¤À5¥À5¾À6 À6À6À6À6"À67À6LÀ6ZÀ6hÀ6uÀ6ŠÀ6˜À6¦À6´À6ÁÀ6ÏÀ6ÕÀ6öÀ7À76À7NÀ7jÀ7|À7›À7²À7ÉÀ7ÜÀ7÷À7üÀ7ýÀ8 À8aÀ8´À8¸À8¹À9À9)À9-À9JÀ9`À9oÀ9…À9£À9¨À9©À9µÀ9÷À9ùÀ9úÀ:(À:gÀ:hÀ:°À:´À:èÀ:ìÀ;3À;uÀ;·À;ÐÀ<À<À<`À<¢À<ÃÀ<ìÀ<íÀ=.À=4À=À=ÂÀ=ãÀ> À>À>8À>>À>�À>ÜÀ?%À?UÀ?VÀ?˜À?žÀ?ÕÀ@$À@sÀ@¼À@ÂÀAÀA`ÀA�ÀA“ÀAãÀB,ÀBEÀBKÀBšÀB¯ÀBÛÀBÜÀC,ÀCOÀCaÀCbÀC¨ÀC®ÀCüÀDÀD,ÀD-ÀDvÀD|ÀDÍÀDÿÀEÀE!ÀE"ÀErÀE¼ÀEØÀEÞÀFÀF*ÀF+ÀF7ÀFhÀF€ÀF¥ÀFÙÀFßÀFõÀGEÀGbÀG|ÀG�ÀGÌÀGÖÀGàÀGçÀGëÀGìÀHJÀHŸÀH ÀH¬ÀHÙÀHñÀIÀIJÀIPÀIQÀIvÀIžÀIÔÀIØÀIÙÀJ9ÀJÀJ€ÀJŒÀJŸÀJ·ÀJÇÀJßÀJòÀJüÀKÀK/ÀK3ÀK4ÀKÀK¤ÀKèÀLÀLÀLÀL ÀL,ÀLGÀL[ÀLkÀL‡ÀLšÀL¤ÀL»ÀMÀM ÀM!ÀM-ÀM‹ÀM´ÀMµÀMÁÀMãÀMåÀMæÀN-ÀN1ÀNvÀN»ÀN¿ÀNåÀNéÀO4ÀO�ÀOÉÀPÀPaÀP¬ÀPÜÀPàÀQ+ÀQrÀQ“ÀQÔÀRÀR7ÀRmÀRnÀR©ÀR¯ÀRóÀS:ÀSqÀS¶ÀSòÀT ÀT ÀT:ÀT@ÀT‹ÀTÛÀU ÀU:ÀU<ÀU=ÀU�ÀUºÀUÎÀUÒÀUÓÀVÀV7ÀV8ÀVDÀVoÀVpÀV|ÀV—ÀV²ÀVöÀVüÀW3ÀWOÀWnÀW‚ÀWÕÀXÀXAÀXUÀXYÀXZÀX³ÀXíÀXîÀYÀY ÀYÀYXÀYZÀY[ÀYpÀYtÀY°ÀY¿ÀYÙÀYßÀZ*ÀZuÀZ�ÀZ•ÀZÖÀZÜÀ[+À[DÀ[UÀ[ƒÀ[¢À[½À\À\À\CÀ\gÀ\‘À\¼À\ãÀ] À]4À]5À]eÀ]kÀ]½À]àÀ]õÀ]öÀ^5À^;À^‰À^ÕÀ_À_.À_/À_�À_œÀ_�À_ÏÀ_ÕÀ`À`À`;À`®À`äÀaÀaÀaÀaYÀa_Àa’ÀaÎÀaÏÀbÀb"Àb_Àb®ÀbÕÀbÛÀcÀchÀc·ÀcÙÀcíÀdÀdÀdYÀd]Àd^Àd°Àd¾ÀdÞÀe9Àe=Àe>ÀenÀetÀe½ÀfÀf&Àf,ÀfRÀfŸÀféÀg4Àg€ÀgÎÀhÀhkÀh¯ÀhµÀiÀi$Ài9ÀiqÀi†Ài�Ài²ÀiÁÀiâÀiêÀi÷ÀjÀj)Àj8ÀjOÀj‚Àj¹ÀjûÀkÀkÀkÀkÀkÀkRÀkXÀk Àk¦ÀkÉÀlÀl9ÀlLÀlRÀlhÀl~ÀlªÀlåÀmÀmDÀmJÀm�Àm¨Àm®ÀmåÀnÀn ÀnÀn#Àn$Àn0ÀnSÀnuÀnˆÀnŽÀn¬ÀnÌÀnîÀoÀoÀoÀo'ÀoeÀofÀo²ÀpÀp ÀpZÀpuÀp�Àp•Àp–ÀpÓÀq Àq Àq$ÀqqÀq£ÀqØÀqÙÀqõÀrÀrOÀriÀrrÀrsÀrÏÀrÐÀs,Às-Às|ÀsÔÀsÚÀsÛÀsóÀs÷ÀsøÀtÀtGÀtIÀtJÀt‘Àt•ÀtäÀtúÀu8Àu[Àu\ÀuªÀu¿ÀvÀvEÀvwÀv¤ÀvÂÀvÆÀvÇÀwÀwÀw@Àw~ÀwÃÀx ÀxVÀxƒÀxËÀyÀy7ÀysÀyŽÀy¨ÀyÔÀyÜÀzÀz ÀzÀzÀzCÀzIÀz‚Àz¿ÀzúÀ{+À{`À{{À{•À{ÏÀ{×À|À|À| À| À|aÀ|¥À|¦À}À}PÀ}QÀ}­À}ùÀ}úÀ~.À~KÀ~ZÀ~[À~zÀ~{À~¤À~ªÀ~ûÀÀ.À>À_ÀrÀ|À‘À•À–ÀæÀ€ À€À€\À€¦À€óÀ�@À�ŽÀ�¬À�¿À�ÏÀ�îÀ‚ À‚À‚(À‚8À‚<À‚=À‚ˆÀ‚­À‚ùÀƒÀƒÀƒÀƒcÀƒgÀƒ¶ÀƒÎÀƒïÀ„(À„.À„~À„ÐÀ„êÀ„ðÀ…>À…‘À…ÒÀ†À†.À†LÀ†dÀ†}À†�À†¶À†ÙÀ†ÚÀ‡%À‡hÀ‡²À‡äÀˆÀˆ<Àˆ@ÀˆAÀˆkÀˆqÀˆ¬Àˆ½Àˆ¾ÀˆéÀˆïÀ‰*À‰<À‰=À‰oÀ‰uÀ‰¬À‰ÅÀ‰ÆÀŠÀŠ9ÀŠ?ÀŠŠÀНÀŠÁÀŠÂÀ‹À‹,À‹2À‹}À‹ÊÀ‹ÛÀ‹áÀŒ/ÀŒWÀŒ ÀŒ¢ÀŒ£À�À�!À�"À�[À�aÀ�±ÀŽÀŽÀŽ#ÀŽqÀŽÄÀ�À�BÀ�`À�~À�–À�¯À�ÂÀ�èÀ�ïÀ�À�À�^À�vÀ�ÄÀ�ÈÀ�ÉÀ‘+À‘~À‘À‘ÅÀ‘íÀ‘ñÀ’À’5À’QÀ’`À’pÀ’‚À’—À’œÀ’�À’¬À’­À“À“"À“#À“/À“ZÀ“[À“kÀ“lÀ“ÆÀ“ãÀ“äÀ“ðÀ”À”À”6À”7À”˜À”¼À”½À”ÉÀ• À• À•À•eÀ•€À•�À•�À•ÝÀ–À–*À–0À–eÀ–€À–†À–‡À–¾À–ÙÀ–öÀ—4À—sÀ—±À—çÀ—íÀ˜À˜0À˜1À˜[À˜–À˜¨À˜¬À˜­À˜ìÀ™À™!À™wÀ™xÀ™„À™›ÀšÀšÀšÀšKÀš{Àš|ÀšºÀ›À›À›;À›?À›‰À›–À›ÙÀ›ÚÀœÀœ7ÀœŒÀœ�ÀœÜÀœñÀœôÀ�AÀ�^À�aÀ�­À�°À�ÂÀ�ÅÀ�ÐÀžÀžÀžBÀžÀž„Àž‡Àž¦ÀžÖÀžÛÀžâÀžåÀŸ:ÀŸ�ÀŸ¼ÀŸ¿À À IÀ À ÆÀ¡ À¡GÀ¡]À¡‰À¡žÀ¡²À¡ßÀ¡îÀ¢.À¢6À¢CÀ¢`À¢fÀ¢lÀ¢~À¢•À¢±À¢µÀ¢ÐÀ¢ÒÀ¢ÓÀ£À£\À£’À£ÙÀ¤À¤ZÀ¤pÀ¤«À¤ÀÀ¤ÝÀ¤êÀ¤þÀ¥4À¥CÀ¥ŒÀ¥”À¥šÀ¥ À¥²À¥ÉÀ¥åÀ¥éÀ¦À¦À¦À¦VÀ¦¤À¦¨À¦øÀ§HÀ§}À§¸À§ýÀ§þÀ¨3À¨KÀ¨LÀ¨žÀ¨¹À¨ºÀ¨ÆÀ¨ÜÀ©6À©OÀ©gÀ©®À©×À©ÝÀ©ûÀ©ÿÀªdart.ui€¬Y _rectIsValid _rrectIsValid_rsuperellipseIsValid_offsetIsValid_matrix4IsValid_radiusIsValid _scaleAlphaColor BlendMode FilterQuality StrokeCap StrokeJoin PaintingStyleClipPaint ColorSpace_colorSpaceToIndex_indexToColorSpaceImageByteFormat PixelFormatImage_Image _wrapImage FrameInfoCodec _NativeCodecinstantiateImageCodecinstantiateImageCodecFromBufferinstantiateImageCodecWithSize_getDefaultImageSizeTargetImageSizedecodeImageFromList_decodeImageFromListAsyncdecodeImageFromPixels PathFillType PathOperation EngineLayer_NativeEngineLayerPath _NativePathTangent PathMetricsPathMetricIterator PathMetric _PathMeasure BlurStyle MaskFilter_ColorTransform_IdentityColorTransform_ClampTransform_MatrixColorTransform_getColorTransform ColorFilter _ColorFilter ImageFilter_MatrixImageFilter_GaussianBlurImageFilter_DilateImageFilter_ErodeImageFilter_ComposeImageFilter_FragmentShaderImageFilter _ImageFilterShaderTileMode_encodeWideColorList_encodeColorList_encodePointList_encodeTwoPointsGradient ImageShaderFragmentProgramFragmentShader VertexModeVertices PointModeClipOpCanvas _NativeCanvasPicture_NativePicturePictureRecorder_NativePictureRecorderShadowImmutableBufferImageDescriptor_NativeImageDescriptor _futurize_futurizeWithErrorPictureRasterizationException-dart.ui.Color.componentsStoredAsFloatingPoint€×> [!NOTE] > Each color is stored as floating-point color components, where the final > value of each component is approximated by storing `c / 255`, where `c` is one of the four components (alpha, red, green, blue).dart.ui.filterQuality.seeAlso€�See also: * [FilterQuality] class-level documentation that goes into detail about relative qualities of the constant values.dart.ui.imageFormats�"JPEG, PNG, GIF, Animated GIF, WebP, Animated WebP, BMP, and WBMP. Additional formats may be supported by the underlying platform. Flutter will attempt to call platform API to decode unrecognized formats, and if the platform API supports decoding the image Flutter will be able to render it.%dart.ui.canvas.conservativeClipBounds…¢The conservative estimate of the bounds is based on intersecting the bounds of each clip method that was executed with [ClipOp.intersect] and potentially ignoring any clip method that was executed with [ClipOp.difference]. The [ClipOp] argument is only present on the [clipRect] method. To understand how the bounds estimate can be conservative, consider the following two clip method calls: ```dart void draw(Canvas canvas) { canvas.clipPath(Path() ..addRect(const Rect.fromLTRB(10, 10, 20, 20)) ..addRect(const Rect.fromLTRB(80, 80, 100, 100))); canvas.clipPath(Path() ..addRect(const Rect.fromLTRB(80, 10, 100, 20)) ..addRect(const Rect.fromLTRB(10, 80, 20, 100))); // ... } ``` After executing both of those calls there is no area left in which to draw because the two paths have no overlapping regions. But, in this case, [getLocalClipBounds] would return a rectangle from `10, 10` to `100, 100` because it only intersects the bounds of the two path objects to obtain its conservative estimate. The clip bounds are not affected by the bounds of any enclosing [saveLayer] call as the engine does not currently guarantee the strict enforcement of those bounds during rendering. Methods that can change the current clip include [clipRect], [clipRRect], and [clipPath]. The [restore] method can also modify the current clip by restoring it to the same value it had before its associated [save] or [saveLayer] call.$dart.ui.painting.Picture.toImageSync‚yThe returned image will be `width` pixels wide and `height` pixels high. The picture is rasterized within the 0 (left), 0 (top), `width` (right), `height` (bottom) bounds. Content outside these bounds is clipped. The image object is created and returned synchronously, but is rasterized asynchronously. If the rasterization fails, an exception will be thrown when the image is drawn to a [Canvas]. If a GPU context is available, this image will be created as GPU resident and not copied back to the host. This means the image will be more efficient to draw. If no GPU context is available, the image will be rasterized on the CPU.dart.ui.shadow.lerp‚�The `t` argument represents position on the timeline, with 0.0 meaning that the interpolation has not started, returning `a` (or something equivalent to `a`), 1.0 meaning that the interpolation has finished, returning `b` (or something equivalent to `b`), and values in between meaning that the interpolation is at the relevant point on the timeline between `a` and `b`. The interpolation can be extrapolated beyond 0.0 and 1.0, so negative values and values greater than 1.0 are valid (and can easily be generated by curves such as [Curves.elasticInOut]). Values for `t` are usually obtained from an [Animation], such as an [AnimationController].Û¹