2025
FC Porto vs Dinamo Zagreb: A Cup Final for the Ages
FC Porto 2-2 Dinamo Zagreb (Porto win 5-4 on penalties) Estadio Azteca, Mexico City - Attendance: 86,135
In a captivating final that lived up to its billing, FC Porto claimed their third Top 100 Shield in dramatic fashion, overcoming a resilient Dinamo Zagreb side on penalties after a thrilling 2-2 draw at the iconic Estadio Azteca.
A Tale of Two Trajectories
This final represented a fascinating clash of contrasting footballing journeys. Porto, the established Division 1 powerhouse, arrived as heavy favorites having built a reputation as perennial top-four finishers and cup specialists over recent seasons. Their experience in high-pressure situations and superior squad depth made them the bookmakers’ choice.
Dinamo Zagreb, however, embodied the romance of cup football. The Croatian side’s meteoric rise from Division 5 to Division 2 promotion contenders has been one of the tournament’s most compelling storylines. Under the astute management of ⍟Greg Bilboaツ, they had already defied expectations by reaching their first major final, dispatching several higher-ranked opponents along the way.
First Half Drama
The match exploded into life early, with both teams showcasing the attacking intent that had carried them through the knockout rounds. Porto’s class showed immediately when Julián Álvarez, their designated penalty taker and focal point, fired them ahead in the 9th minute after some excellent build-up play involving Rafael Leão.
Zagreb’s response was swift and emphatic. Just nine minutes later, Luka Jović demonstrated why he’s been their key performer in this remarkable cup run, equalizing with a clinical finish that silenced the Porto faithful and announced Zagreb’s intention to compete on equal terms.
The Portuguese giants regained their advantage through Leão’s 22nd-minute strike, but the first half perfectly encapsulated the evening’s narrative - Porto’s superior individual quality being matched by Zagreb’s collective determination and tactical discipline.
Zagreb’s Brave Second Half
The second period belonged to the underdogs. Zagreb, showing no signs of being overawed by the occasion or their opponents’ pedigree, grew into the game. Their equalizer arrived through Riccardo Orsolini in the 57th minute, a goal that sent their traveling support into raptures and demonstrated their refusal to be intimidated by Porto’s Division 1 status.
What followed was a testament to Zagreb’s character. Rather than sitting back and hoping to reach penalties, they continued to press forward, creating several chances that could have won the tie in regular time. Amine Gouiri and Ché Adams both came close to completing what would have been a stunning upset.
Penalty Drama Decides the Destiny
As the match headed to penalties, the contrasting experiences became evident. Porto’s players had been here before - cup finals, high-pressure situations, and penalty shootouts were familiar territory. Zagreb, for all their admirable spirit, were in uncharted waters.
The shootout was a microcosm of the entire match. Porto’s penalties were taken with the confidence of players accustomed to such moments - Álvarez, Saka, Brandt, Garro, and Rodri all finding the net with varying degrees of comfort. Zagreb matched them blow for blow until the crucial moment when Mauro Arambarri’s effort was saved, handing Porto their third Shield triumph.
Post-Match Perspective
Porto manager André Guerra was magnanimous in victory, acknowledging Zagreb’s exceptional performance: “You gave us a hell of a fight mate! Amazing run from Zagreb.” His tactical decision to substitute key players at the hour mark - a luxury afforded by his squad’s depth - ultimately proved crucial in maintaining freshness for the penalty shootout while also preserving players for upcoming league commitments.
For Zagreb boss ⍟Greg Bilboaツ, the disappointment was palpable but tempered by pride: the defeat on penalties couldn’t diminish an extraordinary tournament run that has announced their arrival as a force to be reckoned with.
The Bigger Picture
This final perfectly illustrated football’s unpredictable nature. While Porto’s victory maintained their status as cup specialists and added another trophy to their impressive collection, Zagreb’s performance served notice that their rapid ascent through the divisions is built on solid foundations.
Porto’s experience ultimately told, but Zagreb’s journey from Division 5 to a major cup final - culminating in a performance that pushed the favorites all the way to penalties - represents one of the most remarkable stories in recent tournament history. Their time will surely come.
Final Verdict: Porto 2-2 Dinamo Zagreb (Porto win 5-4 on penalties) A classic cup final that showcased both the value of experience and the power of ambition.
Underdogs Triumph: AC Milan Beat Dortmund in Cup Final
Cup Final Shock: Underdogs AC Milan Stun Favorites Dortmund to Claim Top 100 Cup Glory
Estadio Azteca witnessed one of the greatest upsets in Top 100 Cup history as relegation-battling AC Milan defeated heavy favorites Borussia Dortmund 2-1
In what can only be described as a David vs Goliath encounter, AC Milan produced the performance of their season to claim the Top 100 Cup in dramatic fashion, overcoming a Borussia Dortmund side that had been overwhelming favorites to lift the trophy.
Pre-season predictions had painted a stark picture — Dortmund’s star-studded squad, boasting the likes of Jude Bellingham (95 rating), Vinícius Júnior (96 rating), and Khvicha Kvaratskhelia (93 rating), were tipped to cruise to the Division 1 title. Meanwhile, Milan’s modest assembly of players had marked them out as prime relegation candidates, with their £160.4M squad value dwarfed by Dortmund’s £533.7M roster.
Yet football, as it so often does, delivered the most unlikely of narratives.
Early Drama Sets the Tone
The match exploded into life within the opening minute when Aleksandr Golovin, one of Milan’s few genuinely world-class operators, latched onto a pass from Gorka Guruzeta and fired past Gianluigi Donnarumma. For a team expected to fold under pressure, it was the perfect start.
Dortmund’s response was swift and predictable. With their attacking mentality and adventurous formation, they pushed forward in waves, and it took just five minutes for their quality to tell. Bellingham, justifying every penny of his £76M valuation, curled home a sublime free-kick to restore parity and seemingly put the natural order back in place.
Tactical Battle
What followed was a fascinating tactical chess match that perfectly encapsulated the gulf between the two sides’ resources and expectations. Milan manager Simon Thomas deployed an ultra-defensive setup — narrow width, very defensive mentality, and disciplined formation fluidity. It was the approach of a team that knew survival depended on keeping things tight.
Dortmund manager Dario Saviano, conversely, unleashed his galaxy of stars in an attacking formation with fast tempo and bold creativity. The statistics told the expected story — 57% possession to the Germans, 12 shots to Milan’s 9, with Camavinga and Barella pulling the strings in midfield.
Against All Odds
But Milan’s greatest weakness had been turned into their salvation. With nothing to lose and everything to gain, they played with the freedom that only comes from rock-bottom expectations. Their direct passing style and counter-attacking approach caught Dortmund off-guard repeatedly.
The decisive moment arrived in the 61st minute through substitute Thierno Barry — a 22-year-old worth £9M, facing defenders worth more than Milan’s entire starting XI. When Leandro Trossard found him in space, Barry’s finish was emphatic, sending the underdog supporters wild.
Dortmund’s Desperation
The final half-hour saw Dortmund throw everything forward. Havertz, Júnior, and Kvaratskhelia combined in waves of attack, with Alexander Nübel in the Milan goal producing several crucial saves. The closest they came was an 83rd-minute strike from Júnior that bulged the net — only for the offside flag to crush their hopes.
Miracle Complete
When the final whistle blew, it confirmed one of the most remarkable upsets in recent memory. A team predicted to finish bottom had defeated the division’s supposed champions-elect. Milan’s average squad rating of 87 had overcome Dortmund’s 89, their £37k average wages had trumped their opponents’ £79k salaries.
For Simon Thomas and his unlikely heroes, it represents vindication of their season-long battle against the odds. For Dario Saviano and his star-studded squad, it’s a painful reminder that in football, talent alone doesn’t guarantee trophies.
As Milan celebrated their greatest triumph in years, one couldn’t help but reflect on football’s enduring capacity to surprise. Sometimes, the smallest budgets can produce the biggest dreams.
Final Score: AC Milan 2-1 Borussia Dortmund
Attendance: 84,935
Goalscorers: Golovin 1’, Barry 61’ (Milan); Bellingham 6’ (Dortmund)
Some suggestions to be implemented
Hi Managers, I present some suggestions to be implemented if support and acceptance is found from the Top100 community that could help the game. I think the biggest problem is the automatic renewal of players. Once you sign them, you own them for life.
1. CONTRACTS/STIPULATIONS. But not for managers, but yes for players. Previously, you ran the risk of losing all your hard work with a bad season. What I propose is implementing the rule that first-team players must start at least 10 games for their teams during the season, and if they don't comply, they must be sold at the end of the season.
How would it work?
All players over 21 who are on the main squad at the start of the season have a stipulation that they must start at least 10 games for their respective teams, so as not to generate the same concerns that a real-life player would have.
Matchday 29 of each season would be crucial because there would be 10 games left to play, and it would be the last chance for a player to start if they haven't already. It would also be the last chance to sign a player over 21 because if they are signed after Matchday 29, they would no longer be eligible for 10 starts. We could occasionally remind people on Facebook, WhatsApp, Discord, etc., which teams and players are at risk of not reaching 10 starts.
This can be monitored by looking at the squad's statistics (squad/views/statistics). For example, on my team, ZANOTTI has 7 (2), which means he has played 7 games, 5 as a starter and 2 as a substitute. I would still need 5 more starts to keep him, and with 10 games left to play, I could achieve that. These statistics are the ones that count, not the ones shown in each player's profile. They sometimes vary, and it would also be quite cumbersome to review each player's profile.I know it seems complicated, but it's not that difficult to control, and I'd be happy to help with that.
Failure to comply with this stipulation would result in the player being sold to an external at the end of the season, and he would be unable to be re-signed. If the manager, seeing that the player won't be able to start the established number of games and decides to sell the player in an internal deal, should be aware that transfers to teams that serve as bridges are prohibited, as the Top100 rules state.
This could be seen as real concerns a team would have if players are not playing with their teams. Furthermore, since there will likely be several players who will be sold forever at the end of the season, there will be battles to sign players almost at the beginning of each season.
This will help move the market continuously; perhaps not much between matchdays 29 and 38, but at the beginning of each season, there will surely be many bidding battles. It will also help managers be more active in their strategies and manage their squads well, preventing teams from signing and hoarding players who will never play for their teams and giving a chance to those who truly need them. It's also a less drastic variation on manager contracts, avoiding the loss of your entire squad. This way, you'll lose players, but only because of yourself.
2. L3 CONCERN RULE: This rule should definitely be brought back. But I would perhaps add the variation that after the player's sale, only teams in the same division or lower can sign the player. (Although if the previous rule of 10 starts is added, it's possible that the big teams won't try to sign players who won't play for their teams.)
3. INCENTIVES: This rule might be a bit crazy, but a prize of a new player could be offered to the first three teams that decide to sell a player with a rating of 90 or higher, regardless of age. It could be done at the beginning or end of each season.
They may seem like strange rules, but the first one is especially interesting. It existed in a game world I played before, and I lost Coutinho, for example, at his peak. These are suggestions that may or may not work for the game. I hope they're helpful; I really like Top100. Cheers.
Top 100 Regen S1 Youth Cup
Competition Format and Rules
We use the friendly fixture schedule to arrange matches. Home team managers must send friendly requests for all their home games. Away team managers must accept all friendly requests. If you sent a request and it hasn’t been accepted or you are expecting a request but you haven’t received it, the quickest way to resolve the matter is to message the other manager.
Managers who fail to arrange their games, or who fail to field eligible players (i.e., aged 21 or younger on 10 June 2025) will forfeit their match 3-0. Managers who forfeit will not be included in the end of season prize draw, and may be excluded from the knockout stages.
Group Stage
- 7 pots of 8 teams each
- 7 groups of 8 teams (one from each pot)
- 7 matches per team in group stage
- Group games start on 2 August every Saturday using the friendly fixture schedule
Qualification to Knockout Stage
- Top 4 from each group (28 teams)
- 4 best 5th place teams (4 teams)
- Total: 32 teams advance to knockout stage
- ** Knockout games will be played every Saturday and Wednesday from 21 September**
Youth Shield
- 3 worst 5th placed teams, all 7 6th placed teams and 6 best 7th placed teams enter Youth Shield
- worst 7th placed team and all last placed teams eliminated
- 16 teams in Youth Shield competition will be joined by 16 losers from the 1st Round of the Youth Cup knockout round
Tournament Seeding - 56 Teams
📊 Pot Strength Analysis
- Pot 1: 81-84 average
- Pot 2: 80-81 average
- Pot 3: 78-80 average
- Pot 4: 77-78 average
- Pot 5: 76-77 average
- Pot 6: 74-76 average
- Pot 7: 70-74 average
🏅 POT 1 (Teams 1-8)
| Rank | Team | Average |
|---|---|---|
| 1 | Barcelona | 83.82 |
| 2 | Porto | 83.36 |
| 3 | Chelsea | 83.27 |
| 4 | Nice | 83.18 |
| 5 | Real Madrid | 82.82 |
| 6 | PSG | 82.64 |
| 7 | Union Berlin | 82.09 |
| 8 | Monaco | 81.45 |
🏅 POT 2 (Teams 9-16)
| Rank | Team | Average |
|---|---|---|
| 9 | Juventus | 81.36 |
| 10 | Real Sociedad | 81.36 |
| 11 | Strasbourg | 81.36 |
| 12 | Union Saint-Gilloise | 81.27 |
| 13 | Manchester City | 81.27 |
| 14 | Freiburg | 81.09 |
| 15 | Newcastle | 80.36 |
| 16 | RB Leipzig | 80.27 |
🏅 POT 3 (Teams 17-24)
| Rank | Team | Average |
|---|---|---|
| 17 | Bournemouth | 79.82 |
| 18 | Lens | 79.73 |
| 19 | FC København | 79.73 |
| 20 | Ajax | 79.45 |
| 21 | Getafe | 79.09 |
| 22 | Valencia | 78.73 |
| 23 | Real Betis | 78.64 |
| 24 | Al Nassr | 78.45 |
🏅 POT 4 (Teams 25-32)
| Rank | Team | Average |
|---|---|---|
| 25 | Atletico Madrid | 78.36 |
| 26 | Osasuna | 78.27 |
| 27 | Slavia Praha | 77.91 |
| 28 | Mamelodi Sundowns | 77.73 |
| 29 | Tottenham | 77.55 |
| 30 | Crystal Palace | 77.36 |
| 31 | Villarreal | 77.27 |
| 32 | Fiorentina | 77.18 |
🏅 POT 5 (Teams 33-40)
| Rank | Team | Average |
|---|---|---|
| 33 | Palmeiras | 77.00 |
| 34 | Bayern Munich | 76.82 |
| 35 | Dortmund | 76.64 |
| 36 | Fenerbahce | 76.55 |
| 37 | Roma | 76.55 |
| 38 | Lazio | 76.27 |
| 39 | Lille | 76.09 |
| 40 | Benfica | 76.09 |
🏅 POT 6 (Teams 41-48)
| Rank | Team | Average |
|---|---|---|
| 41 | Everton | 75.91 |
| 42 | Anderlecht | 75.55 |
| 43 | Milan | 75.09 |
| 44 | Bologna | 74.91 |
| 45 | Atalanta | 74.64 |
| 46 | Racing Club | 74.55 |
| 47 | Arsenal | 74.09 |
| 48 | Derby County | 74.09 |
🏅 POT 7 (Teams 49-56)
| Rank | Team | Average |
|---|---|---|
| 49 | Inter | 73.91 |
| 50 | West Ham | 73.91 |
| 51 | Athletic Bilbao | 73.64 |
| 52 | **Gala | |
| tasaray** | 72.64 | |
| 53 | New England Revolution | 71.09 |
| 54 | Mainz | 70.18 |
| 55 | Burnley | 70.00 |
| 56 | Rangers | 68.91 |
We use Challonge.com to shuffle the seeds and draw the teams into groups. You can see all fixtures for the Group Stage here.
S25 Youth Cup Knockout 1st Round Highlights
The first knockout round of the S25 Youth Cup, played on Saturday, June 21st, delivered on its promise of drama, with extra-time epics, huge upsets, and an unprecedented number of teams being eliminated from all competitions. When the dust settled, the field was significantly thinner, and the paths to both the Youth Cup and Youth Shield glory have become clearer. Here’s the full story of a wild weekend of knockout football.
The Extra-Time Epics: Dortmund & São Paulo Triumph in Thrillers
Two of the round's most anticipated clashes went the distance, requiring fictional extra time to find a winner. In a heavyweight battle, Manchester United and Borussia Dortmund played out a fantastic 2-2 draw in normal time. The back-and-forth affair continued into the extra period, where Dortmund ultimately found the edge, emerging with a stunning 4-3 victory to knock out the Red Devils.
It was just as tense between CSKA Moskva and São Paulo FC. After a hard-fought 1-1 stalemate, the Brazilian side showed their quality in extra time, securing a 3-2 win to advance to the next round and send CSKA to the Youth Shield.
Shock Results: Flamengo and Man City Crash Out!
The knockout stage immediately produced some colossal upsets. The biggest shock saw #12 seed and perfect-record holders CR Flamengo defeated 2-1 by #35 seed Stoke City. The result sends one of the tournament favourites to the Youth Shield and marks a massive achievement for Stoke.
In another major upset, Manchester City were knocked out by Brazilian side SC Internacional, who produced a fantastic performance to win 2-0. The result sees another of the top-seeded English teams fall at the first hurdle.
Disqualifications & Walkovers Thin the Herd
An unprecedented five teams were eliminated from all competitions this round. In a frustrating development, two of the round's most intriguing ties, Juventus vs. SL Benfica and FC Schalke 04 vs. Crystal Palace, were not played as the managers failed to organise the fixtures. As a result, all four teams have been removed from the competition entirely.
Furthermore, while Levante UD were initially defeated 5-2 by Dynamo Moskva, the result was overturned. Dynamo were found to have fielded their senior team and were subsequently disqualified. The official result is a 3-0 forfeit win for Levante, and Dynamo Moskva have also been removed from all competitions.
The Survivors: Who's Through to the Youth Cup's Last 14?
After a chaotic first round, just 14 teams remain in the hunt for the S25 Youth Cup. These teams will advance to the second knockout round. There will be two byes as a result of the failure of other managers to play their games.
- FC Barcelona
- Bayern München
- Chelsea
- Cruzeiro
- Everton
- Hertha BSC
- Leicester City
- Levante UD
- RCD Espanyol
- SC Internacional
- Stoke City
- São Paulo FC
- Tottenham Hotspur
- Borussia Dortmund
The New-Look Youth Shield
The Youth Shield has been bolstered by 13 teams dropping down from the main competition. They will join the 14 teams already waiting to form the new Youth Shield knockout bracket. There will be five byes as a result of other managers failing to organise their games or to set their teams.
The 13 teams dropping into the Youth Shield are:
- AC Milan
- Arsenal
- Atlético Madrid
- Bayer Leverkusen
- CSKA Moskva
- Feyenoord
- HAMBURGER SV
- Independiente
- Manchester City
- Manchester United
- RSC Anderlecht
- Sampdoria
- CR Flamengo
The draw for the second round of the Youth Cup (two legs) and the 1st Round of the Youth Shield (one leg only) are on the the Challonge website as usual. Please arrange your fixtures asap as games are on Saturday.


Wolfsburg - Eine Achterbahn II
Given a lot has happened since September of last year (when I last wrote a blog post), I thought it’d be nice to give an update on the Wolfsburg project.
Back then I referred to my general philosophy – one of building for the long-term as opposed to signing “a bunch of oldies” with high ratings. But I also referred to going through a tough time results wise, where I had to make a conscious choice of sticking to my philosophy or scrapping it to save my job. I chose the former, in hope that I could turn things around, and if I couldn’t, at least the next manager would find a decent team to build on. In what can only be described as a heroic end to that season, we won 5 on the bounce and secured div 4 football the next season. Since then, we’ve been a steady ship on the pitch, while building the foundation for a much more exciting future.
At the time, I touched on my transfers and tactics, with my best starting XI looking something like this;

Today, the team looks vastly different (with positive summer reviews still pending on some of these players!);

On top of this, we didn’t really have a youth team, which I can gladly say we do now. The split of some 20 players in the first team and 30 players in the Wolfsburg u21’s is one I consider very healthy if we are to continue flipping players & compounding as a club over the long-term.
I think this season is one too early for us to compete for promotion, but I see us as strong contenders in season 26. The foundation has been built, transfers are happening less frequently, and our focus is now returning to winning football matches.
My next update will be post season 26, where I’ll reflect on these predictions and go further into detail on my work with the youth team – stay tuned!
Marsden's Tactical Revolution at Hamburger SV
At the start of any season, predictions are made and narratives are set. For Hamburger SV, the script written by many observers for Season 25 was a grim one. Tipped for a relegation battle by at least one prominent statistical model, the club entered the campaign under a cloud of low expectations.
Now, at the halfway mark of 19 games, manager David Marsden has a defiant message for the doubters — and a league table to back it up.
“DON’T BELIEVE THE HYPE!” Marsden declared after a hard-fought 2-2 draw against a powerhouse West Bromwich Albion side.
“A point at home to the strongest team in D2 sees Hamburger extend our unbeaten run to 16 games. It’s enough to see us leapfrog the second-best team in the division and long-time leaders Leverkusen to top the table at the halfway mark.”
He’s not wrong. After 19 games, against all odds, Hamburger SV sit in 1st place in Division 2. It’s a story of tactical identity, squad-wide contribution, and a manager with nearly a thousand games at the helm finally hitting a spectacular run of form.

🔥 A Comeback Story Forged in Frustration
This stunning ascent is made all the more remarkable by the context of the past. Season 24 was, by the manager’s own admission, “another disappointing one,” marked by a poor start that mirrored previous struggles. For a club with the history of HSV, languishing has been a painful reality.
But this season is different.
The numbers tell part of the story:
- Only the all-out attacking Southampton have scored more goals
- Only the defensively resolute Dinamo Zagreb have conceded fewer
This is not a fluke; it’s a calculated and effective campaign.
🎯 The Tactical Blueprint: High Risk, High Reward
The foundation is a confident and aggressive 4-2-3-1 Wide system. While many teams in the division use this shape, Marsden has drilled his side to play with a high-intensity, “Pressing All Over” style, using a high defensive line and fast, direct passing to overwhelm opponents.
But where true managerial quality has shone through is in the adaptability.
- Against Southampton’s gung-ho 4-2-4, HSV shifted to a more conservative “Defensive” mentality with a low block — and won 3-1.
- Against the league leaders Bayer Leverkusen, they went toe-to-toe with their high press and snatched a dramatic 2-1 away victory.
👥 The Whole Squad Mentality
This tactical success is powered by what Marsden rightly calls a “great team effort.” The statistics from the first 19 games paint a picture of shared responsibility:
- Hugo Ekitiké leads the line with 11 goals, earning a leap to 90 SMW rating

-
Alex Iwobi has been the creative fulcrum:
- 6 goals
- 11 assists
- An average rating of 7.82, among the league’s best
- Benjamin Bourigeaud (5 goals)
- Rafa Mújica (4 in 7 games since signing)
- Salem Al-Dawsari (4 goals)
🧠 Smart Rotation, Big Results
Perhaps the most impressive aspect has been the masterful squad management.
Faced with a relentless fixture list of league and cup games, Marsden has used his full squad intelligently. Key players were rested in cup ties—even at the cost of early exits—so they could be fresh for crucial league battles.
The result?
- Wins against Leverkusen and Southampton,
- Game-changing substitutes like Jorge Carrascal, who scored the winner against the league leaders.
🏗️ A Thousand Games in the Making
For a manager whose combined tenure spans nearly 1,000 games, this season feels like the culmination of a long-term project.
Marsden has shaped a squad with the right blend of:
- Veteran presence (Casemiro, Otamendi)
- Rising stars with real-world pedigree:
- Jahmai Simpson-Pusey (PL2 Player of the Season)
- Joane Gadou (RB Salzburg)
- Kees Smit (Golden Boy nominee)
- Pape Demba Diop (Ligue 1 move)
The future isn’t just stable — it could be dominant.
📈 The Road Ahead
At the halfway point, Hamburger SV are no longer underdogs. They are league leaders, title contenders, and the division’s form team.
The hype they were told not to believe has been replaced by results.
The challenge now is to maintain this incredible standard for another 19 games.
If they can, the long-awaited return to the top flight won’t just be a dream — it will be a certainty.
Regen Update
It was pointed out to me that the Opta rankings I used are not the current up to date rankings. This was my mistake - but I've fixed it. I've updated the manager appointments to show the current team rankings, meaning that some teams will start in different divisions to what was originally published to reflect their current strength.
Four teams have changed managers due to three dropouts and one switch to his preferred team now available.
Please join our Discord server to join in the discussion and vote on starting squad caps.
[googleapps domain=“docs” dir=“spreadsheets/d/e/2PACX-1vSM3FEz-mvdct76G1mu-fRBuqWVRUsb7h1R9-4Ex8P9uDgbpEaJy9RqgmKvFHHjAde6h5MlKFYvZAjd/pubhtml” query=“gid=0&single=true&widget=true&headers=false” /]



