InterSystems Cach├й рдореЗрдВ рдЕрд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ

рд╢рд╛рдпрдж рд╣рд░ рдХреЛрдИ рдЬреЛ рдЗрдВрдЯрд░рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреИрдЪ рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдЗрд╕рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ (INT) рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреЛрдб рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рднреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдиреА рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╕рдорд░реНрдерди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ DBMS рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ Cach├й ObjectScript рд╕реЗ рдмрджрддрд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреИрдЪ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрджрд┐ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред



рдЖрд▓реЗрдЦ 2014.1 рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

SAMPLES рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдЖрдк рдХрд╕реНрдЯрдо рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ "рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (.tst)" рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдПрдХ TestRoutine.TST рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдордХреНрдЦреА рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рд╡рд╣ рд╡рд░реНрдЧ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╡рд╣ рд╣реИ Studio.ExampleDocumentред рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмрдирд╛рдПрдВред рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ .JS рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣рдо рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣ рдмрд┐рд▓реНрдХреБрд▓ рдХреЗрдХ рдирд╣реАрдВ рд╣реИ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореВрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ CacheJavaScript рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ .CJS рд╣реЛрдЧрд╛ред рдЪрд▓рд┐рдП% CJS.StudioRoutines рд╡рд░реНрдЧ рдХреЛ% Studio.AbstractDocument рд╡рд░реНрдЧ рдХреЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕рдореЗрдВ рдирдИ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд┐рдЦреЗрдВрдЧреЗред



/// The extension name, this can be a comma separated list of extensions if this class supports more than one Projection RegisterExtension As %Projection.StudioDocument(DocumentDescription = "Cach├йJavaScript Routine", DocumentExtension = "cjs", DocumentIcon = 1, DocumentType = "JS");
      
      







рдбреЙрдХреНрдпреВрдореЗрдВрдЯрдбреЗрд╕реНрдХреНрд░рд┐рдкреНрд╢рди - рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реВрдЪреА рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдУрдкрди рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд;

DocumentExtension - рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛ рдЗрд╕ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;

DocumentIcon - рдЖрдЗрдХрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдЙрдкрд▓рдмреНрдз рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк:

DocumentType - рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрдкрд▓рдмреНрдз рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:



рдЕрдм рд╣рдо рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╣реА рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред

ListExecute рдФрд░ ListFetch рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлрд╝рд╛рдЗрд▓ рдУрдкрди рдбрд╛рдпрд▓реЙрдЧ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

ClassMethod ListExecute (ByRef qHandle рдХреЗ рд░реВрдк рдореЗрдВ% рдмрд╛рдЗрдирд░реА, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ% рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдлреНрд▓реИрдЯ рдХреЗ рд░реВрдк рдореЗрдВ% рдмреВрд▓рд┐рдпрди, рд╕рд┐рд╕реНрдЯрдо% рдмреВрд▓рд┐рдпрди рдХреЗ рд░реВрдк рдореЗрдВ)% рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ

{

рд╕реЗрдЯ рдХрд░реЗрдВрд╣реИрдВрдбрд▓ = $ рд╕реВрдЪреА рдирд┐рд░реНрдорд╛рдг ( рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ , рдлреНрд▓реИрдЯ , рд╕рд┐рд╕реНрдЯрдо , "" )

$ $ $ $ рдареАрдХ рд╣реИ

}



ClassMethod ListFetch (ByRef qHandle рдХреЗ рд░реВрдк рдореЗрдВ% рдмрд╛рдЗрдирд░реА, ByRef Row рдХреЗ рд░реВрдк рдореЗрдВ% рд╕реВрдЪреА, ByRef рдХреЗ рд░реВрдк рдореЗрдВ% рдкреВрд░реНрдгрд╛рдВрдХ = 0) рдХреЗ рд░реВрдк рдореЗрдВ% рд╕реНрдерд┐рддрд┐ [рд╕реНрдерд╛рди = рд╕реВрдЪреА = рд╕реВрдЪреА]

{

рд╕реЗрдЯ рдкрдВрдХреНрддрд┐ = "" , AtEnd = 0

рдпрджрд┐ qHandle = "" AtEnd = 1 рд╕реЗрдЯ $ $ $ $ рдареАрдХ рд╣реИ

рдЕрдЧрд░ $ рд╕реВрдЪреА ( qHandle ) '= "" || ( $ рд╕реВрдЪреА ( qHandle , 4) = 1) AtEnd рд╕реЗрдЯ рдХрд░реЗрдВ = 1 $ $ $ $

рд╕реЗрдЯ AtEnd = 1

рд╕реЗрдЯ rtnName = $ listget ( qHandle , 5)

{рдХреЗ рд▓рд┐рдП

рд╕реЗрдЯ rtnName = $ рдСрд░реНрдбрд░ (^ rCJS ( rtnName )) рдЫреЛрдбрд╝реЗрдВ : rtnName = ""

рдЬрд╛рд░реА рд░рдЦреЗрдВ : $ get (^ rCJS ( rtnName , "LANG" )) '= "CJS"

рд╕реЗрдЯ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк = $ zdatetime ( $ get (^ rCJS ( rtnName , 0)), 3)

рд╕реЗрдЯ рдЖрдХрд╛рд░ = + $ рдорд┐рд▓рддрд╛ рд╣реИ (^ rCJS ( rtnName , 0, "SIZE" ))

рд╕реЗрдЯ рдкрдВрдХреНрддрд┐ = $ рд╕реВрдЪреА ( rtnName _ ".cjs" , рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк , рдЖрдХрд╛рд░ , "" )

рд╕реЗрдЯ AtEnd = 0

$ рд╕реВрдЪреА ( qHandle , 5) = rtnName рд╕реЗрдЯ рдХрд░реЗрдВ

рдЫреЛрдбрд╝рдирд╛

}

$ $ $ $ рдареАрдХ рд╣реИ

}



рд╣рдо rCJS рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ; рддрджрдиреБрд╕рд╛рд░, ListFetch рд╡рд┐рдзрд┐ рдЗрд╕ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╡реЗ рд▓рд╛рдЗрдиреЗрдВ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо, рджрд┐рдирд╛рдВрдХ рдФрд░ рдЖрдХрд╛рд░ред рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрд╡рд╛рдж рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХреНрдЬрд╝рд┐рд╕реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдо рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВред

/// рд╡рд╛рдкрд╕реА 1 рдпрджрд┐ рджрд┐рдирдЪрд░реНрдпрд╛ 'рдирд╛рдо' рдореМрдЬреВрдж рд╣реИ рдФрд░ 0 рдЕрдЧрд░ рдпрд╣ рдирд╣реАрдВ рд╣реИред

ClassMethod рдЕрд╕реНрддрд┐рддреНрд╡ (% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдирд╛рдо)% рдмреВрд▓рд┐рдпрди рдХреЗ рд░реВрдк рдореЗрдВ

{

рд╕реЗрдЯ rtnName = $ рдЯреБрдХрдбрд╝рд╛ ( рдирд╛рдо , " , " , 1, $ рд▓рдВрдмрд╛рдИ ( рдирд╛рдо , "" ) -1)ред

рд╕реЗрдЯ рдХрд░реЗрдВ rtnNameExt = $ рдЯреБрдХрдбрд╝рд╛ ( рдирд╛рдо , " , " , $ рд▓рдВрдмрд╛рдИ ( рдирд╛рдо , "" ))ред

$ рдбреЗрдЯрд╛ (^ rCJS ( rtnName )) рдФрд░& ( $ get (^ rCJS ( rtnName , "LANG" )) = $ zconvert ( rtnNameExt , "U" )) рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ

}



рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╡рд┐рдзрд┐ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рддрд╛рд░реАрдЦ рдФрд░ рд╕рдордп рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдкрд░рд┐рдгрд╛рдо рдлрд╝рд╛рдЗрд▓ рдЦреБрд▓реЗ рд╕рдВрд╡рд╛рдж рдореЗрдВ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред

///% рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджрд┐рдирдЪрд░реНрдпрд╛ 'рдирд╛рдо' рдХреА рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд▓реМрдЯреЗрдВред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рджрд┐рдирдЪрд░реНрдпрд╛ рд╣реИ

/// рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ рдкреНрд░рд╛рд░реВрдк $ zdatetime рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ($ horolog, 3),

/// рдпрд╛ "" рдпрджрд┐ рджрд┐рдирдЪрд░реНрдпрд╛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

ClassMethod TimeStamp (% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдирд╛рдо)% TimeStamp рдХреЗ рд░реВрдк рдореЗрдВ

{

рд╕реЗрдЯ rtnName = $ рдЯреБрдХрдбрд╝рд╛ ( рдирд╛рдо , " , " , 1, $ рд▓рдВрдмрд╛рдИ ( рдирд╛рдо , "" ) -1)ред

рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╕реЗрдЯ рдХрд░реЗрдВ = $ zdatetime ( $ get (^ rCJS ( rtnName , 0)), 3)

рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ

}


рдЕрдм рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд╛рда рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рдПрдХ рд╣реА ^ рдЖрд░рд╕реАрдЬреЗрдПрд╕ рдЧреНрд▓реЛрдмрд▓ рдореЗрдВред

/// рд╕реНрдЯреНрд░реАрдо рдХреЛрдб рдореЗрдВ рдирд╛рдо рдореЗрдВ рджрд┐рдирдЪрд░реНрдпрд╛ рд▓реЛрдб рдХрд░реЗрдВ

рд╡рд┐рдзрд┐ рд▓реЛрдб ()% рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ

{

рд╕реЗрдЯ рд╕реНрд░реЛрдд = .. рдХреЛрдб

рд╕реНрд░реЛрдд рдХрд░реЛ рд╕реНрдкрд╖реНрдЯ ()

рд╕реЗрдЯ pCodeGN = $ рдирд╛рдо (^ rCJS (.. рд╢реЙрд░реНрдЯрдиреЗрдо , 0))

рдХреЗ рд▓рд┐рдП pLine = 1: 1: $ get (@ pCodeGN @ (0), 0) {

рд╕реНрд░реЛрдд рдХрд░реЛ WriteLine (@ pCodeGN @ ( pLine ))

}

рд╕реНрд░реЛрдд рдХрд░реЛ рд░рд┐рд╡рд╛рдЗрдВрдб ()

$ $ $ $ рдареАрдХ рд╣реИ

}



/// рдХреЛрдб рдореЗрдВ рд╕рдВрдЪрд┐рдд рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЛ рдмрдЪрд╛рдПрдВ

рд╡рд┐рдзрд┐ рд╕рд╣реЗрдЬреЗрдВ ()% рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ

{

рд╕реЗрдЯ pCodeGN = $ рдирд╛рдо (^ rCJS (.. рд╢реЙрд░реНрдЯрдиреЗрдо , 0))

рдорд╛рд░ @ pCodeGN

@ pCodeGN = $ ztimestamp рд╕реЗрдЯ рдХрд░реЗрдВ

рд╕реЗрдЯ .. рдХреЛрдб ред рд▓рд╛рдЗрдирдЯрд░реНрдорд┐рдиреЗрдЯрд░ = $ рдЪрд╛рд░ (13,10)

рд╕реЗрдЯ рд╕реНрд░реЛрдд = .. рдХреЛрдб

рд╕реНрд░реЛрдд рдХрд░реЛ рд░рд┐рд╡рд╛рдЗрдВрдб ()

WHILE '( рд╕реНрд░реЛрдд ред рдПрдЯрдПрдВрдб ) {

pCodeLine = рд╕реНрд░реЛрдд рд╕реЗрдЯ рдХрд░реЗрдВ ред ReadLine ()

рд╕реЗрдЯ @ pCodeGN @ ( $ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ (@ pCodeGN @ (0))) = pCodeGine

}

@ pCodeGN @ ( "SIZE" ) = .. рдХреЛрдб рд╕реЗрдЯ рдХрд░реЗрдВ ред рдЖрдХрд╛рд░

$ $ $ $ рдареАрдХ рд╣реИ

}


рдЕрдм рдордЬрд╝реЗрджрд╛рд░ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП: рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╕рдВрдХрд▓рдиред рд╣рдо INT рдореЗрдВ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЗрд╕ рддрд░рд╣ Cach├й рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд▓реЗрдЦ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ Cach├йJavaScript рднрд╛рд╖рд╛ рдХреА рдХрд╛рдлреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд▓рд╛рдЧреВ рдХреА рд╣реИрдВ: рдЪрд░ рдШреЛрд╖рдгрд╛ (var), рд░реАрдбрд┐рдВрдЧ (рд░реАрдб) рдФрд░ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ (Println)ред

рдЬрдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ /// CompileDocument рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ

/// рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рд╣реБрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ

%% рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд┐ CompileDocument (ByRef q%% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ)

{

рд▓рд┐рдЦреЗрдВ !, тАЬрд╕рдВрдХрд▓рди: ile , .. рдирд╛рдо

рд╕рдВрдХрд▓рди рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ = ## рд╡рд░реНрдЧ ( % рджрд┐рдирдЪрд░реНрдпрд╛ )ред % рдУрдкрдирдЖрдИрдб (.. рд╢реЙрд░реНрдЯрдиреЗрдо _ ".INT" )

рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рд╕реЗрдЯ рдХрд░реЗрдВ ред рдЙрддреНрдкрдиреНрди = рез

рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ ред рд╕реНрдкрд╖реНрдЯ ()



рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ ред рд▓рд┐рдЯрд▓рд▓рд╛рдЗрди ( "," _ $ zdatetime ( $ ztimestamp , 3))

do .. GenerateIntCode ( рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб )



рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ ред % рдмрдЪрд╛рдУ ()

рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ ред рд╕рдВрдХрд▓рди ()

$ $ $ $ рдареАрдХ рд╣реИ

}



рд╡рд┐рдзрд┐ GenerateIntCode (рдПрдХреЛрдб) [рдЖрдВрддрд░рд┐рдХ]

{

рд╕реЗрдЯ varMatcher = ## рд╡рд░реНрдЧ ( % Regex.Matcher )ред % рдирдпрд╛ ( "[\ t] * (var [\ t] +)? (\ W [\ w [d \ d] *)] [\ t] * (\ = [\ t] * (*ред *)?"?

PrintlnMatcher = ## рд╡рд░реНрдЧ ( % Regex.Matcher ) рд╕реЗрдЯ рдХрд░реЗрдВред % рдирдпрд╛ ( "[\ t] * (?: рдХрдВрд╕реЛрд▓ \ .рд▓реЙрдЧред рдкреНрд░рд┐рдВрдЯреНрд▓рди) \ ((^ ^ \)] +) \)?" )

readMatcher = ## рд╡рд░реНрдЧ ( % Regex.Matcher ) рд╕реЗрдЯ рдХрд░реЗрдВред % рдирдпрд╛ ( "[\ t] * рдкрдврд╝рд╛ \ ((ред *) \ _, ((ред *) \)" )



рд╕реЗрдЯ рд╕реНрд░реЛрдд = .. рдХреЛрдб

рд╕реНрд░реЛрдд рдХрд░реЛ рд░рд┐рд╡рд╛рдЗрдВрдб ()

рдЬрдмрдХрд┐ ' рд╕реНрд░реЛрдд рдХрдо рд╕реЗ рдХрдо {

рд╕реЗрдЯ tLine = рд╕реНрд░реЛрдд ред ReadLine ()



рд╕реЗрдЯ pos = 1

рдЬрдмрдХрд┐ $ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ ( tLine , "(([^ \ '\" "\; \ r \ n] | [\' \" "] [^ \ '\" "] * [\" \ "" "] +) " , рдкреАрдУрдПрд╕ , рдкреЙрд╕ , рдХреЛрдб ) {

рд╕реЗрдЯ tPos = 1

рдЕрдЧрд░ $ zstrip ( tCode , "* W" ) = "" {{

рдПрдХрдХреЛрдб рдХрд░реЗрдВ ред рд▓рд┐рдХреНрд▓рд╛рдЗрди ( tCode )

рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП

}

рдЕрдЧрд░ varMatcher ред рдореИрдЪ ( tCode ) {

varName = varMatcher рд╕реЗрдЯ рдХрд░реЗрдВ ред рд╕рдореВрд╣ (2)

рдЕрдЧрд░ varMatcher ред рд╕рдореВрд╣ (1) '= "" {

рдПрдХрдХреЛрдб рдХрд░реЗрдВ ред рд░рд╛рдЗрдЯрд▓рд╛рдЗрди ( $ char (9) _ "рдирдпрд╛ N _ varName )

}

рдЕрдЧрд░ varMatcher ред рд╕рдореВрд╣ (3) '= "┬╗ {

expr = varMatcher рд╕реЗрдЯ рдХрд░реЗрдВ ред рд╕рдореВрд╣ (4)

expr = .. рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ ( expr ) рд╕реЗрдЯ рдХрд░реЗрдВ

do : expr '= "" aCode ред рд░рд╛рдЗрдЯрд▓рд╛рдЗрди ( $ char (9) _ "рд╕реЗрдЯ N _ varName _ " = ( _ expr )

}

рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП



} рдЕрдиреНрдп рдореИрдЪ ( tCode ) {

expr = printlnMatcher рд╕реЗрдЯ рдХрд░реЗрдВ ред рд╕рдореВрд╣ (1)

expr = .. рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ ( expr ) рд╕реЗрдЯ рдХрд░реЗрдВ

do : expr '= "" aCode ред WriteLine ( $ char (9) _ "рд▓рд┐рдЦреЗрдВ r _ expr _ "; " ))



} рдЕрдиреНрдпреЛ рдкрдврд╝реЗрдВрдореЗрдХрдЪрд░ ред рдореИрдЪ ( tCode ) {

expr = readMatcher рд╕реЗрдЯ рдХрд░реЗрдВ ред рд╕рдореВрд╣ (1)

expr = .. рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ ( expr ) рд╕реЗрдЯ рдХрд░реЗрдВ

рд╕реЗрдЯ var = readMatcher ред рд╕рдореВрд╣ (2)

do : expr '= "" aCode ред рд░рд╛рдЗрдЯрд▓рд╛рдЗрди ( $ char (9) _ "рдкрдврд╝реЗрдВ ine _ expr _ ", " _ var _ ", ";" )

}

}

}

}



ClassMethod рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (tExpr)% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ

{

рд╕реЗрдЯ рдореИрдЪрд░реНрд╕ ( $ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ ( рдореИрдЪрд░реНрд╕ ), "рдореИрдЪрд░" ) = "(? sm) ([^ \ '\" "] *) \ + [\ t] * (?: \" "([^ \" "] *) \ "" | \ '([^ \'] *) \ ') ([^ \ "\" "]") "

рд╕реЗрдЯ рдореИрдЪрд░реНрд╕ ( рдорд┐рд▓рд╛рдирдХрд░реНрддрд╛ , "рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди" ) = "$ 1 _" "$ 2 $ 3" тАЛтАЛ"$ 4"



рд╕реЗрдЯ рдореИрдЪрд░реНрд╕ ( $ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ ( рдореИрдЪрд░реНрд╕ ), "рдореИрдЪрд░" ) = "(? sm) ([^ \ '\" "] *)?: (?) \" ([^ \ ""] *) \ "" | " '([^ \'] *) \ ') [\ t] * \ + ([^ \' \ "" "]") "

рд╕реЗрдЯ рдореИрдЪрд░реНрд╕ ( рдорд┐рд▓рд╛рдирдХрд░реНрддрд╛ , "рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди" ) = "$ 1" "$ 2 $ 3" тАЛтАЛ"_ $ 4"



рд╕реЗрдЯ рдореИрдЪрд░реНрд╕ ( $ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ ( рдореИрдЪрд░реНрд╕ ), "рдореИрдЪрд░" ) = "(? sm) ([^ \ '\" "] *)?: (?) \" ([^ \ ""] *) \ "" | " '([^ \'] *) \ ') ([^ \' \ ""] *) "

рд╕реЗрдЯ рдореИрдЪрд░реНрд╕ ( рдорд┐рд▓рд╛рдирдХрд░реНрддрд╛ , "рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди" ) = "$ 1" "$ 2 $ 3" тАЛтАЛ"$ 4"



tResult = tExpr рд╕реЗрдЯ рдХрд░реЗрдВ

рдореИрдВ = 1: 1: рдореИрдЪрд░реНрд╕ рдХреЗ рд▓рд┐рдП {

рд╕реЗрдЯ рдорд┐рд▓рд╛рдирдХрд░реНрддрд╛ = ## рд╡рд░реНрдЧ ( % Regex.Matcher )ред % рдирдпрд╛ ( рдореИрдЪрд░реНрд╕ ( i , "рдореИрдЪрд░" ))

рд╕реЗрдЯ рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ = $ рдЧреЗрдЯ ( рдореИрдЪрд░реНрд╕ ( i , "рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ" ))



рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ ред рдкрд╛рда = tResult



рд╕реЗрдЯ tResult = matcher ред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди ( рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди )

}



tResult рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ

}



рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдпрд╛ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП, рдЙрддреНрдкрдиреНрди INT рдХреЛрдб рдХреЛ рджреЗрдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ GetOther рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рдЗрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓реМрдЯрд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдЧрдП рдереЗред

/// рдЕрдиреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рдХрд╛рд░ рдЬреЛ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рд▓реМрдЯрд╛рдПрдБред

/// рдПрдХ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдк рдЙрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рдХреА рдЧрдИ рд╕реВрдЪреА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ

/// рдпрд╛ "" рдпрджрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

/// рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХрд╛ 'test.XXX' рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдХ 'test.INT' рд░реВрдЯреАрди рдмрдирд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рднреА рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛

/// 'test.INT' рдХреЗ рд╕рд╛рде рддрд╛рдХрд┐ рдЖрдк рдЪрдХреНрд░ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'test.XXX' рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХреЗрдВред

ClassMethod GetOther (% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдирд╛рдо)% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ

{

рд╕реЗрдЯ rtnName = $ рдЯреБрдХрдбрд╝рд╛ ( рдирд╛рдо , " , " , 1, $ рд▓рдВрдмрд╛рдИ ( рдирд╛рдо , "" )))) ".INT"

рдЫреЛрдбрд╝реЛ : ## рд╡рд░реНрдЧ ( % рджрд┐рдирдЪрд░реНрдпрд╛ )ред % ExistId ( rtnName ) rtnName

"" рдЫреЛрдбрд╝реЛ

}




рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ рдХреНрд▓рд╛рд╕ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХреЗред

рдФрд░ рд╕рд╛рде рд╣реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ред

/// рд░реВрдЯреАрди рдХреЛ рд╣рдЯрд╛рдПрдВ 'рдирд╛рдо' рдЬрд┐рд╕рдореЗрдВ рд░реВрдЯреАрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИ

ClassMethod Delete (% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдо)% рдХреА рд╕реНрдерд┐рддрд┐

{

рд╕реЗрдЯ rtnName = $ рдЯреБрдХрдбрд╝рд╛ ( рдирд╛рдо , " , " , 1, $ рд▓рдВрдмрд╛рдИ ( рдирд╛рдо , "" ) -1)ред

рдХрд┐рд▓ ^ rCJS ( rtnName )

$ $ $ $ рдареАрдХ рд╣реИ

}



/// рд╡рд░реНрддрдорд╛рди рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЛ рд▓реЙрдХ рдХрд░реЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐ рд╕рд┐рд░реНрдл рд░реВрдЯреАрди рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде ^ рдЖрд░рд╕реАрдЬреЗрдПрд╕ рдЧреНрд▓реЛрдмрд▓ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рддреА рд╣реИред

/// рдпрджрд┐ рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рддреЛ рддреНрд░реБрдЯрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛрдб рд▓реМрдЯрд╛рдПрдВ, рдЕрдиреНрдп $ $ $ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ рдареАрдХ рд╣реИ

рд╡рд┐рдзрд┐ рд▓реЙрдХ (% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЭрдВрдбреЗ)% рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ

{

рд▓реЙрдХ + ^ rCJS (.. рдирд╛рдо ): 0 рдПрд▓реАрд╕ рдХреНрд╡рд┐рдЯ $ $ $ рдПрд░рд░ ( $ $ $ рдХреЗрдиреЛрдЯреЙрдХ рд░реЙрдЯрд╛рдЗрди , .. рдирд╛рдо )

$ $ $ $ рдареАрдХ рд╣реИ

}



/// рд╡рд░реНрддрдорд╛рди рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░реЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐ рд╕рд┐рд░реНрдл рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде ^ rCJS рдЧреНрд▓реЛрдмрд▓ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рддреА рд╣реИ

рд╡рд┐рдзрд┐ рдЕрдирд▓реЙрдХ (% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЭрдВрдбреЗ)% рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ

{

рддрд╛рд▓рд╛ - ^ rCJS (.. рдирд╛рдо )

$ $ $ $ рдареАрдХ рд╣реИ

}


рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рд╡рд░реНрдЧ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдмрдХрд┐ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдкреИрдЯрд░реНрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ 3 рддрд░реАрдХреЗ рд╣реИрдВ: рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рд╛рд░реВрдк рдХреА рдПрдХ рд╕рд░рд▓ CSP рдлрд╝рд╛рдЗрд▓, рдПрдХ CSP рд╡рд░реНрдЧ рдЬреЛ CSP.StudioTemplateSuper рд╕реЗ рд▓реА рдЧрдИ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдПрдХ ZEN рдкреГрд╖реНрда рдЬреЛ% ZEN.Template.studio.emplate рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдмрд╛рдж рд╡рд╛рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд░рд▓ рд╣реИред 3 рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИрдВ: рдирдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдХреЛрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдРрдб рдЗрди, рдЬреЛ рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪрд▓рд┐рдП% CJS.RoutineWizard рдХреНрд▓рд╛рд╕ рдмрдирд╛рддреЗ рд╣реИрдВ: рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░% OnTemplateAction рдкрджреНрдзрддрд┐ рдореЗрдВ рдирдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдирд╛рдо рдФрд░ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
  /// рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ: <br>
 /// рдПрдХ рдирдпрд╛ рдХреИрд╢ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реВрдЯреАрди рдмрдирд╛рдПрдБред
 рдХрдХреНрд╖рд╛% CJS.RoutineWizard% ZEN.Template.studioTemplate [StorageStrategy = "]] рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ
 {

 рдкреИрд░рд╛рдореАрдЯрд░ TEMPLATENAME = "рдХреИрд╢ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ";

 рдкреИрд░рд╛рдореАрдЯрд░ TEMPLATETITLE = "рдХреИрд╢ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ";

 рдкреИрд░рд╛рдореАрдЯрд░ TEMPLATEDESCRIPTION = "рдПрдХ рдирдпрд╛ рдХреИрд╢ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реВрдЯреАрди рдмрдирд╛рдПрдВред"

 рдкреИрд░рд╛рдореАрдЯрд░ TEMPLATETYPE = "CJS";

 /// рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯред
 рдкреИрд░рд╛рдореАрдЯрд░ TEMPLATEMODE = "рдирдпрд╛";

 /// рдЕрдЧрд░ рдпрд╣ рдПрдХ TEMPLATEMODE = "рдирдпрд╛" рд╣реИ рддреЛ рдпрд╣ рдЯреИрдм рдХрд╛ рдирд╛рдо рд╣реИ
 /// рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЗрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред  рдЕрдЧрд░ рдХреЛрдИ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ
 /// рдпрд╣ 'рдХрд╕реНрдЯрдо' рдЯреИрдм рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред
 STRING рдХреЗ рд░реВрдк рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ TEMPLATEGROUP;

 /// рдпрд╣ XML рдмреНрд▓реЙрдХ рдЗрд╕ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдмреЙрдбреА рдкреЗрди рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
 XData рдЯреЗрдореНрдкрд▓реЗрдЯрдмреЙрдбреА [XMLNamespace = "http://www.intersystems.com/zen"]
 {
 <pane id = "body">
 <vgroup labelPosition = "рдмрд╛рдПрдБ" рд╕реЗрд▓рд╢реЗрд▓ = "рдкреИрдбрд┐рдВрдЧ: 2 рдкреАрдПрдХреНрд╕; рдкреИрдбрд┐рдВрдЧ-рд▓реЗрдлреНрдЯ: 5 рдкреАрдПрдХреНрд╕; рдкреИрдбрд┐рдВрдЧ-рд░рд╛рдЗрдЯ: 5 рдкреАрдПрдХреНрд╕;">
 <html id = "desc" OnDrawContent = "% GetDescHTML" />
 <рдкрд╛рда рд▓реЗрдмрд▓ = "рдирд┐рдпрдорд┐рдд рдирд╛рдо:" 
	 id = "ctrlRoutineName"
	 рдирд╛рдо = "рдирд┐рдпрдорд┐рдд рдирд╛рдо"
	 рдЖрдХрд╛рд░ = "40"
	 рдЖрд╡рд╢реНрдпрдХ = "рд╕рддреНрдп"
	 рд▓реЗрдмрд▓рдХреНрд▓рд╛рд╕ = "zenRequired"
	 рд╢реАрд░реНрд╖рдХ = "рдХреИрд╢ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реВрдЯреАрди рдирд╛рдо" 
	 onchange = "zenPage.updateState ();"
 />
 </ Vgroup>
 </ рдлрд▓рдХ>
 }

 /// рд╡рд┐рд╡рд░рдг рдШрдЯрдХ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВред
 рд╡рд┐рдзрд┐% GetDescHTML (% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВ)% рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ
 {
	 $ $ $ $ рдареАрдХ рд╣реИ
 }

 /// рдЗрд╕реЗ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд╣рд▓реА рдмрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ;
 /// рдпрд╣ рдлреЛрдХрд╕ рдЖрджрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
 ClientMethod onstartHandler () [рднрд╛рд╖рд╛ = рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ]
 {
	 // рдирд╛рдо рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ
	 var ctrl = zenPage.getComponentById ('ctrlRoutineName');
	 рдЕрдЧрд░ (ctrl) {
		 ctrl.focus ();
		 ctrl.select ();
	 }
 }

 /// рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдпрддрд╛ рд╣реИрдВрдбрд▓рд░ред
 рдХреНрд▓рд╛рдЗрдВрдЯрдореЗрдереЛрдб рдлреЙрд░реНрдорд╡реИрд▓рд┐рдбреЗрд╢рдирд╣реИрдВрдбрд▓рд░ () [рднрд╛рд╖рд╛ = рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ]
 {
	 var rtnName = zenPage.getComponentById ('ctrlRoutineame')ред getValue ();

	 рдЕрдЧрд░ ('' == rtnName) {
		 рдЭреВрдареЗ рд▓реМрдЯрдирд╛;
	 }
	
	 рд╕рдЪ рд▓реМрдЯрдирд╛;
 }

 /// рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред  рдХреЛрдИ
 /// рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред
 рд╡рд┐рдзрд┐% OnTemplateAction ()% рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ
 {
	 рд╕реЗрдЯ tRoutineName = ..% GetValueByName ("рд░реВрдЯреАрди рдиреЗрдо")
	
	 % рд╕рддреНрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдбреЗрдЯрд╛ ("рдЯреЗрдореНрдкрд▓реЗрдЯ", "рдирд╛рдо") = tRoutineName _ "ред CJS"
	 "//" _tRoutineName, рд▓рд┐рдЦреЗрдВ!
	 $ $ $ $ рдареАрдХ рд╣реИ
 }

 }


рд╡рд╣ рд╕рдм рд╣реИред рдЕрдм рдЖрдк рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдХреИрдЪ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред



рдЪрд▓реЛ рдЗрд╕реЗ рд╣реИрд▓реЛ рдХрд╣рддреЗ рд╣реИрдВред рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Cach├йJavaScript рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣ рд╣реИ:

 // hello console.log('Hello World!'); var name=''; read('What is your name? ', name); println('Hello ' + name + '!');
      
      





рдЫрд╡рд┐

рдпрджрд┐ рд╣рдо рдПрдХ рдФрд░ рд╕реНрд░реЛрдд рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдРрд╕реЗ рдХреЛрдб рджреЗрдЦреЗрдВрдЧреЗ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА COS рдкрд░ред

; 2014-05-18 20:06:36 рдкрд░ рдЙрддреНрдкрдиреНрди

"рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!" рд▓рд┐рдЦреЗрдВ ,

рдирдпрд╛ рдирд╛рдо

рд╕реЗрдЯ рдирд╛рдо = ""

рдкрдврд╝реЗрдВ тАЬрдЖрдкрдХрд╛ рдирд╛рдо рдХреНрдпрд╛ рд╣реИ? ,, рдирд╛рдо,!

"рд╣реИрд▓реЛтАЬ _ рдирд╛рдо _ "!" рд▓рд┐рдЦреЗрдВ !
рдПрдХ рдЕрд▓рдЧ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ






рдФрд░ рдЕрдм рдЗрд╕реЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

  USER> d ^ рд╣реИрд▓реЛ
 рдирдорд╕реНрддреЗ рд╡рд┐рд╢реНрд╡!
 рддреБрдореНрд╣рд╛рд░рд╛ рдирд╛рдо рдХреНрдпрд╛ рд╣реИ?  daimor
 рдирдорд╕реНрдХрд╛рд░ рдбреЗрдореЛрд░! 




рдЗрд╕ рддрд░рд╣, рдЖрдк рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ), рдЬреЛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ рдХреИрдЪ рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рдХреЛ рдПрдирдХреЛрдб рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмреИрдХрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреАред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк рдЙрд╕реА рддрд░рд╣ рд╕реЗ Cach├й рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд▓рдЧрднрдЧ рдЕрдВрддрд╣реАрди рд╣реИрдВ: рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдкрд╛рд░реНрд╕рд░, рдПрдХ рд╕рд┐рдВрдЯреЗрдХреНрдЯрд┐рдХ рдкрд╛рд░реНрд╕рд░ рдФрд░ рдПрдХ рдкреВрд░реНрдг-рд╕рдВрдХрд▓рдХ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рднреА рдХреИрдЪ рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдирдИ рднрд╛рд╖рд╛ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдпрд╛рдд рдФрд░ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХреИрдЪ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред



рдЬреЛ рд▓реЛрдЧ "рдШрд░ рдкрд░ рдЕрдиреБрднрд╡ рджреЛрд╣рд░рд╛рдиреЗ" рдХреА рдЗрдЪреНрдЫрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред



All Articles