Repository: flex-tlf
Updated Branches:
  refs/heads/develop a87662658 -> 4c953f31a


Refactor TestConfigurationLoader.
Add missing Apache headers in new classes.
Remove unused imports and vars.


Project: http://git-wip-us.apache.org/repos/asf/flex-tlf/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-tlf/commit/4c953f31
Tree: http://git-wip-us.apache.org/repos/asf/flex-tlf/tree/4c953f31
Diff: http://git-wip-us.apache.org/repos/asf/flex-tlf/diff/4c953f31

Branch: refs/heads/develop
Commit: 4c953f31a82ff0812bce6e0e6d37dce321239578
Parents: a876626
Author: piotrz <[email protected]>
Authored: Tue Mar 10 22:49:15 2015 +0100
Committer: piotrz <[email protected]>
Committed: Tue Mar 10 22:49:15 2015 +0100

----------------------------------------------------------------------
 .../ExtendedClasses/TestConfigurationLoader.as  |  45 ++++--
 .../src/UnitTest/Fixtures/TestCaseVo.as         |  21 ++-
 .../src/UnitTest/Fixtures/TestConfig.as         |  10 +-
 automation_tests/src/MinimalTestsSuite.as       |  15 +-
 .../UnitTest/Tests/ContainerAttributeTest.as    |   5 -
 testApps/src/school.mxml                        | 155 +++++++++----------
 testApps/src/schoolV.mxml                       | 155 +++++++++----------
 7 files changed, 211 insertions(+), 195 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/4c953f31/automation_core/src/UnitTest/ExtendedClasses/TestConfigurationLoader.as
----------------------------------------------------------------------
diff --git 
a/automation_core/src/UnitTest/ExtendedClasses/TestConfigurationLoader.as 
b/automation_core/src/UnitTest/ExtendedClasses/TestConfigurationLoader.as
index 41e2a56..f252ff9 100644
--- a/automation_core/src/UnitTest/ExtendedClasses/TestConfigurationLoader.as
+++ b/automation_core/src/UnitTest/ExtendedClasses/TestConfigurationLoader.as
@@ -1,6 +1,21 @@
-/**
- * Created by Hellix on 2015-02-22.
- */
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
 package UnitTest.ExtendedClasses
 {
     import UnitTest.Fixtures.TestCaseVo;
@@ -19,22 +34,19 @@ package UnitTest.ExtendedClasses
         private var httpService:HTTPService;
         private var token:ExternalDependencyToken;
         private var testName:String;
+        private var fileName:String;
 
         public function TestConfigurationLoader(fileName:String, 
testName:String)
         {
-            if (!TestConfig.getInstance().testConfigData)
-            {
-                httpService = new HTTPService();
-                httpService.url = 
LoaderUtil.createAbsoluteURL(TestConfig.getInstance().normalizedUrl, fileName);
-                httpService.resultFormat = "e4x";
-            }
             this.token = new ExternalDependencyToken();
+            this.fileName = fileName;
             this.testName = testName;
+            createHttpService();
         }
 
         public function 
retrieveDependency(testClass:Class):ExternalDependencyToken
         {
-            var asyncToken:AsyncToken = httpService ? httpService.send() : new 
AsyncToken();
+            var asyncToken:AsyncToken = httpService.send();
             asyncToken.addResponder(this);
 
             return token;
@@ -43,14 +55,14 @@ package UnitTest.ExtendedClasses
         public function result(data:Object):void
         {
             var dp:Array = null;
-            if (httpService && data.result)
+            if (data && data.result)
             {
-                TestConfig.getInstance().testConfigData = data.result;
                 dp = parseTestConfigData(data.result);
             }
             else
             {
-                dp = 
parseTestConfigData(TestConfig.getInstance().testConfigData);
+                token.notifyFault("Unable to load data tests");
+                return;
             }
 
             token.notifyResult(dp);
@@ -78,5 +90,12 @@ package UnitTest.ExtendedClasses
 
             return testConfigData;
         }
+
+        private function createHttpService():void
+        {
+            httpService = new HTTPService();
+            httpService.url = 
LoaderUtil.createAbsoluteURL(TestConfig.getInstance().normalizedUrl, fileName);
+            httpService.resultFormat = "e4x";
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/4c953f31/automation_core/src/UnitTest/Fixtures/TestCaseVo.as
----------------------------------------------------------------------
diff --git a/automation_core/src/UnitTest/Fixtures/TestCaseVo.as 
b/automation_core/src/UnitTest/Fixtures/TestCaseVo.as
index ac43822..724e19a 100644
--- a/automation_core/src/UnitTest/Fixtures/TestCaseVo.as
+++ b/automation_core/src/UnitTest/Fixtures/TestCaseVo.as
@@ -1,6 +1,21 @@
-/**
- * Created by Hellix on 2015-02-22.
- */
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
 package UnitTest.Fixtures
 {
     public dynamic class TestCaseVo

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/4c953f31/automation_core/src/UnitTest/Fixtures/TestConfig.as
----------------------------------------------------------------------
diff --git a/automation_core/src/UnitTest/Fixtures/TestConfig.as 
b/automation_core/src/UnitTest/Fixtures/TestConfig.as
index eb0879b..b6dc70f 100644
--- a/automation_core/src/UnitTest/Fixtures/TestConfig.as
+++ b/automation_core/src/UnitTest/Fixtures/TestConfig.as
@@ -18,11 +18,12 @@
 
////////////////////////////////////////////////////////////////////////////////
 package UnitTest.Fixtures
 {
-       import flashx.textLayout.formats.BlockProgression;
-       import flashx.textLayout.formats.Direction;
-       import flash.system.Capabilities;
+    import flash.system.Capabilities;
 
-       public class TestConfig
+    import flashx.textLayout.formats.BlockProgression;
+    import flashx.textLayout.formats.Direction;
+
+    public class TestConfig
        {
         private static var _instance:TestConfig;
 
@@ -34,7 +35,6 @@ package UnitTest.Fixtures
                public var flashVersion:String = 
Capabilities.version.substr(4,4);
         public var testXMLStore:XML;
 
-        public var testConfigData:XML;
         public var normalizedUrl:String;
 
                public function 
TestConfig(testConfigEnforcer:TestConfigEnforcer)

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/4c953f31/automation_tests/src/MinimalTestsSuite.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/MinimalTestsSuite.as 
b/automation_tests/src/MinimalTestsSuite.as
index a58a2f6..5d29b99 100644
--- a/automation_tests/src/MinimalTestsSuite.as
+++ b/automation_tests/src/MinimalTestsSuite.as
@@ -18,24 +18,13 @@
 
////////////////////////////////////////////////////////////////////////////////
 package
 {
-       import UnitTest.Tests.ContainerAttributeTest;
-
-       //import UnitTest.Tests.AllEventTest;
-
-       //import UnitTest.Tests.CompositionTest;
-
-//    import UnitTest.Tests.OperationTest;
+    import UnitTest.Tests.ContainerAttributeTest;
 
     [Suite]
     [RunWith("org.flexunit.runners.Suite")]
     public dynamic class MinimalTestsSuite
     {
-        //public var floatTest:FloatTest;
-        //public var operationTest:OperationTest;
-               //public var compTest:CompositionTest;
-               //public var allEventTest:AllEventTest;
-               public var containerAttTest:ContainerAttributeTest;
-               
+        public var containerAttributeTest:ContainerAttributeTest;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/4c953f31/automation_tests/src/UnitTest/Tests/ContainerAttributeTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/ContainerAttributeTest.as 
b/automation_tests/src/UnitTest/Tests/ContainerAttributeTest.as
index 3d037ba..10524f7 100644
--- a/automation_tests/src/UnitTest/Tests/ContainerAttributeTest.as
+++ b/automation_tests/src/UnitTest/Tests/ContainerAttributeTest.as
@@ -160,11 +160,6 @@ package UnitTest.Tests
             super.tearDownTest();
         }
 
-        [AfterClass]
-        public static function tearItDown():void {
-            TestConfig.getInstance().testConfigData = null;
-        }
-
         private function set columnCount(count:Object):void
         {
             if (testContainer)

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/4c953f31/testApps/src/school.mxml
----------------------------------------------------------------------
diff --git a/testApps/src/school.mxml b/testApps/src/school.mxml
index 87a131b..40626d3 100644
--- a/testApps/src/school.mxml
+++ b/testApps/src/school.mxml
@@ -22,90 +22,89 @@
     xmlns="http://ns.adobe.com/mxml/2009";
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx"
-    xmlns:flow="library://ns.adobe.com/flashx/textLayout" 
-       xmlns:flashGeometry="flash.geom.*"
+    xmlns:flow="library://ns.adobe.com/flashx/textLayout"
        creationComplete="handleCreationComplete()"
        preinitialize="preinitialize()"
        resize="handleResize()">
 
     <Script>
        <![CDATA[
-       import flashx.textLayout.edit.EditManager;
-      import flashx.textLayout.container.ContainerController;
-               
-               [Bindable]
-               private var ChineseFontName:String;
-               [Bindable]
-               private var KoreanFontName:String;
-               [Bindable]
-               private var JapaneseFontName:String;
-               
-                       [Bindable]
-                       public var boundTextSpan:String;
-                       
-               private var schoolContainer:Sprite;
-               private var udhrContainer:Sprite;
-               
-               private const insetWidth:Number = 8;
-               private const insetHeight:Number = 8;
-
-               public function handleCreationComplete(): void
-               {
-                       if (Capabilities.os.search("Mac OS") > -1)
-                       {
-                               ChineseFontName = "宋体";
-                               KoreanFontName = "Adobe 명조 Std M";
-                               JapaneseFontName = "小塚明朝 Pro L";
-                       }
-                       else
-                       {
-                               ChineseFontName = "Adobe Song Std L";
-                               KoreanFontName = "Adobe Myungjo Std M";
-                               JapaneseFontName = "Kozuka Mincho Pro L";
-                       }
-                       boundTextSpan = "This span is bound for glory";
- 
-                       schoolContainer = new Sprite();
-                       schoolContainer.x = 4;
-                       var schoolController:ContainerController = new 
ContainerController(schoolContainer);
-                       schoolFlow.flowComposer.addController(schoolController);
-               //      schoolController.wraps = new WrapManager();
-               //      schoolController.wraps.wraps = [ new Rectangle(0, 150, 
144, 178)];
-                       textPanel.rawChildren.addChild(schoolContainer);
-                       
-                       udhrContainer = new Sprite();
-                       udhrFlow.flowComposer.addController(new 
ContainerController(udhrContainer));
-                       textPanel.rawChildren.addChild(udhrContainer);
-
-                       schoolFlow.interactionManager = new EditManager();
-                       udhrFlow.interactionManager = new EditManager();
-                       handleResize();
-               }
-
-               public function preinitialize(): void
-               {
-                       XML.ignoreWhitespace = false;
-               }
-               
-               public function handleResize(): void
-               {
-                       
-                       if (!schoolContainer)           // we get resize before 
creationComplete
-                               return;
-                               
-                       var stageWidth:Number = textPanel.width;
-                       var stageHeight:Number = textPanel.height;
-                       
-                       var compositionWidth:Number = (stageWidth-insetWidth)/2;
-                       var compositionHeight:Number = stageHeight - 
insetHeight;
-                       
schoolFlow.flowComposer.getControllerAt(0).setCompositionSize(compositionWidth, 
compositionHeight);
-
-                       
udhrFlow.flowComposer.getControllerAt(0).setCompositionSize(compositionWidth, 
compositionHeight);
-                       udhrContainer.x = (stageWidth-insetWidth)/2 + 
insetWidth;
-
-                       schoolFlow.flowComposer.updateAllControllers();
-                       udhrFlow.flowComposer.updateAllControllers();
-               }
+        import flashx.textLayout.container.ContainerController;
+        import flashx.textLayout.edit.EditManager;
+
+        [Bindable]
+        private var ChineseFontName:String;
+        [Bindable]
+        private var KoreanFontName:String;
+        [Bindable]
+        private var JapaneseFontName:String;
+
+        [Bindable]
+        public var boundTextSpan:String;
+
+        private var schoolContainer:Sprite;
+        private var udhrContainer:Sprite;
+
+        private const insetWidth:Number = 8;
+        private const insetHeight:Number = 8;
+
+        public function handleCreationComplete():void
+        {
+            if (Capabilities.os.search("Mac OS") > -1)
+            {
+                ChineseFontName = "宋体";
+                KoreanFontName = "Adobe 명조 Std M";
+                JapaneseFontName = "小塚明朝 Pro L";
+            }
+            else
+            {
+                ChineseFontName = "Adobe Song Std L";
+                KoreanFontName = "Adobe Myungjo Std M";
+                JapaneseFontName = "Kozuka Mincho Pro L";
+            }
+            boundTextSpan = "This span is bound for glory";
+
+            schoolContainer = new Sprite();
+            schoolContainer.x = 4;
+            var schoolController:ContainerController = new 
ContainerController(schoolContainer);
+            schoolFlow.flowComposer.addController(schoolController);
+            // schoolController.wraps = new WrapManager();
+            // schoolController.wraps.wraps = [ new Rectangle(0, 150, 144, 
178)];
+            textPanel.rawChildren.addChild(schoolContainer);
+
+            udhrContainer = new Sprite();
+            udhrFlow.flowComposer.addController(new 
ContainerController(udhrContainer));
+            textPanel.rawChildren.addChild(udhrContainer);
+
+            schoolFlow.interactionManager = new EditManager();
+            udhrFlow.interactionManager = new EditManager();
+            handleResize();
+        }
+
+        public function preinitialize():void
+        {
+            XML.ignoreWhitespace = false;
+        }
+
+        public function handleResize():void
+        {
+
+            if (!schoolContainer)              // we get resize before 
creationComplete
+                return;
+
+            var stageWidth:Number = textPanel.width;
+            var stageHeight:Number = textPanel.height;
+
+            var compositionWidth:Number = (stageWidth - insetWidth) / 2;
+            var compositionHeight:Number = stageHeight - insetHeight;
+            
schoolFlow.flowComposer.getControllerAt(0).setCompositionSize(compositionWidth, 
compositionHeight);
+
+            
udhrFlow.flowComposer.getControllerAt(0).setCompositionSize(compositionWidth, 
compositionHeight);
+            udhrContainer.x = (stageWidth - insetWidth) / 2 + insetWidth;
+
+            schoolFlow.flowComposer.updateAllControllers();
+            udhrFlow.flowComposer.updateAllControllers();
+        }
         ]]>
     
     </Script>

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/4c953f31/testApps/src/schoolV.mxml
----------------------------------------------------------------------
diff --git a/testApps/src/schoolV.mxml b/testApps/src/schoolV.mxml
index 388e939..b5c4ea7 100644
--- a/testApps/src/schoolV.mxml
+++ b/testApps/src/schoolV.mxml
@@ -22,89 +22,89 @@
     xmlns="http://ns.adobe.com/mxml/2009";
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx"
-    xmlns:flow="library://ns.adobe.com/flashx/textLayout" 
-       xmlns:flashGeometry="flash.geom.*"
+    xmlns:flow="library://ns.adobe.com/flashx/textLayout"
        creationComplete="handleCreationComplete()"
        preinitialize="preinitialize()"
        resize="handleResize()">
 
     <Script>
        <![CDATA[
-       import flashx.textLayout.edit.EditManager;
-       import flashx.textLayout.container.ContainerController;
-       //import flashx.textLayout.container.WrapManager;
-               
-               [Bindable]
-               private var ChineseFontName:String;
-               [Bindable]
-               private var KoreanFontName:String;
-               [Bindable]
-               private var JapaneseFontName:String;
-               
-               private var schoolContainer:Sprite;
-               private var udhrContainer:Sprite;
-               
-               private const insetWidth:Number = 8;
-               private const insetHeight:Number = 8;
-
-               public function handleCreationComplete(): void
-               {
-
-                       schoolContainer = new Sprite();
-                       schoolContainer.x = 4;
-                       var schoolController:ContainerController = new 
ContainerController(schoolContainer);
-                       schoolFlow.flowComposer.addController(schoolController);
-               //      schoolController.wraps = new WrapManager();
-               //      schoolController.wraps.wraps = [ new Rectangle(0, 150, 
144, 178)];
-                       textPanel.rawChildren.addChild(schoolContainer);
-                       
-                       udhrContainer = new Sprite();
-                       udhrFlow.flowComposer.addController(new 
ContainerController(udhrContainer));
-                       textPanel.rawChildren.addChild(udhrContainer);
-
-                       schoolFlow.interactionManager = new EditManager();
-                       udhrFlow.interactionManager = new EditManager();
-
-                       handleResize();
-               }
-
-               public function preinitialize(): void
-               {
-                       XML.ignoreWhitespace = false;
-                       
-                       if (Capabilities.os.search("Mac OS") > -1)
-                       {
-                               ChineseFontName = "宋体";
-                               KoreanFontName = "Adobe 명조 Std M";
-                               JapaneseFontName = "小塚明朝 Pro L";
-                       }
-                       else
-                       {
-                               ChineseFontName = "Adobe Song Std L";
-                               KoreanFontName = "Adobe Myungjo Std M";
-                               JapaneseFontName = "Kozuka Mincho Pro L";
-                       }
-               }
-               
-               public function handleResize(): void
-               {
-                       
-                       if (!schoolContainer)           // we get resize before 
creationComplete
-                               return;
-                               
-                       var stageWidth:Number = textPanel.width;
-                       var stageHeight:Number = textPanel.height;
-                       
-                       var compositionWidth:Number = (stageWidth-insetWidth)/2;
-                       var compositionHeight:Number = stageHeight - 
insetHeight;
-                       
schoolFlow.flowComposer.getControllerAt(0).setCompositionSize(compositionWidth, 
compositionHeight);
-
-                       
udhrFlow.flowComposer.getControllerAt(0).setCompositionSize(compositionWidth, 
compositionHeight);
-                       udhrContainer.x = (stageWidth-insetWidth)/2 + 
insetWidth;
-
-                       schoolFlow.flowComposer.updateAllControllers();
-                       udhrFlow.flowComposer.updateAllControllers();
-               }
+        import flashx.textLayout.container.ContainerController;
+        import flashx.textLayout.edit.EditManager;
+
+        //import flashx.textLayout.container.WrapManager;
+
+        [Bindable]
+        private var ChineseFontName:String;
+        [Bindable]
+        private var KoreanFontName:String;
+        [Bindable]
+        private var JapaneseFontName:String;
+
+        private var schoolContainer:Sprite;
+        private var udhrContainer:Sprite;
+
+        private const insetWidth:Number = 8;
+        private const insetHeight:Number = 8;
+
+        public function handleCreationComplete():void
+        {
+
+            schoolContainer = new Sprite();
+            schoolContainer.x = 4;
+            var schoolController:ContainerController = new 
ContainerController(schoolContainer);
+            schoolFlow.flowComposer.addController(schoolController);
+            // schoolController.wraps = new WrapManager();
+            // schoolController.wraps.wraps = [ new Rectangle(0, 150, 144, 
178)];
+            textPanel.rawChildren.addChild(schoolContainer);
+
+            udhrContainer = new Sprite();
+            udhrFlow.flowComposer.addController(new 
ContainerController(udhrContainer));
+            textPanel.rawChildren.addChild(udhrContainer);
+
+            schoolFlow.interactionManager = new EditManager();
+            udhrFlow.interactionManager = new EditManager();
+
+            handleResize();
+        }
+
+        public function preinitialize():void
+        {
+            XML.ignoreWhitespace = false;
+
+            if (Capabilities.os.search("Mac OS") > -1)
+            {
+                ChineseFontName = "宋体";
+                KoreanFontName = "Adobe 명조 Std M";
+                JapaneseFontName = "小塚明朝 Pro L";
+            }
+            else
+            {
+                ChineseFontName = "Adobe Song Std L";
+                KoreanFontName = "Adobe Myungjo Std M";
+                JapaneseFontName = "Kozuka Mincho Pro L";
+            }
+        }
+
+        public function handleResize():void
+        {
+
+            if (!schoolContainer)              // we get resize before 
creationComplete
+                return;
+
+            var stageWidth:Number = textPanel.width;
+            var stageHeight:Number = textPanel.height;
+
+            var compositionWidth:Number = (stageWidth - insetWidth) / 2;
+            var compositionHeight:Number = stageHeight - insetHeight;
+            
schoolFlow.flowComposer.getControllerAt(0).setCompositionSize(compositionWidth, 
compositionHeight);
+
+            
udhrFlow.flowComposer.getControllerAt(0).setCompositionSize(compositionWidth, 
compositionHeight);
+            udhrContainer.x = (stageWidth - insetWidth) / 2 + insetWidth;
+
+            schoolFlow.flowComposer.updateAllControllers();
+            udhrFlow.flowComposer.updateAllControllers();
+        }
         ]]>
     
     </Script>
@@ -118,7 +118,6 @@
        </flow:TextFlow>
 
        <flow:TextFlow id="udhrFlow" blockProgression="rl" fontSize="36" 
textAlign="right" direction="rtl" fontFamily="Adobe Arabic" locale="ar" 
paddingLeft="10" paddingRight="10">
-               <flow:p><flow:span text="{boundTextSpan}"/></flow:p>    
                <flow:p><flow:span>وأدوبي فليكس SDK هو تطور 
SDK أدوبي فليكس شعبية. أباتشي فليكس SDK هو إطار 
تطوير التطبيقات لبناء فلاش بسهولة 
التطبيقات المستندة للهواتف النقالة، وم
تصفحات الويب، ومنصات سطح المكتب. وتشمل 
الأنظمة الأساسية المعتمدة 
حاليا:</flow:span></flow:p>
                <flow:p><flow:span>نظام التشغيل Mac OS 
X</flow:span><flow:span> أبل دائرة الرقابة 
الداخلية</flow:span><flow:span>جوجل 
الروبوت</flow:span><flow:span>RIM بلاك 
بيري</flow:span><flow:span locale="en" fontFamily="Myriad 
Pro">(Linux)</flow:span></flow:p>
                <flow:p><flow:span>دعم لينكس هو تجريبي 
حاليا وكنت قد واجهت القضايا. أباتشي ان م
شروع فليكس تود أن ترى بيان لينكس يؤيد 
تأييدا كاملا، لكننا بحاجة مساعدة من المجتم
ع من أجل القيام بذلك. الرجاء المساعدة ما إذا 
كنت تستطيع.</flow:span></flow:p>              

Reply via email to