Base class for understand - trying to understand AS3

I'm relatively new to AS3 and AS in general, so forgive me...

Is I understand that there is no abstract classes and you can override or overload the constructors of classes derived correct? Abstract classes are not important to me, but if possible I would like to know how. But is it possible to overload the default constructors and I do just something wrong? Can override us only the methods or we can overload them too. Workarounds would also be appreciated.

Here's what I do now to make things work.

-For a simple game that I do, I do not use FlexBuilder and don't want for this project for specific reasons, so I use Flash and instead to use bitmaps and sprites, I want to draw shapes in Flash and hidden in the MovieClip symbols that I 'link' for export as for use in my code. I want to make a little modular so can I just change some aspects of the code for different approaches.

If I create an actor class that extends MovieClip the default constructor must be Actor() without argument. But I want my class to be able to have arguments as coordinated initial x and y. I know that you can just create methods to initialize every part, but I would try to have a default constructor to do.

In Flash, I notice that if you derive a class written or built in class requires the standard constructor by default, "I may be wrong on someone could show me what I'm doing wrong and I hope I'm ', if you derive a class based on a symbol you export related LIKE I can create a new constructor , with whatever the arguments, I want (so that's why I'm doing this post, I found if I can do it couldn't there be a way to substitute manufacturers?).

Here is how I currently do...

(1) so that I create a base called actor class that extends MovieClip the record as a Builder by default and Actor.as of Actor() add some properties I want.
(2) then I create an object in my library, let's call it mcShip, then I link this symbol to export ActionScript and have its base as an actor class and name the class ShipMC.
(3) I then create a new .as file and call this a ShipActor.as, this ShipActor class extends ShipMC and then I create a default constructor ShipActor (gs:GameScreen, xA:Number, are: number) and it works fine
(I also create a method in the class actor called ActorSuper and call from ShipActor with any arguments passed in, because I do not know how to overload the constructor of the parent class)

If I just had my mcShip with a base class of flash.display.MovieClip and I'm trying to create a ShipActor with the constructor above it says missing default constructor. The 3 steps above is the only way I can get it to work for now. Is it possible to overload the constructor? If this isn't the case, are there some other workarounds?

I seek only to this object oriented approach more than anything. Sorry for the long post but I didn't want any confusion or confusion more-. -.

Thank you for taking the time to read this post
-John

Your rationale that you cannot define class abstract in ECMA based actionscript or Actionscript allows overloading at all. There are two solutions to workaround if such have also just your overloaded methods use a single object as its argument and this object contains the various parameters.

I find developing in the difficult at best Flash IDE if you want another option besides flex builder, you can use eclipse with FDT kit webtool. What doesn't is that got 30 days free, but its value to buy (believe me). A tip is to install the latest version of the flex sdk and to change the library source in it so you can use Ant to build your SWFs.

I was just about to an object called actor extends Sprite instead of MovieClip package unless you're going to manipulate its chronology (why would you however). If you need a check-out package TweenLite of GreenSock interpolation. Its better than the default flash.

Tags: Adobe Animate

Similar Questions

  • Lack of base class for events (flash.events). Flex SDK 4.1 | Flex Builder 3

    Hello

    I'm experience the following problem, I can't locate or find the base class for events when I do "import flash.events;"-AutoComplete does not work as well. import flash. available only - flash.errors and flash.text

    However if I spend the Flex SDK 4.1 to 3.2 the Flex SDK kit so no problem and I can add flash.events

    SDK Flex 4.1 version is 4.1.0. 65265, I also tried Flex 4.0 SDK, the same problem, not able to find events.

    Requires the flash player version I tried both: 10.0.0 and 10.1.0 does not.

    Could you please suggest what might be wrong. Unfortunately not be able to find this info in the forum or google

    Thank you

    Kind regards

    Marakame

    Have you tried

    import flash.events. *;

    Or

    import flash.events.Event;

  • Appeal of c# classes for LabVIEW instruments

    The c# programmers here in my company have developed a great c# class that contains all of the interfaces of instrument for our various test stations.  Instead of re - write all this LabVIEW code that would cause a maintainability nightmare, I want to use the class that they have created (and as an asset, tested and verified).

    I can get to all different methods, etc. so, using the .NET / LabVIEW connectivity is not a problem.  In addition, it's a matter of how exactly should I create the interop so that it is usable for our effective use of LabVIEW programmers.

    A quick description of the structure of language c#, using the Switch class for example:

    Upper level of the class has all the features of base common to all switches, and then as is normal, specific instruments have common methods in their breast and a few additional methods specific to this model.

    They use the Ifactory model for all this.

    Now I can be reading too far into this, or perhaps not far enough.

    I know that when we create classes in BT we can do a general change of class, and then have children of this class of specific instruments. In my case, I duplicated their structure and I all methods of higher level in a class of 'Switch', then a folder of children of switch has classes for each of the classes of children. I then put in place so that the child class inherits from the parent for each child.  All this with the intention of using dynamic dispatching.

    My first question is: who don't already be managed in c# code?  By calling the method of the parent class, wouldn't not on the c# code to take the correct child?  Or is it since I was using just the class, but not all of the air capacity of c# (I'm NOT an expert in c# if it isn't obvious now) I'm having to manage the dynamic send in LabVIEW?

    How exactly should I do after I have integrated LV class and configuration in pallets for future programmers? It's their programming, they know that they need a function from a specific switch, so they put that and by plugging in this interface of method, the class switch, it automatically performs the dynamic send call in the class (in fact, I typed, it made sense).  What I was wondering, is that we are so concerned about the adaptability / changability; We have a proverb which says that if Exchange you an equivalent switch in, it should work without having to re - write the code.  So of course, I am writing for this purpose.  Again, as I write this, I find to say to me, 'If you must use a particular method to pass type, because it is what is needed, then would still have an equivalent switch, with this same ability of method.

    I know I have rambled on this, but these are the roadblocks which my mind throw out there that I have create the method interfaces.

    Did anyone done something like this before? Is there an example that you could send me or tell me?  I can't believe I'm the first to try to take advantage of c# code that has already been written. I believe that I understand the nuances of make it right.

    Thanks for reading and potentially for helping me through this. It's very appreciated.

    Dan

    You could still do the objects accessible .NET via pallets is to put them in a merger of VI - one that its content when it falls from a palette on the block diagram. You probably wouldn't want to do it for every single method, but if make you at least the major top-level classes or the available constructors in this way (or property or call node for a static class), you're going to do the hard part (finding the right assembly and class) easy.

  • Substitution of the class, how to create the child class and then the base class

    I started to write a program for a DMM smart, that the problem is all versions of DMM greet the change company communication.

    My idea is to write a child class for each version, DMM and each Subvi child will replace the Subvi base class.

    My problem is, I first want to create a child class and after I see everything is working, start creating the base class. in this way, I'll see if think the right way.

    My question is

    How can I create a child class and then create the base class and configure the Subvi class of the child to be the substitution of the base class?

    I tried searching in the property of the class, but I don't see anything.

    Thank you

    This can be done and I did on occasion.

    You create the base class with the methods of dynamic distribution, you need (Connector components must be identical to those of the class of the child).

    Set then the legacy of the class inherits this base class.  If your method is defined as a dynamic distribution method in the parent, you will probably now have some errors (unless your method of child was already DD, in which case you might be OK already).

    To change the inheritance of a class, right-click on the properties of the class in your project, and then select Properties.  According to me, the tree of estate is at the lower end of the property.  Click on the 'legacy of change' (or something similar) to choose the class from which you now want to inherit.

  • How to remove base class event listeners

    Guys, I have a base class (he is a clip) in which I added event listeners:

    addEventListener (MouseEvent.MOUSE_OVER, mouseOverHandler);

    OK, it works and everything is beautiful.

    But I have a subclass that clip in class 'regular ': as3

    class DifferentClass extends MyMovieClip

    {

    }

    you get the gist.

    Now, I want in my DifferentClass also have the MOUSE_OVER event, but without never to raise the base class event.

    No one knows how to do?

    Thank you.

    override protected function mouseOverHandler(e:MouseEvent):void {}

    do not call super. Instead, do your own thing custom

    }

    No need to call getQualifiedClassName. This is what has protected methods are for!

    Note You can also listen to a higher priority and the preventImmediatePropogation() on the event if for any reason any substitution does not work for you.

  • question of hitTestObject in a base class of an object library in Flash Pro.

    Hello.

    I have a flash file with a number of clips in the library - various bubbles that can be skipped in a clilck.

    The fla has a class of documents - BubbleGame.as, and all various mcies of bubble in the library are exported for action script (using their own names, but) with a mutual Base class - BubbleBase.as, so that all the different video clips bubbles behave the same: load in a random position, play their own deadlines, pop when you click them and if not burst - reload in another post.

    Here, everything works fine, however, I want the video clips removed if they hit an object on the stage. The object has an instance name of sym_mc and I tried different bits of code causes the bubble to remove when it hits this object, but I'm not getting more errors or nada.

    I tried to do the code hitTestObject in document and the base class class. It seems more appropriate to have in the base class - BubbleBase.as (below), because who says the bubbles do.

    In any case, I am neglecting and would appreciate it if you people took a glance at my code of the base class and the help.

    Thank you: *)

    package

    {

    import flash.display. *;

    import flash.events. *;

    SerializableAttribute public class BubbleBase extends MovieClip

    {

    var thisBubble:MovieClip;

    var navdock:MovieClip;

    var thisParent: *;

    public void BubbleBase()

    {

    this.addEventListener (Event.ADDED, initialize);

    this.addEventListener (MouseEvent.CLICK, pop);

    }

    function initialize(event:Event):void

    {

    thisParent = event.currentTarget.parent;

    navdock = thisParent.sym_mc;

    thisBubble = MovieClip (this.parent.getChildByName (this.name));

    if(currentFrame == 1)

    {

    This.x = Math.Random () * stage.stageWidth;

    This.y = Math.Random () * stage.stageHeight;

    Turning = Math.Random () *-90;

    }

    this.addEventListener (Event.ENTER_FRAME, moveBubble);

    }

    function moveBubble(event:Event):void

    {

    this / * if (this.hitTestObject (navdock)) is commented out, because it generates an error – TypeError: Error #2007: hitTestObject parameter must be null.

    {

    trace ("hit!");

    this.removeEventListener (Event.ENTER_FRAME, moveBubble);

    thisBubble.removeEventListener (Event.ENTER_FRAME, onEnterFrame);

    this.removeEventListener (MouseEvent.CLICK, pop);

    this.parent.removeChild (thisBubble);

    }

    on the other

    {

    This.x = Math.Random () * stage.stageWidth;

    This.y = Math.Random () * stage.stageWidth;

    }*/

    }

    function pop(event:MouseEvent):void

    {

    this.removeEventListener (Event.ADDED, initialize);

    var host: MovieClip = MovieClip (this.parent.parent);

    main.increaseScore ();

    this.parent.removeChild (thisBubble);

    }

    }

    }

    Hi ned. _spoyboyle

    Guess what?, I have corrected the code - see below, noting the change added

    to ADDED_TO_STAGE in the constructor, with removeEventListeners as a result

    in the rest.

    And to fix the error null, I added to remove the pop function;  I could not

    figure that a person on until after I was able to get sym_mc to be identifiable

    -by the change in the type (ADDED_TO_STAGE).

    I managed the setting, BTW, thanks to you, Ned, in terms of making the simplified

    version coming out specific errors, which iwas able to isolate, to

    Look up in the search field Flash as such - "TypeError: Error #1009: cannot.

    access a property or method of an object reference null + at

    Flash.Display::Sprite/constructChildren().

    Which lead me to various options, among which was that -

    http://kb2.adobe.com/cps/838/cpsid_83815.html - that was the solution.

    But also through _spoboyle, providing the correct 'if' statemnt with

    no = null.

    Thank you so much, people

    And now, I feel silly to tell you all that after getting this work.

    my bubble game is less good looking than before that the hitTestObject was

    added, because after a few runs (bubbles in jumps, removed, and)

    regenerated) some of the bubbles are removed without for as much hit

    the item on stage - but little to chance, plus button that generates

    more bubbles (bubbleMaker.start ()); is not as responsive as it is without

    the ifHitTestObj and finally, my processor - healthy and strong although it

    is, is tested with all these bubbles and their maturities, but

    all this is another question for later review.

    For now, thanks again :)

    package

    {

    import flash.display. *;

    import flash.events. *;

    SerializableAttribute public class BubbleBaseNew extends MovieClip

    {

    var thisBubble:MovieClip;

    var navdock:MovieClip;

    var thisParent: *;

    public void BubbleBaseNew()

    {

    this.addEventListener (Event.ADDED_TO_STAGE, initialize); off

    http://kb2.Adobe.com/CPS/838/cpsid_83815.html do ADDED_TO_STAGE instead

    added

    this.addEventListener (MouseEvent.CLICK, pop);

    }

    function initialize(event:Event):void

    {

    this.removeEventListener (Event.ADDED_TO_STAGE,

    Initialize); This causes sym_mc be defined as an object

    thisParent = event.currentTarget.parent;

    navdock = thisParent.nav_mc;

    thisBubble = MovieClip (this.parent.getChildByName (this.name));

    this.addEventListener (Event.ENTER_FRAME, moveBubble);

    }

    function moveBubble(event:Event):void

    {

    If (navdock! = null & this.hitTestObject (navdock))

    {

    trace ("hit!");

    this.removeEventListener (Event.ENTER_FRAME, moveBubble);

    thisBubble.removeEventListener (Event.ENTER_FRAME,

    onEnterFrame);

    this.removeEventListener (MouseEvent.CLICK, pop);

    this.parent.removeChild (thisBubble);

    }

    on the other

    {//this times normal (the chronology of the bubble), but the trace says

    sym_mc: undefined

    var mc:MovieClip = event.target as MovieClip;

    if(currentFrame == 1)

    {

    MC.x = Math.Random () * stage.stageWidth;

    MC.y = Math.Random () * stage.stageHeight;

    Turning = Math.Random () *-90;

    }

    }

    }

    function pop(event:MouseEvent):void

    {

    this.removeEventListener (Event.ADDED_TO_STAGE, initialize);

    this.removeEventListener (MouseEvent.CLICK, pop);

    this.removeEventListener (Event.ENTER_FRAME, moveBubble);

    var host: MovieClip = MovieClip (this.parent.parent);

    main.increaseScore ();

    this.parent.removeChild (thisBubble);

    }

    }

  • OfficeJet 6500 E710a-f: how to download the latest firmware and the BASE driver for my Officejet 6500 on Windows 7

    I'm looking for a way to download the latest driver and firmware base packages for my Officejet 6500 E710a-f for Windows 7, x 64 (latest patches and service packs applied).

    Regardless of the road I take (including the link called "Download drivers"), finding drivers inevitably leads me to the same page that contains the vertical tabs named 'Troubleshooting', 'How to' and so on and none of the links - not even under 'options to support more' - led to a Basic downloadable driver package. In fact, none of them leads to a downloadable driver package of all kinds. The most that I could find is that package Wizard driver installation that attempts to download the package that I am not interested in-oh and a few mentions in the KB articles downloadable driver packages.

    I also tried "Printer Setup, Installation" & Setup and then variously "Installation, install & connect printer ' and 'Software updates' & Firmware, which none offer a downloadable package.

    This used to work perfectly fine a few months ago, but now I'm getting round on the same page over and over again. I can not find the basic driver or the software for the printer more.

    Where can I find the basic driver package (used about 30 MB in size) in order to avoid the crapware included in the package (130MO) "full feature" more great who gets automatically downloaded to an unknown destination on my hard drive using this driver installation wizard. It's my PC and I want to be the one who decides in which runs when and how. Now I can try to track down the location of download using ProcMon and what not, but it would give me is this package 'feature complete' with a bunch of crapware added on strictly necessary. How to get the base driver package?

    Thank you!

    Never mind. Fascinating, the "Download drivers" link under the Support tab at the top leads to a different page that the link "search for drivers' next to my question posted .

    Both methods require enter the name of the model (after picking "Printers" in the first case) in a similar way, but the former led in circles on the same page with no possibility to download, while the latter one immediately takes me to the downloads, I was looking for.

  • Generate the Java Classes for WebService provided by DPS. WebServices module...

    Hi all

    I need generate the Java Classes for the loginUser.wsdl file provided by DPS. Modules of WebServices... ? I tried with AXIS2 and Apache CXF2... He lift the security exception... ?

    Exception:

    C:\axis2-1.6.2\bin > wsdl2java.bat - uri C:/loginUser.wsdl
    AXIS2_HOME using: C:\axis2-1.6.2
    With the help of JAVA_HOME: C:\Java\jdk1.6.0_18
    Saving document to "C:/loginUser.wsdl".
    log4j: WARN no appenders could be found for logger (org.apache.axis2.i18n.ProjectResourceBundle).
    log4j: WARN Please initialize log4j correctly system.
    Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException: the WSDL parsing error
    to org.apache.axis2.wsdl.codegen.CodeGenerationEngine. < init > (CodeGenerationEngine.java:178)
    at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
    at org.apache.axis2.wsdl.WSDL2Java.main (WSDL2Java.java:24)
    Caused by: javax.wsdl.WSDLException: WSDLException (to/definitions/import [1]): faultCode = OTHER_ERROR: unable to
    solve a document imported into 'atg.security.wsdl' from 'file:/C:/loginUser.wsdl': java.io.FileNotFoundEx
    reception: this file was not found: file:/C:/atg.security.wsdl
    at com.ibm.wsdl.xml.WSDLReaderImpl.parseImport (unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions (unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL (unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL (unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL (unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL (unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL (unknown Source)
    at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.readInTheWSDLFile(CodeGenerationEngine.java:320)
    to org.apache.axis2.wsdl.codegen.CodeGenerationEngine. < init > (CodeGenerationEngine.java:133)
    ... 2 more
    Caused by: java.io.FileNotFoundException: this file was not found: file:/C:/atg.security.wsdl
    at com.ibm.wsdl.util.StringUtils.getContentAsInputStream (unknown Source)
    ... 11 more

    Do not use Axis2 that is not compatible with the ATG SOAP webservices. You should use Axis 1.4. Please review these documents according to your version of ATG:

    http://docs.Oracle.com/CD/E26180_01/platform.94/ATGIntFrameGuide/HTML/s0603beforeyoubegin01.html

    http://docs.Oracle.com/CD/E24152_01/platform.10-1/ATGWSFrameGuide/HTML/s0703beforeyoubeginusingajavaclient01.html

  • How to find the symbol of a certain library Base class

    Hi, all.

    I need to find all the symbols (if any) in my library that have a certain class as the Base class field. Y at - it an easy way to do within Flash itself, or is there an extension that focuses on this area, while doing a search of the symbols of the library?

    Thank you;

    Amy

    You can use jsfl to see that.

    you would use the assets Library property class' (a table) for loop through each element of the library and use the linkageClassName property to check the desired base classes.

  • How to set the user name and password when you use the class for SOCKS5 Proxy?

    Hi all

    I use the proxy class for SOCKS5, so need to set the user name and password, I can't find where I put the value. If the API support.

    Thanks in advance!

    Exactly how to repeat the question five times ater, we told you the answer would erase anything? A: this isn't. This irritates just the hell out of people. Irritating the hell of those who's trying to help you is not rational behavior either.

    I have no idea on the support of third-party for transmission by proxy via NIO.

  • class and base class in the properties panel

    I have a sunny called mc. In the properties panel, I him export for actionscript. I put Sunny in the main class and drag in the base class. The reason is I want it be draggable. I can't use drag in the main class as another object uses this name. The Drag.as has the sliding feature.

    Why can't I hang out sound. I already have a solution - I wrote a specific class for it and extended the Drag class. However, if I have 10 mcs I won't write specific classes for each of them.

    To sum up: using the base class drag in the properties panel - why is she not movable?

    See you soon

    In addition,

    "I wrote a specific class for it and extended the Drag class. However, if I have 10 mcs I won't write specific classes for each of them. »

    You don't have to write classes for them, but you need unique class for each of them as a binding class field name. If you do not write classes - Flash will do it for you in the compilation.

  • By using the same class for movieclips duplicate

    Hi all

    I created an external a particular movieclip class and I would like to bind a version duplicated this MovieClip in the same class file.

    Problem is that I can't seem to do. Even if I declare the class as a BASE of the new movieclip class and create another name of the random class for it.

    Is there a way I can get around this so I can give my clip duplicated the same class name?

    Thanks in advance

    Martin

    use:

    package {}
       
    import flash.display.MovieClip;
       
    SerializableAttribute public class Animal1 extends Animal {}
           
    public void Animal1 (): void {}
               
    Super (frameNumber, level);
               
    }
    }
    }

    you will then get errors telling you of frameNumber and level are not defined.  fix this.

  • A single button for his start &amp; stop Flash AS3

    Hello

    I'm trying to create a sound button to play a sound, and then stop when you click New.


    I thought it would be easy because there is a snippet of code for "click to play/stop sound.

    I have my sound file in my library.

    The following code does not work:

    Directions for use:
    1. replace "http://www.helpexamples.com/flash/sound/song1.mp3"below with the URL address of your audio file that you want. " Keep the quotation marks ("").
    */

    CYOA2bttn.addEventListener (MouseEvent.CLICK, fl_ClickToPlayStopSound_11);

    var fl_SC_11:SoundChannel;

    This variable keeps track of whether you want to start or stop the sound
    var fl_ToPlay_11:Boolean = true;

    Proxy-Connection: keep-alive Cache-Control: max - age = 0 Cp > function fl_ClickToPlayStopSound_11(evt:MouseEvent):void
    {
    If (fl_ToPlay_11)
    {
    var s:Sound = new Sound (new URLRequest("CYOA2.wav"));
    fl_SC_11 = s.play ();
    }
    on the other
    {
    fl_SC_11.stop ();
    }
    fl_ToPlay_11 =! fl_ToPlay_11;
    }


    CYOA2bttn is my button and CYOA2.wav is my audio file.

    The error that appears when I try to test the Flash file is:

    Error #2044: Unmanaged by the IOErrorEvent:. Text = Error #2032: error flow.
    at CYOA_fla::MainTimeline/fl_ClickToPlayStopSound_11()

    ALL OF THE SUGGESTIONS!

    Help please

    Hello

    If the mp3 is in your library (in your fla) then the code is slightly different...

    First, right click on the sound in the library and select Properties. Then check "Export for ActionScript" and enter a name in the 'class' (for example: mySound).

    Then change your code:

    replace:

    var s:Sound = new Sound (new URLRequest("CYOA2.wav"));

    with:

    var s:Sound = new mySound();

    (replace 'mySound' with someone ' u came to the 'class' above.)

  • definition of the base class _ not found

    Hello!

    While exploring Flex 3 (really good btw) and build my first app, I tried the following:

    SerializableAttribute public class X extends EventDispatcher {}

    It gives me a compilation error #1017: the definition of the EventDispatcher base class was not found.

    To compile I am just use a file .bat, such as those used in the samples. Everything compiles normally without extending an existing class (in this case flash.events.EventDispatcher).
    Try to change the compiler options with
    -library-path += c:\flex\framework\libs
    has resulted in the same error here (and I guess that's already a default setting).

    Any help would be greatly appreciated!

    Fre

    It worked :-). Thank you very much, Deepa!

    So, apparently, you can make import declarations in the declaration of class (or anywhere in the code), but always before you use the imported class. I got confused, as in java, all import instructions are in the same place and import flash.net worked under my class declaration.

  • Should I buy a Base Station for my Apple products to use Time Machine?

    Should I buy a Base Station for my Apple products? I have a Netgear CG3000D-RG gateway and also use Windows with this modem/router. I'm not able to backup using time machine and bought an external hard drive PassPort but I find it pretty annoying having to plug it in to my MBP whenever I want to do a backup. I would like to use the most convenient airport on my MBP feature, however, it seems pointless unless I have connected to my Netgear router/Modem base station. If I have to buy a base station to make the backup of my MBP easier? I also use 6s and iPad Air iPhone. I would be able to save these features too? Thank you!

    1. you must either have a Time Capsule or connect the drive to your computer when you perform a backup.

    2. Time Machine isn't back from iOS devices directly; they should be stored on a computer and the computer saved Time machine.

    (144712)

Maybe you are looking for