#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)(<\s*[^>]*)(href=|src=)(.?)(\/[^\/])"
Local $sString = "<div id="blog"><div id="content">" & @CRLF & _
                "  <div id="content">" & @CRLF & _
                "" & @CRLF & _
                "    <div class="Article" data-slug="/blog/execution-traces-2024">" & @CRLF & _
                "    " & @CRLF & _
                "    <h1 class="small"><a href="//go.dev/blog/">The Go Blog</a></h1>" & @CRLF & _
                "    " & @CRLF & _
                "" & @CRLF & _
                "    <h1>More powerful Go execution traces</h1>" & @CRLF & _
                "      " & @CRLF & _
                "      <p class="author">" & @CRLF & _
                "      Michael Knyszek<br>" & @CRLF & _
                "      14 March 2024" & @CRLF & _
                "      </p>" & @CRLF & _
                "      " & @CRLF & _
                "      <p>The <a href="/pkg/runtime/trace">runtime/trace</a> package contains a powerful tool for understanding and" & @CRLF & _
                "troubleshooting Go programs." & @CRLF & _
                "The functionality within allows one to produce a trace of each goroutine’s execution over some" & @CRLF & _
                "time period." & @CRLF & _
                "With the <a href="/pkg/cmd/trace"><code>go tool trace</code> command</a> (or the excellent open source" & @CRLF & _
                "<a href="https://gotraceui.dev/" rel="noreferrer" target="_blank">gotraceui tool</a>), one may then visualize and explore the data within these" & @CRLF & _
                "traces.</p>" & @CRLF & _
                "<p>The magic of a trace is that it can easily reveal things about a program that are hard to see in" & @CRLF & _
                "other ways." & @CRLF & _
                "For example, a concurrency bottleneck where lots of goroutines block on the same channel might be" & @CRLF & _
                "quite difficult to see in a CPU profile, because there’s no execution to sample." & @CRLF & _
                "But in an execution trace, the <em>lack</em> of execution will show up with amazing clarity, and the stack" & @CRLF & _
                "traces of blocked goroutines will quickly point at the culprit.</p>" & @CRLF & _
                "<div class="image">" & @CRLF & _
                "  <img src="execution-traces-2024/gotooltrace.png" alt="">" & @CRLF & _
                "</div>" & @CRLF & _
                "<p>Go developers are even able to instrument their own programs with <a href="//go.dev/pkg/runtime/trace#Task">tasks</a>," & @CRLF & _
                "<a href="//go.dev/pkg/runtime/trace#WithRegion">regions</a>, and <a href="//go.dev/pkg/runtime/trace#Log">logs</a> that" & @CRLF & _
                "they can use to correlate their higher-level concerns with lower-level execution details.</p>" & @CRLF & _
                "<h2 id="issues">Issues</h2>" & @CRLF & _
                "<p>Unfortunately, the wealth of information in execution traces can often be out of reach." & @CRLF & _
                "Four big issues with traces have historically gotten in the way.</p>" & @CRLF & _
                "<ul>" & @CRLF & _
                "<li>Traces had high overheads.</li>" & @CRLF & _
                "<li>Traces didn’t scale well, and could become too big to analyze.</li>" & @CRLF & _
                "<li>It was often unclear when to start tracing to capture a specific bad behavior.</li>" & @CRLF & _
                "<li>Only the most adventurous gophers could programmatically analyze traces, given the lack of a" & @CRLF & _
                "public package for parsing and interpreting execution traces.</li>" & @CRLF & _
                "</ul>" & @CRLF & _
                "<p>If you’ve used traces in the last few years, you’ve likely been frustrated by one or more of these" & @CRLF & _
                "problems." & @CRLF & _
                "But we’re excited to share that over the last two Go releases we’ve made big progress in all four" & @CRLF & _
                "of these areas.</p>" & @CRLF & _
                "<h2 id="low-overhead-tracing">Low-overhead tracing</h2>" & @CRLF & _
                "<p>Prior to Go 1.21, the run-time overhead of tracing was somewhere between 10–20% CPU for many" & @CRLF & _
                "applications, which limits tracing to situational usage, rather than continuous usage like CPU" & @CRLF & _
                "profiling." & @CRLF & _
                "It turned out that much of the cost of tracing came down to tracebacks." & @CRLF & _
                "Many events produced by the runtime have stack traces attached, which are invaluable to actually" & @CRLF & _
                "identifying what goroutines were doing at key moments in their execution.</p>" & @CRLF & _
                "<p>Thanks to work by Felix Geisendörfer and Nick Ripley on optimizing the efficiency of tracebacks," & @CRLF & _
                "the run-time CPU overhead of execution traces has been cut dramatically, down to 1–2% for many" & @CRLF & _
                "applications." & @CRLF & _
                "You can read more about the work done here in <a href="https://blog.felixge.de/reducing-gos-execution-tracer-overhead-with-frame-pointer-unwinding/" rel="noreferrer" target="_blank">Felix’s great blog" & @CRLF & _
                "post</a>" & @CRLF & _
                "on the topic.</p>" & @CRLF & _
                "<h2 id="scalable-traces">Scalable traces</h2>" & @CRLF & _
                "<p>The trace format and its events were designed around relatively efficient emission, but required" & @CRLF & _
                "tooling to parse and keep around the state of the entirety of a trace." & @CRLF & _
                "A few hundred MiB trace could require several GiB of RAM to analyze!</p>" & @CRLF & _
                "<p>This issue is unfortunately fundamental to how traces are generated." & @CRLF & _
                "To keep run-time overheads low, all events are written to the equivalent of thread-local buffers." & @CRLF & _
                "But this means events appear out of their true order, and the burden is placed on the trace" & @CRLF & _
                "tooling to figure out what really happened.</p>" & @CRLF & _
                "<p>The key insight to making traces scale while keeping overheads low was to occasionally split the" & @CRLF & _
                "trace being generated." & @CRLF & _
                "Each split point would behave a bit like simultaneously disabling and reenabling tracing in one" & @CRLF & _
                "go." & @CRLF & _
                "All the trace data so far would represent a complete and self-contained trace, while the new trace" & @CRLF & _
                "data would seamlessly pick up from where it left off.</p>" & @CRLF & _
                "<p>As you might imagine, fixing this required <a href="//go.dev/issue/60773">rethinking and rewriting a lot of the foundation of" & @CRLF & _
                "the trace implementation</a> in the runtime." & @CRLF & _
                "We’re happy to say that the work landed in Go 1.22 and is now generally available." & @CRLF & _
                "<a href="//go.dev/doc/go1.22#runtime/trace">A lot of nice improvements</a> came with the rewrite, including some" & @CRLF & _
                "improvements to the <a href="//go.dev/doc/go1.22#trace"><code>go tool trace</code> command</a> as well." & @CRLF & _
                "The gritty details are all in the <a href="https://github.com/golang/proposal/blob/master/design/60773-execution-tracer-overhaul.md" rel="noreferrer" target="_blank">design" & @CRLF & _
                "document</a>," & @CRLF & _
                "if you’re curious.</p>" & @CRLF & _
                "<p>(Note: <code>go tool trace</code> still loads the full trace into memory, but <a href="//go.dev/issue/65315">removing this" & @CRLF & _
                "limitation</a> for traces produced by Go 1.22+ programs is now feasible.)</p>" & @CRLF & _
                "<h2 id="flight-recording">Flight recording</h2>" & @CRLF & _
                "<p>Suppose you work on a web service and an RPC took a very long time." & @CRLF & _
                "You couldn’t start tracing at the point you knew the RPC was already taking a while, because the" & @CRLF & _
                "root cause of the slow request already happened and wasn’t recorded.</p>" & @CRLF & _
                "<p>There’s a technique that can help with this called flight recording, which you may already be" & @CRLF & _
                "familiar with from other programming environments." & @CRLF & _
                "The insight with flight recording is to have tracing on continuously and always keep the most" & @CRLF & _
                "recent trace data around, just in case." & @CRLF & _
                "Then, once something interesting happens, the program can just write out whatever it has!</p>" & @CRLF & _
                "<p>Before traces could be split, this was pretty much a non-starter." & @CRLF & _
                "But because continuous tracing is now viable thanks to low overheads, and the fact that the runtime" & @CRLF & _
                "can now split traces any time it needs, it turns out it was straightforward to implement flight" & @CRLF & _
                "recording.</p>" & @CRLF & _
                "<p>As a result, we’re happy to announce a flight recorder experiment, available in the" & @CRLF & _
                "<a href="//go.dev/pkg/golang.org/x/exp/trace#FlightRecorder">golang.org/x/exp/trace package</a>.</p>" & @CRLF & _
                "<p>Please try it out!" & @CRLF & _
                "Below is an example that sets up flight recording to capture a long HTTP request to get you started.</p>" & @CRLF & _
                "<div class="code">" & @CRLF & _
                "<pre>    <span class="comment">// Set up the flight recorder.</span>" & @CRLF & _
                "    fr := trace.NewFlightRecorder()" & @CRLF & _
                "    fr.Start()" & @CRLF & _
                "" & @CRLF & _
                "    <span class="comment">// Set up and run an HTTP server.</span>" & @CRLF & _
                "    var once sync.Once" & @CRLF & _
                "    http.HandleFunc("/my-endpoint", func(w http.ResponseWriter, r *http.Request) {" & @CRLF & _
                "        start := time.Now()" & @CRLF & _
                "" & @CRLF & _
                "        <span class="comment">// Do the work...</span>" & @CRLF & _
                "        doWork(w, r)" & @CRLF & _
                "" & @CRLF & _
                "        <span class="comment">// We saw a long request. Take a snapshot!</span>" & @CRLF & _
                "        if time.Since(start) > 300*time.Millisecond {" & @CRLF & _
                "            <span class="comment">// Do it only once for simplicity, but you can take more than one.</span>" & @CRLF & _
                "            once.Do(func() {" & @CRLF & _
                "                <span class="comment">// Grab the snapshot.</span>" & @CRLF & _
                "                var b bytes.Buffer" & @CRLF & _
                "                _, err = fr.WriteTo(&b)" & @CRLF & _
                "                if err != nil {" & @CRLF & _
                "                    log.Print(err)" & @CRLF & _
                "                    return" & @CRLF & _
                "                }" & @CRLF & _
                "                <span class="comment">// Write it to a file.</span>" & @CRLF & _
                "                if err := os.WriteFile("trace.out", b.Bytes(), 0o755); err != nil {" & @CRLF & _
                "                    log.Print(err)" & @CRLF & _
                "                    return" & @CRLF & _
                "                }" & @CRLF & _
                "            })" & @CRLF & _
                "        }" & @CRLF & _
                "    })" & @CRLF & _
                "    log.Fatal(http.ListenAndServe(":8080", nil))" & @CRLF & _
                "</pre>" & @CRLF & _
                "</div>" & @CRLF & _
                "<p>If you have any feedback, positive or negative, please share it to the <a href="//go.dev/issue/63185">proposal" & @CRLF & _
                "issue</a>!</p>" & @CRLF & _
                "<h2 id="trace-reader-api">Trace reader API</h2>" & @CRLF & _
                "<p>Along with the trace implementation rewrite came an effort to clean up the other trace internals," & @CRLF & _
                "like <code>go tool trace</code>." & @CRLF & _
                "This spawned an attempt to create a trace reader API that was good enough to share and that could" & @CRLF & _
                "make traces more accessible.</p>" & @CRLF & _
                "<p>Just like the flight recorder, we’re happy to announce that we also have an experimental trace reader" & @CRLF & _
                "API that we’d like to share." & @CRLF & _
                "It’s available in the <a href="//go.dev/pkg/golang.org/x/exp/trace#Reader">same package as the flight recorder," & @CRLF & _
                "golang.org/x/exp/trace</a>.</p>" & @CRLF & _
                "<p>We think it’s good enough to start building things on top of, so please try it out!" & @CRLF & _
                "Below is an example that measures the proportion of goroutine block events that blocked to wait on" & @CRLF & _
                "the network.</p>" & @CRLF & _
                "<div class="code">" & @CRLF & _
                "<pre>    <span class="comment">// Start reading from STDIN.</span>" & @CRLF & _
                "    r, err := trace.NewReader(os.Stdin)" & @CRLF & _
                "    if err != nil {" & @CRLF & _
                "        log.Fatal(err)" & @CRLF & _
                "    }" & @CRLF & _
                "" & @CRLF & _
                "    var blocked int" & @CRLF & _
                "    var blockedOnNetwork int" & @CRLF & _
                "    for {" & @CRLF & _
                "        <span class="comment">// Read the event.</span>" & @CRLF & _
                "        ev, err := r.ReadEvent()" & @CRLF & _
                "        if err == io.EOF {" & @CRLF & _
                "            break" & @CRLF & _
                "        } else if err != nil {" & @CRLF & _
                "            log.Fatal(err)" & @CRLF & _
                "        }" & @CRLF & _
                "" & @CRLF & _
                "        <span class="comment">// Process it.</span>" & @CRLF & _
                "        if ev.Kind() == trace.EventStateTransition {" & @CRLF & _
                "            st := ev.StateTransition()" & @CRLF & _
                "            if st.Resource.Kind == trace.ResourceGoroutine {" & @CRLF & _
                "                from, to := st.Goroutine()" & @CRLF & _
                "" & @CRLF & _
                "                <span class="comment">// Look for goroutines blocking, and count them.</span>" & @CRLF & _
                "                if from.Executing() && to == trace.GoWaiting {" & @CRLF & _
                "                    blocked++" & @CRLF & _
                "                    if strings.Contains(st.Reason, "network") {" & @CRLF & _
                "                        blockedOnNetwork++" & @CRLF & _
                "                    }" & @CRLF & _
                "                }" & @CRLF & _
                "            }" & @CRLF & _
                "        }" & @CRLF & _
                "    }" & @CRLF & _
                "    <span class="comment">// Print what we found.</span>" & @CRLF & _
                "    p := 100 * float64(blockedOnNetwork) / float64(blocked)" & @CRLF & _
                "    fmt.Printf("%2.3f%% instances of goroutines blocking were to block on the network\n", p)" & @CRLF & _
                "</pre>" & @CRLF & _
                "</div>" & @CRLF & _
                "<p>And just like the flight recorder, there’s a <a href="//go.dev/issue/62627">proposal issue</a> that would" & @CRLF & _
                "be a great place to leave feedback!</p>" & @CRLF & _
                "<p>We’d like to quickly call out Dominik Honnef as someone who tried it out early, provided great" & @CRLF & _
                "feedback, and has contributed support for older trace versions to the API.</p>" & @CRLF & _
                "<h2 id="thank-you">Thank you!</h2>" & @CRLF & _
                "<p>This work was completed, in no small part, thanks to the help of the those in the <a href="//go.dev/issue/57175">diagnostics" & @CRLF & _
                "working group</a>, started over a year ago as a collaboration between stakeholders from" & @CRLF & _
                "across the Go community, and open to the public.</p>" & @CRLF & _
                "<p>We’d like to take a moment to thank those community members who have attended the diagnostic" & @CRLF & _
                "meetings regularly over the last year: Felix Geisendörfer, Nick Ripley, Rhys Hiltner, Dominik" & @CRLF & _
                "Honnef, Bryan Boreham, thepudds.</p>" & @CRLF & _
                "<p>The discussions, feedback, and work you all put in have been instrumental to getting us to where we" & @CRLF & _
                "are today." & @CRLF & _
                "Thank you!</p>" & @CRLF & _
                "" & @CRLF & _
                "    </div>" & @CRLF & _
                "" & @CRLF & _
                "    " & @CRLF & _
                "    <div class="Article prevnext">" & @CRLF & _
                "    " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "        <p>" & @CRLF & _
                "        " & @CRLF & _
                "        " & @CRLF & _
                "          " & @CRLF & _
                "            <b>Previous article: </b><a href="//go.dev/blog/generic-slice-functions">Robust generic functions on slices</a><br>" & @CRLF & _
                "          " & @CRLF & _
                "        " & @CRLF & _
                "        <b><a href="//go.dev/blog/all">Blog Index</a></b>" & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "      " & @CRLF & _
                "    " & @CRLF & _
                "    </div>" & @CRLF & _
                "    " & @CRLF & _
                "" & @CRLF & _
                "  </div>" & @CRLF & _
                "</div>" & @CRLF & _
                "" & @CRLF & _
                "<script src="/js/jquery.js"></script>" & @CRLF & _
                "<script src="/js/playground.js"></script>" & @CRLF & _
                "<script src="/js/play.js"></script>" & @CRLF & _
                "<script src="/js/godocs.js"></script>"
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
    _ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm