<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Adding Progress bar in the script in Discussions</title>
    <link>https://community.jmp.com/t5/Discussions/Adding-Progress-bar-in-the-script/m-p/712612#M89596</link>
    <description>&lt;P&gt;Hello ,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a data table with a million rows and am trying to add a progress bar window in the script. I found this threat (&lt;A href="https://community.jmp.com/t5/Uncharted/Progress-Bar-with-Cancel-Button/ba-p/433560" target="_self"&gt;Progress bar)&lt;/A&gt; from Craige useful. I am new to this, so I am still trying to understand where to add the code to indicate the progress. Any suggestions?&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Code for a Progress bar from&amp;nbsp;&lt;a href="https://community.jmp.com/t5/user/viewprofilepage/user-id/982"&gt;@Craige_Hales&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;progressBarWidth = 500;
progressUpdatesSeconds = 1 / 4; // 1/2 sec updates -&amp;gt; 1300ips,  1/30 -&amp;gt; 1000ips (1/4 compromise speed vs appearance)
cancel = 0; // clear the cancel flag
New Window( "Progressbar demo", //
	Show Menu( 0 ),
	show toolbars( 0 ),
	V List Box( //
		cats = Text Box( "" ), // output from the work function
		t = Text Box( "", &amp;lt;&amp;lt;setwrap( 500 ) ), // status of the progressbar
		H List Box( // Duct tape has a light side and a dark side. So does the progressbar.
			left = Spacer Box( size( 0, 10 ), color( "light green" ) ), //
			right = Spacer Box( size( progressBarWidth, 10 ), color( "dark green" ) ), //
			&amp;lt;&amp;lt;padding( 5, 5, 5, 5 ), // gray wrapper
			&amp;lt;&amp;lt;backgroundcolor( "dark gray" ) //
		), //
		cancelButton = Button Box( "Cancel", cancel = 1 ) // sets the cancel flag
	)
);
Wait( 0 ); // allow the window to open, otherwise the updates are not visible

// progressbar variables
startMicroSeconds = HP Time();
workCalls = 0;
recentUpdateMicroSeconds = HP Time();
runSeconds = (recentUpdateMicroSeconds - startMicroSeconds) / 1e6; // so the loop can start
limitSeconds = 10; // time to run the demo

updateProgress = Function( {fractionComplete},
	leftsize = Round( progressBarWidth * fractionComplete );
	rightsize = progressBarWidth - leftsize;
	left &amp;lt;&amp;lt; width( leftsize );
	right &amp;lt;&amp;lt; width( rightsize );
	t &amp;lt;&amp;lt; settext(
		Eval Insert(
			"^workCalls^ iterations in ^char(runSeconds,6,3)^ seconds -&amp;gt; ^workCalls/runSeconds^ ips"
		)
	);
	t &amp;lt;&amp;lt; updatewindow; // this works without the wait	
);

totalCats = 0;
dowork = Function( {},
	x = "";
	For( i = 1, i &amp;lt;= 1000, i += 1, x = x || "." );
	totalCats += 1000;
	cats &amp;lt;&amp;lt; settext( Eval Insert( "total concatenations=^totalCats^" ) );
);

While( runSeconds &amp;lt; limitSeconds &amp;amp; !cancel, // change this to represent the work you are doing
	
	// do some work, simulated by concatenating strings...
	dowork();
	
	// update the progressbar
	workCalls += 1;
	nowMicroSeconds = HP Time();
	// how often does it need to update on the screen?
	If( (nowMicroSeconds - recentUpdateMicroSeconds) / 1e6 &amp;gt; progressUpdatesSeconds, 
		// in this example I'm using a fixed time duration of "limitSeconds" to represent the
		// amount of work to be done. And "runSeconds" to represent the amount of work done so far.
		// Usually you'll have something other than time: number of rows in a table perhaps, or
		// number of categories to make reports for. As long as you know how many total and how
		// many completed, you can compute this fraction...
		updateProgress( runSeconds / limitSeconds );  // change this to represent the fraction of work finished
		recentUpdateMicroSeconds = nowMicroSeconds;
		Wait( 0 ); // this wait is needed to let the cancel button work
	);
	runSeconds = (nowMicroSeconds - startMicroSeconds) / 1e6;
);

If( cancel, // test the cancel flag
	Beep(); // audio flag
	left &amp;lt;&amp;lt; color( "dark red" ); // visual flag something is awry
	right &amp;lt;&amp;lt; color( "red" );
, //
	updateProgress( 1.0 ); // people like to see the bar go to 100%
);
cancelButton &amp;lt;&amp;lt; setbuttonname( "Close" ); // visual flag the button function is changed
cancelButton &amp;lt;&amp;lt; setscript( (cancelButton &amp;lt;&amp;lt; closewindow) ); // and what to do if the button is pressed&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;JSL to generate plots&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Names Default To Here( 1 );

dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );

List1 = {"NPN1", "PNP1", "PNP2", "NPN2", "PNP3", "IVP1"};
List2 = {"PNP4", "NPN3", "IVP2", "NPN4", "SIT1"};
List3 = {"INM1", "INM2", "VPM1", "VPM2", "VPM3"};
List4 = {"SNM1", "SPM1", "NPN5", "EP2", "ZD6"};

var expr1 = Expr( Variables() );
For( c = 1, c &amp;lt;= N Items( List1 ), c++,
	x expr1 = Expr(
		X( Position( 1 ), Combine( "Parallel Merged" ) )
	);
	Insert Into( x expr1, List1[c], 1 );
	Insert Into( var expr1, Name Expr( x expr1 ) );
);

var expr2 = Expr( Variables() );
For( c = 1, c &amp;lt;= N Items( List2 ), c++,
	x expr2 = Expr(
		X( Position( 1 ), Combine( "Parallel Merged" ) )
	);
	Insert Into( x expr2, List2[c], 1 );
	Insert Into( var expr2, Name Expr( x expr2 ) );
);

var expr3 = Expr( Variables() );
For( c = 1, c &amp;lt;= N Items( List3 ), c++,
	x expr3 = Expr(
		X( Position( 1 ), Combine( "Parallel Merged" ) )
	);
	Insert Into( x expr3, List3[c], 1 );
	Insert Into( var expr3, Name Expr( x expr3 ) );
);

var expr4 = Expr( Variables() );
For( c = 1, c &amp;lt;= N Items( List4 ), c++,
	x expr4 = Expr(
		X( Position( 1 ), Combine( "Parallel Merged" ) )
	);
	Insert Into( x expr4, List4[c], 1 );
	Insert Into( var expr4, Name Expr( x expr4 ) );
);


lists = {"List1", "List2", "List3", "List4"};
var = {};
gbv = {};

For( i = 1, i &amp;lt;= 4, i++,
	Insert Into( var, Name Expr( Eval( Parse( "var expr" || Char( i ) ) ) ) );
	Insert Into( gbv, Parse( "vvv" || Char( i ) ) );
);

nw = New Window( "Plots",
	Show Menu( 0 ),
	show toolbars( 0 ),
	H List Box(

		Check Box(
			{"Summary"}, 
						
			&amp;lt;&amp;lt;Set Function(
				Function( {self}, 
							
					sel = self &amp;lt;&amp;lt; get selected();
					If( N Items( sel ) &amp;gt; 0,
						For( i = 1, i &amp;lt;= N Items( lists ), i++,
							If( N Items( Eval( Parse( lists[i] ) ) ) &amp;gt; 0,
								nw[lists[i], Outline Box( 1 )] &amp;lt;&amp;lt; append(
										 
					
									V Scroll Box(
										size( 580 ),
										Border Box( Left( 5 ), Right( 5 ), Top( 5 ), Bottom( 5 ), Sides( 15 ),
											Tabulate(
												Show Control Panel( 0 ),
												Set Format( Uniform Format( 10, 2 ) ),
												Add Table(
													Column Table( Statistics( Mean, Std Dev ) ),
													Row Table(
														Analysis Columns(
															Eval( Parse( lists[i] ) )
								
														)
													)
												), 
						
						
						
												SendToReport(
													Dispatch( {}, "Tabulate", OutlineBox, {Set Title( "Summary Stats" )} )
	
					
												)
											)
										)
									)
											
											
										
										
									
								) &amp;lt;&amp;lt; Visibility( "Visible" );
			
							)
						);
								
					,
					/// Xpath syntax

	nw &amp;lt;&amp;lt; XPath( "//Outlinebox[@helpKey = 'Summary Stats']" ) &amp;lt;&amp;lt; delete;
							
								
								
								
								
					);
				);
						
			)
	
	
	
		),
		V List Box( tb = Tab Box() )
	)
);

For( i = 1, i &amp;lt;= N Items( lists ), i++,
	tb &amp;lt;&amp;lt; Add(
		lists[i],
		V List Box(
			H List Box(
				Eval(
					Eval Expr(
						gb = dt &amp;lt;&amp;lt; Graph Builder(
							Size( 1117, 781 ),
							Show Control Panel( 0 ), 
						
							Expr( Name Expr( var[i] ) ),
							Elements(
								Histogram(
									X( 1 ),
									X( 2 ),
									X( 3 ),
									X( 4 ),
									X( 5 ),
									X( 6 ),
									X( 7 ),
									X( 8 ),
									X( 9 ),
									X( 10 ),
									X( 11 ),
									X( 12 ),
									X( 13 ),
									X( 14 ),
									X( 15 ),
									X( 16 ), 
									
									Legend( 2 ), 
							
								),
								Box Plot(
									X( 1 ),
									X( 2 ),
									X( 3 ),
									X( 4 ),
									X( 5 ),
									X( 6 ),
									X( 7 ),
									X( 8 ),
									X( 9 ),
									X( 10 ),
									X( 11 ),
									X( 12 ),
									X( 13 ),
									X( 14 ),
									X( 15 ),
									X( 16 ), 
									
									Legend( 3 ),
									Outliers( 0 )
								)
							)
						)
					)
				),
				sumsta = Outline Box( 
					
					lists[i],
					&amp;lt;&amp;lt;visibility( "Collapse" )
						
						
				)
					
				
			)
		)
	);

				
	
	
	
);&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 27 Dec 2023 15:38:07 GMT</pubDate>
    <dc:creator>Jackie_</dc:creator>
    <dc:date>2023-12-27T15:38:07Z</dc:date>
    <item>
      <title>Adding Progress bar in the script</title>
      <link>https://community.jmp.com/t5/Discussions/Adding-Progress-bar-in-the-script/m-p/712612#M89596</link>
      <description>&lt;P&gt;Hello ,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a data table with a million rows and am trying to add a progress bar window in the script. I found this threat (&lt;A href="https://community.jmp.com/t5/Uncharted/Progress-Bar-with-Cancel-Button/ba-p/433560" target="_self"&gt;Progress bar)&lt;/A&gt; from Craige useful. I am new to this, so I am still trying to understand where to add the code to indicate the progress. Any suggestions?&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Code for a Progress bar from&amp;nbsp;&lt;a href="https://community.jmp.com/t5/user/viewprofilepage/user-id/982"&gt;@Craige_Hales&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;progressBarWidth = 500;
progressUpdatesSeconds = 1 / 4; // 1/2 sec updates -&amp;gt; 1300ips,  1/30 -&amp;gt; 1000ips (1/4 compromise speed vs appearance)
cancel = 0; // clear the cancel flag
New Window( "Progressbar demo", //
	Show Menu( 0 ),
	show toolbars( 0 ),
	V List Box( //
		cats = Text Box( "" ), // output from the work function
		t = Text Box( "", &amp;lt;&amp;lt;setwrap( 500 ) ), // status of the progressbar
		H List Box( // Duct tape has a light side and a dark side. So does the progressbar.
			left = Spacer Box( size( 0, 10 ), color( "light green" ) ), //
			right = Spacer Box( size( progressBarWidth, 10 ), color( "dark green" ) ), //
			&amp;lt;&amp;lt;padding( 5, 5, 5, 5 ), // gray wrapper
			&amp;lt;&amp;lt;backgroundcolor( "dark gray" ) //
		), //
		cancelButton = Button Box( "Cancel", cancel = 1 ) // sets the cancel flag
	)
);
Wait( 0 ); // allow the window to open, otherwise the updates are not visible

// progressbar variables
startMicroSeconds = HP Time();
workCalls = 0;
recentUpdateMicroSeconds = HP Time();
runSeconds = (recentUpdateMicroSeconds - startMicroSeconds) / 1e6; // so the loop can start
limitSeconds = 10; // time to run the demo

updateProgress = Function( {fractionComplete},
	leftsize = Round( progressBarWidth * fractionComplete );
	rightsize = progressBarWidth - leftsize;
	left &amp;lt;&amp;lt; width( leftsize );
	right &amp;lt;&amp;lt; width( rightsize );
	t &amp;lt;&amp;lt; settext(
		Eval Insert(
			"^workCalls^ iterations in ^char(runSeconds,6,3)^ seconds -&amp;gt; ^workCalls/runSeconds^ ips"
		)
	);
	t &amp;lt;&amp;lt; updatewindow; // this works without the wait	
);

totalCats = 0;
dowork = Function( {},
	x = "";
	For( i = 1, i &amp;lt;= 1000, i += 1, x = x || "." );
	totalCats += 1000;
	cats &amp;lt;&amp;lt; settext( Eval Insert( "total concatenations=^totalCats^" ) );
);

While( runSeconds &amp;lt; limitSeconds &amp;amp; !cancel, // change this to represent the work you are doing
	
	// do some work, simulated by concatenating strings...
	dowork();
	
	// update the progressbar
	workCalls += 1;
	nowMicroSeconds = HP Time();
	// how often does it need to update on the screen?
	If( (nowMicroSeconds - recentUpdateMicroSeconds) / 1e6 &amp;gt; progressUpdatesSeconds, 
		// in this example I'm using a fixed time duration of "limitSeconds" to represent the
		// amount of work to be done. And "runSeconds" to represent the amount of work done so far.
		// Usually you'll have something other than time: number of rows in a table perhaps, or
		// number of categories to make reports for. As long as you know how many total and how
		// many completed, you can compute this fraction...
		updateProgress( runSeconds / limitSeconds );  // change this to represent the fraction of work finished
		recentUpdateMicroSeconds = nowMicroSeconds;
		Wait( 0 ); // this wait is needed to let the cancel button work
	);
	runSeconds = (nowMicroSeconds - startMicroSeconds) / 1e6;
);

If( cancel, // test the cancel flag
	Beep(); // audio flag
	left &amp;lt;&amp;lt; color( "dark red" ); // visual flag something is awry
	right &amp;lt;&amp;lt; color( "red" );
, //
	updateProgress( 1.0 ); // people like to see the bar go to 100%
);
cancelButton &amp;lt;&amp;lt; setbuttonname( "Close" ); // visual flag the button function is changed
cancelButton &amp;lt;&amp;lt; setscript( (cancelButton &amp;lt;&amp;lt; closewindow) ); // and what to do if the button is pressed&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;JSL to generate plots&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Names Default To Here( 1 );

dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );

List1 = {"NPN1", "PNP1", "PNP2", "NPN2", "PNP3", "IVP1"};
List2 = {"PNP4", "NPN3", "IVP2", "NPN4", "SIT1"};
List3 = {"INM1", "INM2", "VPM1", "VPM2", "VPM3"};
List4 = {"SNM1", "SPM1", "NPN5", "EP2", "ZD6"};

var expr1 = Expr( Variables() );
For( c = 1, c &amp;lt;= N Items( List1 ), c++,
	x expr1 = Expr(
		X( Position( 1 ), Combine( "Parallel Merged" ) )
	);
	Insert Into( x expr1, List1[c], 1 );
	Insert Into( var expr1, Name Expr( x expr1 ) );
);

var expr2 = Expr( Variables() );
For( c = 1, c &amp;lt;= N Items( List2 ), c++,
	x expr2 = Expr(
		X( Position( 1 ), Combine( "Parallel Merged" ) )
	);
	Insert Into( x expr2, List2[c], 1 );
	Insert Into( var expr2, Name Expr( x expr2 ) );
);

var expr3 = Expr( Variables() );
For( c = 1, c &amp;lt;= N Items( List3 ), c++,
	x expr3 = Expr(
		X( Position( 1 ), Combine( "Parallel Merged" ) )
	);
	Insert Into( x expr3, List3[c], 1 );
	Insert Into( var expr3, Name Expr( x expr3 ) );
);

var expr4 = Expr( Variables() );
For( c = 1, c &amp;lt;= N Items( List4 ), c++,
	x expr4 = Expr(
		X( Position( 1 ), Combine( "Parallel Merged" ) )
	);
	Insert Into( x expr4, List4[c], 1 );
	Insert Into( var expr4, Name Expr( x expr4 ) );
);


lists = {"List1", "List2", "List3", "List4"};
var = {};
gbv = {};

For( i = 1, i &amp;lt;= 4, i++,
	Insert Into( var, Name Expr( Eval( Parse( "var expr" || Char( i ) ) ) ) );
	Insert Into( gbv, Parse( "vvv" || Char( i ) ) );
);

nw = New Window( "Plots",
	Show Menu( 0 ),
	show toolbars( 0 ),
	H List Box(

		Check Box(
			{"Summary"}, 
						
			&amp;lt;&amp;lt;Set Function(
				Function( {self}, 
							
					sel = self &amp;lt;&amp;lt; get selected();
					If( N Items( sel ) &amp;gt; 0,
						For( i = 1, i &amp;lt;= N Items( lists ), i++,
							If( N Items( Eval( Parse( lists[i] ) ) ) &amp;gt; 0,
								nw[lists[i], Outline Box( 1 )] &amp;lt;&amp;lt; append(
										 
					
									V Scroll Box(
										size( 580 ),
										Border Box( Left( 5 ), Right( 5 ), Top( 5 ), Bottom( 5 ), Sides( 15 ),
											Tabulate(
												Show Control Panel( 0 ),
												Set Format( Uniform Format( 10, 2 ) ),
												Add Table(
													Column Table( Statistics( Mean, Std Dev ) ),
													Row Table(
														Analysis Columns(
															Eval( Parse( lists[i] ) )
								
														)
													)
												), 
						
						
						
												SendToReport(
													Dispatch( {}, "Tabulate", OutlineBox, {Set Title( "Summary Stats" )} )
	
					
												)
											)
										)
									)
											
											
										
										
									
								) &amp;lt;&amp;lt; Visibility( "Visible" );
			
							)
						);
								
					,
					/// Xpath syntax

	nw &amp;lt;&amp;lt; XPath( "//Outlinebox[@helpKey = 'Summary Stats']" ) &amp;lt;&amp;lt; delete;
							
								
								
								
								
					);
				);
						
			)
	
	
	
		),
		V List Box( tb = Tab Box() )
	)
);

For( i = 1, i &amp;lt;= N Items( lists ), i++,
	tb &amp;lt;&amp;lt; Add(
		lists[i],
		V List Box(
			H List Box(
				Eval(
					Eval Expr(
						gb = dt &amp;lt;&amp;lt; Graph Builder(
							Size( 1117, 781 ),
							Show Control Panel( 0 ), 
						
							Expr( Name Expr( var[i] ) ),
							Elements(
								Histogram(
									X( 1 ),
									X( 2 ),
									X( 3 ),
									X( 4 ),
									X( 5 ),
									X( 6 ),
									X( 7 ),
									X( 8 ),
									X( 9 ),
									X( 10 ),
									X( 11 ),
									X( 12 ),
									X( 13 ),
									X( 14 ),
									X( 15 ),
									X( 16 ), 
									
									Legend( 2 ), 
							
								),
								Box Plot(
									X( 1 ),
									X( 2 ),
									X( 3 ),
									X( 4 ),
									X( 5 ),
									X( 6 ),
									X( 7 ),
									X( 8 ),
									X( 9 ),
									X( 10 ),
									X( 11 ),
									X( 12 ),
									X( 13 ),
									X( 14 ),
									X( 15 ),
									X( 16 ), 
									
									Legend( 3 ),
									Outliers( 0 )
								)
							)
						)
					)
				),
				sumsta = Outline Box( 
					
					lists[i],
					&amp;lt;&amp;lt;visibility( "Collapse" )
						
						
				)
					
				
			)
		)
	);

				
	
	
	
);&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 27 Dec 2023 15:38:07 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Adding-Progress-bar-in-the-script/m-p/712612#M89596</guid>
      <dc:creator>Jackie_</dc:creator>
      <dc:date>2023-12-27T15:38:07Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Progress bar in the script</title>
      <link>https://community.jmp.com/t5/Discussions/Adding-Progress-bar-in-the-script/m-p/712631#M89597</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.jmp.com/t5/user/viewprofilepage/user-id/17878"&gt;@Jackie_&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; A typical place to put something like a progress bar update would be at the start (or end) of an iterative loop, like a For() loop or a While() loop. So that at the start of each iteration, the progress window is updated to reflect the changes. You can find a solution with some description and discussion &lt;A href="https://community.jmp.com/t5/Discussions/Suggestion-on-how-to-script-a-small-update-progress-window-for/m-p/250419" target="_self"&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hope this helps!,&lt;/P&gt;&lt;P&gt;DS&lt;/P&gt;</description>
      <pubDate>Wed, 27 Dec 2023 15:48:45 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Adding-Progress-bar-in-the-script/m-p/712631#M89597</guid>
      <dc:creator>SDF1</dc:creator>
      <dc:date>2023-12-27T15:48:45Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Progress bar in the script</title>
      <link>https://community.jmp.com/t5/Discussions/Adding-Progress-bar-in-the-script/m-p/712636#M89598</link>
      <description>&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Wed, 27 Dec 2023 16:00:50 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Adding-Progress-bar-in-the-script/m-p/712636#M89598</guid>
      <dc:creator>Jackie_</dc:creator>
      <dc:date>2023-12-27T16:00:50Z</dc:date>
    </item>
  </channel>
</rss>

