text:
John Barrowman Is No Longer A Dancing On Ice Judge
It's not clear whether the decision was made due to allegations of flashing made against the actor.
by L'Oréal Blackett
Karwai Tang/WireImage/Getty Images
ITV has confirmed (Oct 4) that John Barrowman is stepping down as a judge Dancing On Ice after joining the celebrity skating competition in 2019. The shock exit comes after the American entertainer admitted to "tomfoolery" on the set of Doctor Who, after former cast members alleged that the actor exposed himself repeatedly.
ITV's spokesperson released a statement confirming the news, thanking John Barrowman for his time on Dancing On Ice.
"We thank John Barrowman for two brilliant years on the Dancing On Ice panel," it read, via The Independent.
While the entertainer will not be appearing on the next season of the popular celebrity skating competition in 2022, Barrowman will be still be working with the broadcaster on ITV special All Star Musical.
Bustle has contacted a representative for John Barrowman for comment and will update this piece should new information become available. As yet, Barrowman has yet to publicly respond to the announcement, and his social media pages, including Twitter, are currently set to private.
The 54 year old actor, who played the character of Capt Jack Harkness in Doctor Who and its spin-off show Torchwood, was accused of exposing himself to cast and crew members during his time on set.
As the Independent reports, a 2015 interview clip, which resurfaced earlier this year, sees Doctor Who actor Noel Clarke allege that Barrowman would "his d*** out every five minutes." In the video, Clarke, who has himself recently faced multiple accusations of sexual assault charges, presented the inappropriate behaviour as banter.
Following reporting on the accusations, Barrowman admitted to "tomfoolery" on set, telling The Guardian in May 2021, that his "high-spirited behaviour" was "only ever intended in good humour to entertain colleagues on set and backstage."
"With the benefit of hindsight, I understand that upset may have been caused by my exuberant behaviour and I have apologised for this previously," he added per The Independent.
It's not the first time Barrowman has been accused of exposing himself publicly, as back in 2008, Barrowman reportedly "flashed" his "fruit and nuts" during a BBC Radio 1 broadcast, prompting an apology from the actor.
At the time, he said in a statement given to The Guardian," "I apologise for any offence I have caused. I was joining in the light-hearted and fun banter of the show and went too far. I was wrong to do this and it will never happen again."
"I really appreciate the great support I have received from the BBC over the last few years and would never intentionally do anything to undermine the integrity of the corporation."
Rita Ora Finally Opened Up About Marrying Taika Waititi & Their "Perfect" Wedding
By Sophie McEvoy and Catharina Cheung
Twitter Can't Make Up Its Mind About Ekin-Su's 'Dancing On Ice' Skate-Off
By Sophie McEvoy
Twitter Is Saying The Same Thing About Ekin-Su's 'Dancing On Ice' Debut
The Real Reason Joey Essex Quit 'TOWIE'
By Catharina Cheung
Get The Very Best Of Bustle/UK
Sign up for Bustle UK's twice-weekly newsletter, featuring the latest must-watch TV, moving personal stories, and expert advice on the hottest viral buys.


The Payroll Program and Operations Senior Manager role supports and drives the roll out of the Payroll Strategy Programs and Projects in the APAC Geography. This role provides Payroll subject matter expertise (by preference in Philippines Payroll), project leadership, and direction to local Payroll operation teams to ensure our Payroll service is fit for purpose. S/He will support the initiatives of, and maintains relationships with, the Accenture business functions. Responsible for service delivery support in conjunction with Accenture's ventures and acquisitions transactions globally. This role will also be responsible for Quality and Compliance in the payroll process.


Thanks to Jonathan of Robbin's Realm for this recommendation.
Brief Synopsis – Documentary that shows many of the famed Prophet Nostradamus' predictions that he foretold years (even centuries) before they actually occurred.
My Take on it – I have heard about Nostradamus' many prophecies as a teen and even recall that some predicted that Saddam Hussein was a big part of it because he wore a blue beret.
This along with some other future prophecies mentioned here didn't come true in the end and that fact actually takes away from the impact of this film because the predictions were incorrect.
The past and present predictions on the other hand are very interesting to watch and hear the interpretations of his writings.
Napoleon, Hitler, Lincoln, Kennedy, WWII, The French Revolution and numerous other world events were predicted by Nostradamus centuries after his death.
It's obviously much easier to explain past predictions because you know what to look for and how to interpret them to meet the audiences' expectations.
Im not saying that I think all of his predictions are purely made up but it's easier to see things when looking at the past instead of the future.
I found it quite fascinating that Orson Welles was chosen as the host of this film because even his booming screen presence makes one think of supernatural things and goes along nicely with the whole theme of the film.
I wonder what kind of other future or even past predictions would be featured if this was made today.
Bottom Line – Interesting documentary that loses a bit of its impact due to some incorrect future predictions. Was fun to see some of the past ones that did happen and learn based on what he wrote about each of those predictions. Welles was the perfect choice to host this because he was always known as a mysterious man who fits in perfectly with the themes presented here.
I did an article on my own blog about this film (https://seanmunger.com/2013/09/27/the-man-who-saw-tomorrow-the-movie-that-ruined-nostradamus/) although admittedly it focused more on the history of who Nostradamus was and why his "predictions" were completely ridiculous. Incidentally Welles himself, who did the movie strictly for the money, denounced it. Funnily enough, this article earned me one of my most-ever hostile blog comments, which I didn't approve, from an angry reader who called me "narrow-minded and stupid" for not believing Nostradamus's predictions and predicting that I would pay for my intransigence in the fires of hell once the book of Revelations came true. Therefore this counts as one of the more infamous movie reviews on my blog!


As I mentioned two weeks ago, one of the positive funding enhancements that the legislature has enacted recently is provide additional funding for reducing class sizes in grades K-3. If a district meets certain class size numbers, the state provides additional funding to pay for a teacher. Those class size targets vary, based on a school's poverty level, as measured by the percentage of Free and Reduced Lunch students.
The state appropriated $200 million last year to provide grants for districts to buy portables or build additional space. So far, the state has spent a number of months studying where the needs are and should be ready to start awarding the funds to districts later this spring. The Kennewick School District has applied for those funds, and we are hopeful that we will be awarded some portion of the $200 million grant.
A further complication in the class size issue is Initiative 1351. Passed by the voters in November of 2014 by a 50.96% majority, the Initiative would have reduced class sizes in all grades, K-12. Some estimates had the implementation of the Initiative costing over $4 billion. The legislature realized that it didn't have that kind of money available and was not willing to raise taxes at the level necessary to generate that kind of revenue. In addition, there was a lot of concern about whether there were enough qualified teachers to fill all those potential new positions, even if the state had the money. In a last minute compromise, both the Senate and House agreed to suspend the Initiative for four years, and continue with their focus on class size reduction in grades K-3.
In Kennewick, we are already experiencing shortages of teachers, especially in high demand areas. Our substitute pool has been shrinking, as we have hired many of our former subs for full time jobs. Our neighboring districts are seeing the same increasing demand for teachers as well as a dwindling supply.
For 2016-17, we will continue to take advantage of as much of the state K-3 class size reduction money as possible. We are moving our excess portables from our middle schools to our elementary schools to provide the space. We are also adding seven kindergarten teachers to enable Ridge View, Cottonwood, and Sage Crest to offer FDK. In addition, we are planning on adding approximately 7-10 teachers to grades K-3 around the district – primarily in our higher poverty schools – to reduce class size and take advantage of the state funding.
One last challenge is that we continue to grow in Kennewick. Over the last five years, we have grown 1,062 students in elementary alone, or about the size of two elementary schools. That makes our task of trying to lower class sizes an even greater challenge. Often, we think we have added teachers and are gaining ground in reducing class sizes. Then, new students move in and those classes fill back up. We are constantly evaluating classroom space and where we can add teachers, and remain committed to the goal of lower class sizes.


All were promises made in last year's budget and repeated in the heritage minister's mandate letter.
Yet despite lots of talk and consultation, there has been little action.
It's baffling to those in the journalism industry, newspaper publishers and the country's largest media union, especially with Prime Minister Justin Trudeau just last week emphasizing his government's commitment to supporting a vibrant free press to hold government and their institutions to account.
Jerry Dias, president of Unifor which represents nearly 12,000 workers in the media sector, says the time for talk is past, and it's time for action.
A 2017 report by the Public Policy Forum said from 2008 to 2016, 169 local media outlets closed and another 54 reduced services, a trend that accelerated in 2017, most notably with the sale and purchase of assets by Torstar and Postmedia. A subsequent followup report in September shows the quality of news coverage across the country has also declined.
News Media Canada, which represents 800 daily, weekly and community newspapers, urged Ottawa to provide $350 million for a Canadian Journalism Fund, and was disappointed with last year's announcement of $10 million a year, for five years.
Simon Ross, spokesperson for Heritage Minister Pablo Rodriguez, said Ottawa aims "to quickly implement" the measures promised last winter.


Anderson Ashcroft is a leading Commercial Insurance Broker specialising in providing innovative insurance solutions and services whatever your needs.
Our experienced team will take time to fully understand your business and put your interests above all other considerations.
We offer a professional and friendly service. Every enquiry is dealt with by one of our specialist team based in our UK only offices. We take pride in providing the best possible insurance advice to all our clients with the view to developing long term relationships based on mutual trust.


text:
We use a technology provided by Facebook called The Facebook Pixel. While we do not store the information ourselves, Facebook does. We will use the following information to retarget readers on Facebook : Age range, City. Learn more
Like almost every website, cookies are used. Those are simple text files written on your computer by your browser. They do not contain any personal information. There are used as identifiers.
In order to be compliant with the General Data Protection Regulation (GDPR), we require your consent before we can provide you with any of our services.
Since we do not collect user data, there is nothing for us to destroy if you decide to opt-out. Please know that we still offer the option to. You will find an "opt-out" button at the bottom of the page, in the footer. You will then be presented with the same consent screen next time you access the website if you opt-out.
Beirut Bar Association Will End Lebanese Banks' Illegal Measures - The961
Latest NewsFoodDiasporaListiclesRanked
Contact UsAdvertisePrivacy Policy
© 2020 All rights reserved, The961 Corp.
` ); }
Beirut Bar Association Will End Lebanese Banks' Illegal Measures
Melhem Khalaf just took action against the arbitrary and illegal measures imposed by banks on the movement of funds.
@The961
Maria Zakhour · January 05, 2020
For months, and since the effects of Lebanon's economic crisis started to swell dramatically, Lebanese citizens and banks have been in a continuous state of confrontation. The banks' arbitrary actions and their ongoing restrictions, without any legal justification, on cash withdrawals and overseas transfers, have caused the depositors to lash out.
Protesters have been gathering in front of local banks to demand their money and the overthrow of the bank ruling system. That's in addition to their conflict with many bank managers, employees, and security officers.
This scenario is becoming a daily thing for the Lebanese people. The banks are only allowing a weekly withdrawal of 200 dollars and some only $500 monthly. That can't be logically enough for many who take regular medication, have an urgent flight, need to pay hospital bills or just rent.
Via UPI
One main question remains unanswered for the Lebanese people: "Where did our money go?" For the people, it's a simple logical line of reasoning. They have entrusted the banks with their money and now the banks are holding on to them.
That goes the same with the salaries paid through the banks, and for the small and not too small businesses that need to keep running their operations to survive and pay salaries; operations that are crucial to the people's needs and to the country's economy now more than ever.
@instaddiyarembedded via
These factors are enough to justify why some people are undertaking sit-ins or parking their vehicles in front of banks' entrances, and some are protesting inside the banks and refusing to leave until they get their money back. Unfortunately, assaults on banks have worsened these past days.
The actions of some to take back their money through aggressive actions have motivated others to do the same, which would have been avoided if banks have acted consciously aware of the plight of the people, in addition to abiding by the Lebanese constitution.
@lebanese.citizenembedded via
It is important to point out that the employees in these banks are citizens who, along with their families, are also enduring the severe economic crisis. They didn't make these new rules which they are forced to abide by to keep their jobs.
As far as this critical situation goes, they stand between 'two fires'; both of which they did not create nor are they guilty of.
@dr._fadijawadembedded via
A solution to the people's issues with the banks might be materializing soon. The head of the Beirut Bar Association, Melhem Khalaf, has now called for an immediate stop to these unconstitutional and illegal measures taken by banks, and the end of restrictions on withdrawals and transfers.
He also pledged that the Beirut Bar Association is going to watch over this file, in order to prevent further measures.
Via The arab weekly
In his pursuit of justice and the Lebanese people's rights, Khalaf is demanding that banks refrain from imposing these unconstitutional measures again, except in accordance with a parliamentary law in the event of a serious and real justification, which currently isn't present.
In his statement, Khalaf issued that "Lebanon's economy is a liberal, free-market economy, and policies such as the freedom of trade and transfer are protected by the Lebanese law and Constitution."
@campusj.usjembedded via
He also warned against the people's loss of trust and confidence in the banking sector, which is difficult to regain. He stressed that the free-market economy is a distinctive feature of Lebanon and we shouldn't take it for granted.
Via AP Photo/Hussein Malla
As he pointed out, "The economic system in Lebanon is free and liberal, based on freedom of circulation, freedom of transfer, and freedom of cutting." He explained that these principles are guaranteed by the constitution and the Lebanese laws and the adherence to them is a matter of principle and priority for the Beirut Bar.
In a similar supporting action, the Judge of Urgent Matters in Beirut, Carla Chouah, obligated the Mediterranean Bank to process the transfer of 25,000 euros of a citizen. She forced a coercive fine on the bank for each day of delay.
This citizen, who needed to send the money to his children studying abroad, couldn't do so because the bank refused to make the transfer. He had to file an urgent legal complaint. Judge Chouah saw to his rights, confirming that restricting the movement of capital is a constitutional violation.
Via REUTERS/Mohamed Azakir
It appears that this ordeal, which has been oppressing the Lebanese people for over 2 months, could finally come to an end thanks to the head of the bar association stepping in with the law and the constitution in hands.
Since his recent election on November 17th, Melhem Khalaf and the Bar Association have been taking positive and constructive actions to support and defend the Lebanese people's rights, including the protesters who get arrested and inmates unduly stuck in Lebanese Prisons.
@zeidhamdanembedded via
While there were some actions of support from Lebanese lawyers, on personal initiative, prior to November 17th, Lebanon is now witnessing various bold actions from Lebanese lawyers in support of the people and their rights.
With the statement and stance of Melhem Khalaf, some people are now entering banks proclaiming the law as they demand the banks to abide by it and give them their money.
This video is not available.
@instatripoliembedded via
Follow The961

redpajama_set_name: RedPajamaCommonCrawl


After the incident sparked outrage, the officer was sent to police lines.
In a shocking case of sheer insensitivity, an elderly woman was forced to beg in front of a police inspector in Lucknow in order to get an FIR registered. In the video of the incident that has gone viral, the woman, in her early seventies, is seen pleading police to register an FIR in connection with her grandson's death. She is seen begging with folded hands in front of SHO Tej Pratap Singh who seems visibly unmoved. He continues to remain seated with his legs crossed. Later, the helpless woman even falls to his feet to which he makes a feeble attempt to respond.
The incident took place outside Gudamba police station which, ironically, was declared India's third-best police station as per an Intelligence Bureau survey in 2018. Meanwhile, the officer has been removed from his post and has been sent to the police lines.
The woman's grandson, a labourer, had died due to the malfunctioning of a machine at the factory where he used to work. An FIR has been registered against the factory owner, Ajay Gupta. No arrests have been made so far.


text:
Q: How to use MUI v5+ with class-based react components? We are trying to update our web application from material ui (v4) to mui (v5)
Using the available examples, we have managed for function based components, but it does not seem to work for class based components, and there is very little examples around on class based components and MUI.
Out pattern looks something like the below currently, but none of the styles are applied to the MUI components. The same pattern seems to work on a POC project with functional components.
The container file Login.js
import {connect} from 'react-redux'
import Layout from '../pages/login.js';
import { call } from '../reducers/helloWorld'
import { logIn, logOut } from "../reducers/userManagement"

const mapStateToProps = state => ({
    user: state.userManagement.user,
    requestState: state.helloWorld.requestState,
})

const mapDispatchToProps = dispatch => ({
    helloWorld: () => dispatch(call()),
    logIn: (user2) => dispatch(logIn(user2)),
    logOut: () => dispatch(logOut()),
})

export default connect(mapStateToProps, mapDispatchToProps)(Layout)

the page file login.js
import React from "react";
import { Typography, Button, FormControlLabel, Checkbox, TextField, Grid, Paper} from '@mui/material';
import { styled } from '@mui/material/styles';
import theme from '../theme';
import classes from '../styles/login';
import logo from '../img/Ergopak-logo.png';
import { Navigate } from 'react-router-dom';

// SXprops

class Login extends React.Component {

  state = {
    email: "",
    password: "",
    showPassword: false,
    navigateTo: ""
  }

  componentDidMount(){
    const {logOut} = this.props
    logOut()
  }

  goToHome(){

  }

  handleSubmit(e){
    const {logIn} = this.props
    console.log("handleSubmit pressed!!")
    logIn({name: "Pieka"})
    this.setState({navigateTo: <Navigate to="/home"/>})
  }

  setEmail(){
    console.log("handleEmail pressed")
  }

  setPassword(){
    console.log("setPassword pressed")
  }

  render(){
    const {user, requestState} = this.props
    const {email, password, showPassword, navigateTo} = this.state

    console.log("requestState", requestState)
    console.log("user", user)
    console.log("that thing is, ", classes(theme).welcome)

    return(

      <Grid container direction = "column" alignItems="stretch" justifyContent="flex-start" style={{backgroundColor: "grey", height: "100%", display: "flex"}} >
          {navigateTo}

          <Grid item sx = {classes(theme).welcomeDiv}>

Welcome To SightPlan

          </Grid>

          <Grid item >

          </Grid>

          <Grid item sx = {classes(theme).centerDivs}>
            <Typography>Please log in with your email address and password</Typography>

            <TextField

              sx={{
                width: 400
              }}

              type="email"
              value={email}
              placeholder="Email"
              onChange={(e) => this.setState({email: e.target.value})}
            />

            <Grid container direction = "column" alignItems = "center">
              <TextField
                sx = {classes(theme).loginFields}
                type=  {showPassword ? "string" : "password"}
                variant="standard"
                value={password}
                placeholder="Password"
                onChange={(e) => this.setState({password: e.target.value})}
              />

              <FormControlLabel
                        control={<Checkbox size="small" name="showClosed" />}
                        checked={showPassword}
                        label={ Show password }
                        onChange={e => this.setState({showPassword: !showPassword})}
                        style={{margin: "auto"}}
                        />
              </Grid>

            <Button
              sx = {classes(theme).loginButton}
              type="submit" onClick={this.handleSubmit.bind(this)}
              variant="contained"
              color="primary"
              >
              Log In
            </Button>
          </Grid>
          <Paper style = {{backgroundColor: "blue", borderRadius: "0em", display: "flex", flexDirection: "column"}} />

        </Grid>

)}
}

export default styled(Login)({theme})

The styles file login.js
import commonstyles from "./common"

const styles = (theme) => ({
    centerDivs: commonstyles(theme).centerDivs,
    welcomeDiv: commonstyles(theme).welcomeDiv,
    white: commonstyles(theme).white,
    logo: {
        margin: "auto",
        marginTop: "2em",
        marginBottom: "2em",
        ...commonstyles(theme).logo,
    },
    welcome: {
        fontSize: "3em",
        fontFamily: "Segoe UI",
        color: "white",
        marginBottom: "1em",
        margin: theme.spacing(2),
        textAlign: "center"
    },
    loginFields: {
        ...commonstyles(theme).textField,
        width: "20em"
    },
    loginButton: {
        ...commonstyles(theme).button,
        width: "10em"
    },
    myTextBox: {
        ...commonstyles(theme).textField,
        // "& .MuiInputBase-root": {
        //   color: 'black',
        //   borderColor: "green"
        // }
    }

})

export default styles

the theme file theme.js
    import { createTheme } from '@mui/material/styles';

    const theme = createTheme({
      palette: {
        primary: {
          main: "#065f92", // blue
        },
        secondary: {
          main: "#F79007", // orange
        },
        error: {
          main: "#d32f2f",
        },
        warning: {
          main: "#ed6c02",
        },
        info: {
          main: "#0288d1",
        },
        success: {
          main: "#2e7d32",
        },
      },
      spacing: (factor) => `${factor}rem`,
    });

    export default theme;

and finally the App.js file that pulls it all together:
import React from "react";
import { Provider } from 'react-redux'
import theme from './theme';
import { ThemeProvider } from '@mui/material/styles';
import "./App.css";
import store from "./app/store";
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Login from "./containers/Login";

function App() {
  return (
    <ThemeProvider theme={theme}>
      <Provider store={store}>

          <Router>
            <Routes>
              <Route path="/" element={<Login />} />
              <Route path="/login" element={<Login />} /></Routes>
          </Router>

      </Provider>
    </ThemeProvider>
  );
}

export default App;

redpajama_set_name: RedPajamaStackExchange


text:
package org.jenkinsci.plugins.ScriptCS;

import hudson.Launcher;
import hudson.Extension;
import hudson.Util;
import hudson.util.FormValidation;
import hudson.model.AbstractBuild;
import hudson.model.BuildListener;
import hudson.model.AbstractProject;
import hudson.tasks.Builder;
import hudson.tasks.BuildStepDescriptor;
import hudson.util.ArgumentListBuilder;
import hudson.util.VariableResolver;
import java.io.File;
import net.sf.json.JSONObject;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.QueryParameter;

import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.lang.StringUtils;

/**
 * Sample {@link Builder}.
 *
 *

 * When the user configures the project and enables this builder,
 * {@link DescriptorImpl#newInstance(StaplerRequest)} is invoked and a new
 * {@link ScriptCSBuilder} is created. The created instance is persisted to the
 * project configuration XML by using XStream, so this allows you to use
 * instance fields (like {@link #name}) to remember the configuration.
 *
 *

 * When a build is performed, the
 * {@link #perform(AbstractBuild, Launcher, BuildListener)} method will be
 * invoked.
 *
 * @author Kohsuke Kawaguchi
 */
public class ScriptCSBuilder extends Builder {

    private final String scriptfile;
    private final String arguments;
    private final String customScript;

    // Fields in config.jelly must match the parameter names in the "DataBoundConstructor"
    @DataBoundConstructor
    public ScriptCSBuilder(String scriptfile, String arguments, String customScript) {
        this.scriptfile = scriptfile;
        this.arguments = arguments;
        this.customScript = customScript;
    }

    /**
     * We'll use this from the <tt>config.jelly</tt>.
     *
     * @return
     */
    public String getscriptfile() {
        return scriptfile;
    }

    /**
     * We'll use this from the <tt>config.jelly</tt>.
     *
     * @return
     */
    public String getarguments() {
        return arguments;
    }

    /**
     * We'll use this from the <tt>config.jelly</tt>.
     *
     * @return
     */
    public String getcustomScript() {
        return customScript;
    }

    @Override
    public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws IOException, InterruptedException {

        ArgumentListBuilder args = new ArgumentListBuilder();

        String execName = getDescriptor().scriptcsexe;

        args.add(execName);

        File customScriptFile = null;

        if (StringUtils.isNotEmpty(customScript)) {
            listener.getLogger().println("Using custom script");

            customScriptFile = File.createTempFile("ScriptCS_", ".csx");

            PrintWriter out = new PrintWriter(customScriptFile);

            out.print(customScript);

            out.flush();

            out.close();

            args.add(customScriptFile.toPath().toString());
        } else {
            args.add(scriptfile);
        }

        if (StringUtils.isNotEmpty(arguments)) {
            args.add("--");
            args.add(arguments);
        }

        //Try to execute the command
        listener.getLogger().println("Executing command: " + args.toString());
        Map<String, String> env = build.getEnvironment(listener);
        try {
            int r = launcher.launch().cmds(args).envs(env).stdout(listener).pwd(build.getModuleRoot()).join();
            return r == 0;
        } catch (IOException e) {
            Util.displayIOException(e, listener);
            e.printStackTrace(listener.fatalError("command execution failed"));
            return false;
        } finally {
            try {
                if (customScriptFile != null) {
                    customScriptFile.delete();
                }
            } catch (Exception ex2) {
            }
        }
    }

    // Overridden for better type safety.
// If your plugin doesn't really define any property on Descriptor,
// you don't have to do this.
    @Override
    public DescriptorImpl getDescriptor() {
        return (DescriptorImpl) super.getDescriptor();

    }

    /**
     * Descriptor for {@link ScriptCSBuilder}. Used as a singleton. The class is
     * marked as public so that it can be accessed from views.
     *
     *

     * See
     * <tt>src/main/resources/hudson/plugins/hello_world/ScriptCSBuilder/*.jelly</tt>
     * for the actual HTML fragment for the configuration screen.
     */
    @Extension // This indicates to Jenkins that this is an implementation of an extension point.
    public static final class DescriptorImpl extends BuildStepDescriptor<Builder> {

        /**
         * To persist global configuration information, simply store it in a
         * field and call save().
         *
         *

         * If you don't want fields to be persisted, use <tt>transient</tt>.
         */
        private String scriptcsexe;

        /**
         * In order to load the persisted global configuration, you have to call
         * load() in the constructor.
         */
        public DescriptorImpl() {
            load();
        }

        /**
         * Performs on-the-fly validation of the form field 'name'.
         *
         * @param value This parameter receives the value that the user has
         * typed.
         * @return Indicates the outcome of the validation. This is sent to the
         * browser.
         */
        public FormValidation doCheckName(@QueryParameter String value)
                throws IOException, ServletException {
            if (value.length() == 0) {
                return FormValidation.error("Please set a name");
            }
            if (value.length() < 4) {
                return FormValidation.warning("Isn't the name too short?");
            }
            return FormValidation.ok();
        }

        public boolean isApplicable(Class<? extends AbstractProject> aClass) {
            // Indicates that this builder can be used with all kinds of project types
            return true;
        }

        /**
         * This human readable name is used in the configuration screen.
         */
        public String getDisplayName() {
            return "ScriptCS Runner";
        }

        @Override
        public boolean configure(StaplerRequest req, JSONObject formData) throws FormException {
            // To persist global configuration information,
            // set that to properties and call save().
            scriptcsexe = formData.getString("scriptcsexe");
            // ^Can also use req.bindJSON(this, formData);
            //  (easier when there are many fields; need set* methods for this, like setUseFrench)
            save();
            return super.configure(req, formData);
        }

        /**
         * This method returns true if the global configuration says we should
         * speak French.
         *
         * The method name is bit awkward because global.jelly calls this method
         * to determine the initial state of the checkbox by the naming
         * convention.
         */
        public String getScriptExe() {
            return scriptcsexe;
        }
    }
}

redpajama_set_name: RedPajamaGithub


text:
Center for Sport Science
AEDs, CPR & Cardiac Safety
Nutrition, Hydration & Melanoma
Equipment for Boys' and Men's Lacrosse
The Crosse:
The crosse (lacrosse stick) is made of wood, laminated wood or synthetic material, with a shaped net pocket at the end. The crosse must be an overall length of 40 - 42 inches for attackmen and midfielders, or 52 - 72 inches for defensemen. The head of the crosse must be 6.5 - 10 inches wide, except a goalie's crosse which may be 10 - 12 inches wide. The pocket of a crosse shall be deemed illegal if the top surface of a lacrosse ball, when placed in the head of the crosse, is below the bottom edge of the side wall.
The Ball:
The ball must be made of solid rubber and can be white, yellow or orange. The ball is 7.75 - 8 inches in circumference and 5 - 5.25 ounces. All lacrosse balls must meet NOCSAE (National Operating Committee on Standards for Athletic Equipment) standards and include the words "Meets NOCSAE Standard".
A protective helmet, equipped with face mask, chin pad and a cupped four point chin strap fastened to all four hookups, must be worn by all players. All helmets and face masks must be NOCSAE (National Operating Committee on Standards for Athletic Equipment) approved.
The Mouthpiece:
The mouthpiece must be a highly visible color and is mandatory.
The Glove:
All players are required to wear protective gloves. The cutting or altering of gloves is prohibited.
Other Protective Equipment:
All players, with the exception of the goalkeeper, must wear shoulder pads. Arm pads are required and rib pads are strongly recommended, and often required, as are athletic supporters and protective cups for all players.
The goalkeeper is required to wear a throat protector and chest protector, in addition to a helmet, mouthpiece, gloves and a protective cup.
Equipment for Girls' and Women's Lacrosse
The crosse (lacrosse stick) is made of wood, laminated wood, or synthetic material, with a shaped net pocket at the end. A girl's crosse must be an overall length of 35.5 - 43.25 inches. The head of the crosse must be seven to nine inches wide. The top of the ball when dropped in the pocket must remain above the side walls.* The goalkeeper's crosse may be 35.5- 48 inches long. The head of the crosse may be mesh and up to 12 inches wide.
* Modified Pocket allowed in girls' youth rules at 10U and below.
For 10U and above, the game ball must be yellow, lime green, or orange, and made of solid rubber, smooth without dimples. All lacrosse balls must meet NOCSAE (National Operating Committee on Standards for Athletic Equipment) standards and include the words "Meets NOCSAE Standard".
All players must wear mouthguards that fully cover the teeth. The mouthpiece shall be of a readily visible color other than clear or white and must not have graphics of white teeth. The shall be no protruding tabs for field players.
Eyewear:
All field players must properly wear protection that meets ASTM standard F3077 for women's adult/youth lacrosse for the appropriate level of play.
Close-fitting gloves and headgear that meets ASTM standard F3137 are optional and may be worn by all players.
See approved listings for: Eyewear | Sticks | Headgear
The Goalkeeper's Equipment:
The goalkeeper must wear a helmet with face mask (NOCSAE approved), separate throat protector, padded gloves, mouth piece, and chest protector. The goalkeeper may wear padding on arms, legs, and shoulders which does not excessively increase the size of those body parts. High school level and below must wear padding on thighs and shins. Youth level must wear some form of abdominal and pelvic protection.
Sports Science and Safety Committee
Injury Prevention & Conditioning
SafeSport: Standard for Athlete Safety and Protection
US Lacrosse Research and Position Papers