Varialbe Substitution in Multimapping

Hi,
We are trying to use variable substitution for generating multiple files at the target. Our XI Version is XI 3.0 SP 15.
My Source Structure is
P_MT_multimapping  1..1      -
>(MessageTypeName)                                                   
        source              0..unbound
           A                  0..1
           B                  0..1
           C                  0..1
           D                  0..1
and
My Target Structure is
PMTmultimapping   0..unbound    -
>(MessageTypeName)
    Target                0..unbound
         A                  1..1
         B                  1..1
         C                  1..1
         D                  1..1
   filename1             0..unbound
        filename1        1..1
My  Requirement is to generate a new file for each unique value of  'B'  from the source and for a particualr file multiple records should be generated for each unique value of 'A' from the source. And target field 'filename1' should be incremented by 1 for each file. For example
My source payload is:
   <?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
   <ns0:Message1>
      <ns1:P_MT_multimapping xmlns:ns1="http://infosys.com/xi/projects/bp/n1">
         <Source>
            <A>1</A>
            <B>KJ</B>
            <C>1</C>
            <D>1</D>
         </Source>
         <Source>
            <A>1</A>
            <B>KH</B>
            <C>1</C>
            <D>1</D>
         </Source>
         <Source>
            <A>1</A>
            <B>KK</B>
            <C>1</C>
            <D>1</D>
         </Source>
         <Source>
            <A>1</A>
            <B>KL</B>
            <C>1</C>
            <D>1</D>
         </Source>
         <Source>
            <A>2</A>
            <B>KL</B>
            <C>1</C>
            <D>1</D>
         </Source>
         <Source>
            <A>2</A>
            <B>KK</B>
            <C>1</C>
            <D>1</D>
         </Source>
      </ns1:P_MT_multimapping>
   </ns0:Message1>
</ns0:Messages>
And generated target payload:
  <?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
   <ns0:Message1>
      <ns1:PMTmultimapping xmlns:ns1="http://infosys.com/xi/projects/bp/n1">
         <Target>
            <A>1</A>
            <B>KH</B>
            <C>1</C>
            <D>1</D>
         </Target>
         <filename1>
            <filename1>1</filename1>
         </filename1>
      </ns1:PMTmultimapping>
      <ns1:PMTmultimapping xmlns:ns1="http://infosys.com/xi/projects/bp/n1">
         <Target>
            <A>1</A>
            <B>KJ</B>
            <C>1</C>
            <D>1</D>
         </Target>
         <filename1>
            <filename1>2</filename1>
         </filename1>
      </ns1:PMTmultimapping>
      <ns1:PMTmultimapping xmlns:ns1="http://infosys.com/xi/projects/bp/n1">
         <Target>
            <A>1</A>
            <B>KK</B>
            <C>1</C>
            <D>1</D>
         </Target>
         <Target>
            <A>2</A>
            <B>KK</B>
            <C>1</C>
            <D>1</D>
         </Target>
         <filename1>
            <filename1>3</filename1>
         </filename1>
      </ns1:PMTmultimapping>
      <ns1:PMTmultimapping xmlns:ns1="http://infosys.com/xi/projects/bp/n1">
         <Target>
            <A>1</A>
            <B>KL</B>
            <C>1</C>
            <D>1</D>
         </Target>
         <Target>
            <A>2</A>
            <B>KL</B>
            <C>1</C>
            <D>1</D>
         </Target>
         <filename1>
            <filename1>4</filename1>
         </filename1>
      </ns1:PMTmultimapping>
   </ns0:Message1>
</ns0:Messages>
I want to pick the filename from field 'filename1'. I used only single communication channel
My channel has the following variable substitution
    payload:PMTmultimapping,1,filename1,1,filename1,1
the value for filename1 is set to "var"
  I use NFS and write the target file as :     file%var%sant.xml
This creates only one file at the target directory with the file name 'file1sant.xml'.
but I want to generate multiple files for the above.
Any pointers on How to Fix this.
Regards,
Abhishek.

Abhishek:
After I read your post, you have a couple of requirments.
But I do not know which part you came cross problem.
On Mapping, or get the file name ?
Anyway, my thoughts:
On Mapping part:
req 1: generate a new file for each unique value of 'B' from the source :
  B->Removecontext->PMTmultimapping
req 2: for a particualr file multiple records should be generated for each unique value of 'A' from the source
  A->reomveContext->sort->SplitByValue[Value Change]->CollapsContext--> %YourMultipleRecords%
req 3:  And target field 'filename1' should be incremented by 1 for each file
You can come up an UDF by using sample code below to get the file name from source side:
DynamicConfiguration conf = (DynamicConfiguration) container
.getTransformationParameters()
.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key= DynamicConfigurationKey.create (
"http://sap.com/xi/XI/System/File","Filename");
conf.put(key,fname);
return " ";
  Your file counter can be passed by using index standard function
Then you concate your filename and index to your final filename.
Regards.
Liang

Similar Messages

  • Veriable substitution issue in multimapping

    Hi Experts,
    I am working on the requirement where i need to create multiple flat files using multimapping for this. I am working on SAP PI 7.31 SP07, using SFTP adapter and messagetransformbean to create flat files.
    I am going for the variable substitution option as i want file name should be dynamic.(considering limitation of ASMA and dynamic configuration in
    multimapping)
    Getting the error "The variable substitution cannot be parse the message xml: Content is not allowed in prolog"
    Variable name- var1 reference- payload:NotificationAttachments,1,DocumentDetails,1,IncidentNumber,1
    Output struture-
    NotificationAttachments(1)
         ->DocumentDetails(0-n)
                   ->IncidentNumber(1)
                   ->DocNumber(1)
                   ->DocDescription(1)
                   ->Path(1)
    Please note one file can have multiple DocumentDetails.
    When i use reference for header data i.e. message:interface_name this works fine, but i want ot use IncidentNumber in file name from the payload.
    Can some one tell me is there something wrong on configuration, or there is some limitation here.
    Appreciate quick help.
    Thanks,
    Sandip

    Hello,
    May be u can check ur xpath? BTW, few days back i have seen a similar thread hope it's not somekind of bug (will cross check the same once i reach office)
    Variable Substitution in Receiver File Channel. PI 7.3
    Thanks
    Amit Srivastava

  • MultiMapping: Varialbe file name

    Hi,
    I am using multimapping with 3 target message types. For each message type a file needs to be created. Is it possible to use variable substitution for generating different file names for each message type?
    For example, I am using MT1,MT2 and MT3 as target MT.
    For MT1, file name should be Add.
    For MT2, the file name needs to be Update
    For MT3, file name needs to be Disable.
    Thanks,
    Vishal

    Hi Vishal,
    >>Since these 3 files are sent to same target directory, I thought of using only one communication channel. Is it possible to do so with different MT in mapping and having to create a different file for each MT? Or there's no other option but to cerate 3 CC's..
    if receiving structures are different then when you use variable substitution the root node name (MT_) will be different
    so you wont be able to have the same CC.
    Regards
    Suraj
    Edited by: S.R.Suraj on Sep 10, 2009 3:28 AM
    Edited by: S.R.Suraj on Sep 10, 2009 3:29 AM

  • Use varialbe as a value in substitution variable

    Hi there,I incrementaly update my cube day by day.And I set a user variable in autoexec.bat to get the current date,eg '2003-06-23'.Could I use such variable as a variable's value in substition variable ?My platform is 6.5 on w2k.Regards,luau

    You can use that in a MAXL script to set the substitution variable.the MAXL script would be something like:Alter database $4 drop variable $5;alter database $4 add variable $5 $7 ;where: $4 is the app.cub $5 is the substitution variable name $7 is the value of the subs. variableRich Sullivan - Beacon Analytics

  • Substitution varialbe does not exist Essbase error 1051083

    Gurus,
    I have a query about this error.
    Essbase Error 1051083 - Substitution variable APP.DATABASE.YMNTH does not exist
    This substitution variable is is created in global level - for ALL APPS/ALL DBS.
    When users try to pull off reports in planning using this database, we get the error message mentioned above.
    What could be reason we get this error even though we have the member available in the cube.
    I know the substitution variable is defined without any issue, it has the name and value as well and we have those members in the dimensions. I believe, the report freezes during such report retrieval, so I think the freezing has to do with this as well.
    Any advise?
    Thanks

    Which version?
    Is that error populated in Essbase logs?
    Error "1051083 Substitution variable <<app.db.substitutionvariablename>> is not found" [ID 1259386.1]
    By default Planning looks at specific app/db level variable, then at app level and then at global level. (Just checked that in 11.1.2.2.303 Planning and didn't see any issues)
    Regards
    Celvin
    http://www.orahyplabs.com

  • Error in Variable Substitution

    Dear All,
    Result Payload:
    <ns1:MT_Level1 xmlns:ns1="http://test.com">
    <Header>
      <Separator>,</Separator>
    </Header>
      <Detail>
      <FileNumber>30</FileNumber>
      <LinkToNextLevel />
      <Expansion1>0</Expansion1>
      <Expansion2>0</Expansion2>
      <Expansion3>0</Expansion3>
      <Expansion4>0</Expansion4>
      </Detail>
    <Detail>
      <FileNumber>30</FileNumber>
      <LinkToNextLevel />
      <Expansion1>0</Expansion1>
      <Expansion2>0</Expansion2>
      <Expansion3>0</Expansion3>
      <Expansion4>0</Expansion4>
      </Detail>
      <FileNode>
      <FileName>test.txt</FileName>
      </FileNode>
      </ns1:MT_Level1>
    I want to use "File Name" in the "File Node" node for my variable substitution.
    In the configuration:
    File Name Scheme = %filename%
    Variable = filename
    reference = payload: Messages, 1, Message, 1, MT_Level1, 1, FileNode, 1, FileName, 1
    Note: I'm using multimapping (1 to N).
    File Name path is /ns0:Messages/ns0:Message2/ns1:MT_Level1/FileNode/FileName ( from right click in the file name --> copy path).
    I got following error:
    "Attempt to process file failed with com.sap.aii.adapter.file.configuration.DynamicConfigurationException: Error during variable substitution: com.sap.aii.adapter.file.varsubst.VariableDataSourceException: The following variable was not found in the message payload: filename"
    Please advise!
    Best Regards,
    Victor.

    Dear All,
    My problem is solved!
    The issue is because I don't put the interface mappings sequence as the same sequence as the message mappings sequence. Hence the structure name that i put in the variable substitution all are not match with the structure name in the payload even though all have the file name element.
    So what i did is i have to reorder the sequence of my message mappings to be the same sequence as the interface mappings sequence.
    Thanks for all that trying to help!
    Appreciated it guys.
    BTW, for the variable reference it's correct that i no need to put message and message2 as the reference.
    payload:MT_Level1,1,FileNode,1,FileName,1 will do.
    Best Regards,
    Victor.

  • Variable substitution for Dynamic filename

    Hi All,
    my Scenario is Proxy to file. and the receiver file should be a zip file of extension .dat.gz.
    In mapping I tried as below. In signature I used one sender and two receiver messages.
    SENDER:                         RECEIVER:(2messages)
    MT_Product                       MT_Product
    -----Row                              ---------Row
    ---------field1                         -----------field1
    ---------field2                         -----------field2
    ---------field3                         -----------field3
                                             MT_Poduct_1
                                               --------field5  
    for field5 I mapped current date and I am trying to use it in Reciver file communication channel. will that be correct to use?
    In receiver communication channel the file name is Product_%field5%.zip I used
    and I used Module Configuration for content conversion and Zipping the file.
    In variable substitution I used field5 for dynamic date.
    field5-----------
    payload:Messages,1,Message2,1,MT_Product_1,1,field5,1
    Module Confuguration:
    Guys! am on right path????? will this be possible????

    Hello,
    Why you are using multimapping? Just for defining target file name using var substitution - BTW, that too is incorrect. You cannot use Messages/Message 1 nodes in variable substitution.
    Secondly, if I am not wrong the approach of defining dynamic zip file name using variable substitution won’t work because variable substitution will be executed once all the modules before standard call sap adapter gets executed. So during runtime, at var substitution step, ur file will actually be a text file instead of XML as a result u will get an exception.
    So, if there is no specific objective of using multimapping then simply use DC.
    Thanks
    Amit Srivastava

  • Problem in Variable Substitution (Receiver File Adapter)

    Hi,
    I am facing problem in the variable substitution in receiver file Communication channel. My expected file name is A_C.xml; but my actual output filename obtained is C_C.xml for the below example target file:
    <ProductionSch>
    <CustomField>
    <value>
    <ValueString>A</ValueString>
    </value>
    </CustomField>
    <CustomField>
    <value>
    <ValueString>B</ValueString>
    </value>
    </CustomField>
    <CustomField>
    <value>
    <ValueString>C</ValueString>
    </value>
    </CustomField>
    </ProductionSch>
    I have used the following parameters in the file communication channel:
    File Name Schema: %var1%_%var2%.xml
    Variable Substitution:
    Variable Name                     Reference
    var1                                     payload:ProductionSch,1,CustomField,1,value,1,ValueString,1
    var2                                     payload:ProductionSch,1,CustomField,3,value,1,ValueString,1
    When I try using either of the one in the file name schema and the corresponding variable reference in the variable substitution I am getting the correct output filename as A.xml or C.xml. However, when I give either of the one variable in file name schema and both the variable references in the variable substitution I am getting only C.xml as per the example file.
    Can any of you suggest me where I am wrong or any other suggestion which I can try?
    I cannot use dynamic configuration as I am using multimapping. Multiple file names cannot be generated using dynamic configuration.
    Regards
    Sowmya

    hi Sowmya,
    refer you to this [Note 1581988 - Variable Substitution option does not work properly|https://service.sap.com/sap/support/notes/1581988] (2011.05), as SAP says " when there is more than one variable using the same name as the last element, File Adapter does not select the correct one.... ".
    regards.
    Mickael

  • Variable substitution for csv file

    Hi Guys,
    I am using Multimapping to generate 2 target messages and finally creating these 2 messges as csv files. But i need to use variable substitution (because dynamic configuration doesnt work in multimapping) to create the target files and i need to omit this node from content.  i know if it is fixed length file we can use variable substitution and finally we can cut the variable in content conversion by using below method
    fixedLengthToodShortHandling   cut
    Note:- I am using PI7.1
    thanks,
    madhu

    You must separate variable filename from the other fields in several nodes.
    Please, analyze if you can change your scenario, with next stucture:
    <ns0:MT_MadhuMulti xmlns:ns0="http://rr.unilever.com/bconepi13">
    <Strutcture>
    <Name>Syam</Name>
    <***>FEMALE</***>
    <ID>123</ID>
    </Strutcture>
    </Strutcture>
    <Strutcture>
    <Name>Syam1</Name>
    <***>Male</***>
    <ID>789</ID>
    </Strutcture>
    <nothing>
    <Filename>EmpDetails</EmpDetails>
    </nothing>
    </ns0:MT_MadhuMulti>
    And then in your CC:
    Recordset strucutre --> Structure,nothing
    Structure.fieldSeparator --> ;
    nothing.fieldFixedLengths --> 0
    nothing.fixedLengthTooShortHandling --> Cut
    nothing.endSeparator --> '0'
    Regards,
    Carme.

  • Usage of Variable Transport Binding(Receiver SOAP adapter) in multimapping

    Hi All,
    Mentioned below is the flow of the scenario that I am facing issues with:
    ECC -> PI (A) -> PI (B) - Receivers(1,2,3..n)
    I am working on PI(A).
    An Idoc containing multiple Plants is triggered which is mapped to an XML in PI(A).
    Depending on the number of Plants in the Idocs, that many XMLs are created in PI(A) using multimapping.
    These XMLs are then sent to PI(B) which would route it to different receivers.
    But PI(A) should send the party name to PI(B) for routing.
    For this I am using dynamic configuration. If there are 'N' party names based on 'N' plants, always the last part name is being sent to PI(B).
    Is it possible to send all the party names associated with each XML(/plant) without overriding?
    As mentioned in the below table, an Idoc is triggered with 3 Plants. 3 XMLs are generated each for a different party. But only the last party i.e. C is being sent to PI(B) using dynamic configuration overriding A and B.
    Plant
    Party Name
    Output
    1
    A
    2
    B
    3
    C
    C
    Please help me to resolve this issue.
    Regards,
    Vishal

    Hello,
    DC is not supported in multimapping.
    But, where exactly u want to send the party name? In the xml file u want that party name to be there?
    If yes, then there are 2 options either use AM as shown below or u can use variable substitution (search SDN u will find quite a few blogs/wiki on the same)
    A new approach: Multi-mapping Dynamic Configuration using a generic custom module
    Thanks
    Amit Srivastava

  • How  we can mention varible substitution for diffrent message payloads

    Hi,
    How  we can mention varible substitution for diffrent message payloads,
    My sceanrio like following,
    According the Outbound idoc message,based on the condition the messages to be split into 9 diffrent files.The sender message may or may not satisfied the condition to one or two messages or  all messages.
    I done the mapping 1:N multimapping in messagemapping & Interface mapping too.
    In reciever file adapter i put the variable substiution like as fallows.
    Variable            Refrence
    Name--            -
    Filename -- payload:message_type_1,1,Segment1,1,Segment2,1,Field_1,1
    <b>How we can mention variable substitution for remaining messages in the same communication channel.my message type names are diffrent for all 9 messagetypes.</b> Any ideas pl forward..,
    When i am testing this scenario,able to processing a one file but the file is not placed in the specified target & gives the follwing error:
    'Conversion configuration error: Unknown structure 'ns1:message_type_2' found in document', probably configuration error in file adapter (XML parser error)'.The file is
    In this case Idoc data satisfied the one message condition only.
    If any ideas & suggestions ..?

    Hi Anjan
    You could always put the "FileName" and "Directory" names into the Dynamic Configuration using a UDF in the map - possibly using a value mapping table to determine the correct values. Then simply reference "%Directory%" and "%FileName%" in the file adapter.  This way you do not have to reference payload variables and you set the names in the map. You will need to tick the box for "use adapter specific message attributes" in the file adapter. you UDF code will look something like
    String dir = "/path";
    String fil = "filename.txt";
    DynamicConfiguration conf = (DynamicConfiguration)container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","Directory");
    conf.put(key,dir);
    DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");
    conf.put(key,fil);
    - Stephen

  • Multimapping and dynamic folder selection for files

    Hi SDNers,
    I have a requirement where I need to split the message in multiple messages, I am using 1:N Multimapping for this.
    Also I need to use dynamic configuration to route the separated files to multiple folders based on place field in the message.
    When I am using Dynamic configuration the splitted files are all getting created in one directory instead of multiple directories.
    The requirement is that if place field has value india then the file having value as INDIA should be placed in folder INDIA, if place is UK then that file should be placed in folder UK
    Can anyone please help me on how to achieve this?
    Regards,
    Gautam Purohit

    As far as I know this is not possible, since bulk message will be delivered to Adapter Frame Work (AFW). AFW delegates each message from bulk message.
    Try using Variable substitution, but I am not sure if it works.
    May be you need a BPM to achieve this. But this will cause performance.
    Regards,
    Praveen Gujjeti.
    Edited by: Praveen Gujjeti on Apr 6, 2010 8:11 PM

  • Splitting message using multiMapping

    Hi All,
    I'm testing a simple file to file scenario in which I'm using multi mapping in Message mapping and I used enhanced Interface Determination.
    For n input Employees(consisting of n Employees in single input XML file) I want n output xml files depending on the employee names.
    For getting output xml file names based on Emp number i used variable Substitution method also.
    But when I test the scenario (Even for one or more Employees in the input XML) I'm getting the below mentioned error in receiver file channel.
    "Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: Error during variable substitution: com.sap.aii.adapter.file.varsubst.VariableDataSourceException: The following variable was not found in the message payload: var1: com.sap.aii.adapter.file.configuration.DynamicConfigurationException: "
    In receiver file channel I have given various fields as below:
    File Name Scheme : Emp_%var1%.xml(and checked Create target Directory also)
    In advanced mode checked the Enable box under Variable Substitution and given as below:
    var1  payload:INF94145_Emp_Input_MT, 1, Employee, 1, Details, 1, Name, 1
    PFB the screen shot of my mapping document.
    [http://picasaweb.google.com/prajwal24/MyScenario#]
    I'm not sure whether I mapped the input fields to output fields correctly or not according to Multimapping rule.
    Please let me know if I have to do any changes in the mapping as well.
    Can any one please help me about how to proceed further in this case and split 1 single input file (consisting of n Employees)
    into n output Employee files.
    Thanks and Regards,
    Prajwal
    Edited by: Naluvala Prajwal on Sep 17, 2009 10:56 PM

    HI Satish,
    Thanks for your valuable inputs.
    As said by you I have mapped Employee to INF94145_Emp_Output_MT by using split by value.
    PFB the details of my mapping and also the link in which I have placed the screenshot of my mapping.
    [http://picasaweb.google.com/prajwal24/MyScenario#]
    It is a simple one to one mapping except for INF94145_Emp_Output_MT and Employee fields.
    For these fields the mapping is as follows:
       1)  Employee(1...Unbounded)->SplitByValue->INF94145_Emp_Output_MT(0...Unbounded)
        2)  Employee(1...Unbounded)--->Employee(1...Unbounded)
    Now I'm getting two Employee's instead of two INF94145_Emp_Output_MT's .
    Please let me know incase of any corrections.
    Regards,
    Prajwal

  • Substitution Variable update

    Gurus,
    I manually updated substitution varialbe. Do I need to take any further step for it to take effect? For example, Do I need to refresh database list or or refresh outline, or refresh anything at all, or it will be there after it is being set
    Thanks you

    No you don't need to do anything else, if this is referring to planning there will be a period before planning syncs up with the latest variable value.
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • Filename in J2SE Adapter with Variable Substitution

    Hello,
    Within the J2EE receiver fileadapter (and ftp) from SP13 it is possible to compose the target filename and directory based on the payload of a message using variable substitution.
    I wonder if it is also possible to use variable substitution with the J2SE fileadapter. For this it is not documented but i thougth that the same java libraries are used for the J2EE an J2SE file-adapters.
    Aybody??
    Really Nobody??
    Message was edited by: Emile Hermans

    Hello,
    the J2SE Adapter does not support variable subsition. Therefore we created our own class which gets called from the main SAP XI class "XMB2FileProcessor.class" wich is in the jar "aii_msg_adapter.jar". In your own class you can do what ever you need to chane the file name. In the configuration you can set your own parameter to search the payload for a string you want to replace. We also had to come up with our own timestamp, e.g. file2005-11-10 which SAP does not let you do, only the full timestamp is possible.
    One other nice thing is that you can develop our JAVA class local and test it with your local J2SE Adapter Engine on you PC before you deploy it.
    Steps to do:
    1. JAD the SAP class
    2. Put a call in the SAP class
    3. Compile the class
    4. Put the class back in the archive
    5. Create your own class
    6. Create a jar file for it
    7. Put the jar file in the tech_adapter directory
    8. Change the run_adapter start cmd to include your jar file
    It works great, the only issue is if you patch the J2SE engine you have to do step 1 to 4 again but that should it very easy to do.
    Cheers
    Stefan

Maybe you are looking for

  • Laptop Recovery

    I have hp g6 series laptop. I have some problem with opening files,it is showing .dll file is missing. And i think virus also infected my laptop,So i thought of recovering my laptop for first time by myself(laptop is still under warranty period only)

  • Personal tags in Retention Policy only working in OWA, not Outlook 2010 client

    Version: Exchange 2010 SP2 Client: Office Professional Plus 2010 SP1 As we don't want to enforce retention or archiving policies, but still give users the options to add tags to folders I set up new Retention Policy with the following tags only: -Per

  • Roll two Quicktime players at once?

    Hi! I'm wondering if there is a way to cue two QuickTime players to roll at the same time... I would like to compare two videos side by side and how well they time and match. Its very hard when I have a 1/2 to 1 second delay because I have to roll on

  • How do you force patterns to be moveable like an object on a layer?

    It's weird because swatch patterns always seem to be anchored to some unknown part of the document, not on it's own layer. In other words, if I have an area that frames the pattern I am using, (the pattern appears to "fill" this object) and I slide t

  • Why do its said cannot contact reliable source ?

    why do its said cannot contact reliable source ?