int_rules_2_1 = @theory begin

    #= ::Subsection::Closed:: =#
    #= 2.1*(c+d*x)^m*(a+b*(F^(g*(e+f*x)))^n)^p =#
    $UseGamma = False;
    @apply_utils Antiderivative((~(c') + ~(d') * ~x) ^ ~(m') * (~(b') * (~F) ^ (~(g') * (~(e') + ~(f') * ~x))) ^ ~(n'), ~x) => ((~c + ~d * ~x) ^ ~m * (~b * (~F) ^ (~g * (~e + ~f * ~x))) ^ ~n) / (~f * ~g * ~n * log(~F)) - ((~d * ~m) / (~f * ~g * ~n * log(~F))) * Antiderivative((~c + ~d * ~x) ^ (~m - 1) * (~b * (~F) ^ (~g * (~e + ~f * ~x))) ^ ~n, ~x) <-- FreeQ([~F, ~b, ~c, ~d, ~e, ~f, ~g, ~n], ~x) && (GtQ(~m, 0) && (IntegerQ(2 * ~m) && Not(TrueQ($UseGamma))))
    @apply_utils Antiderivative((~(c') + ~(d') * ~x) ^ ~m * (~(b') * (~F) ^ (~(g') * (~(e') + ~(f') * ~x))) ^ ~(n'), ~x) => ((~c + ~d * ~x) ^ (~m + 1) * (~b * (~F) ^ (~g * (~e + ~f * ~x))) ^ ~n) / (~d * (~m + 1)) - ((~f * ~g * ~n * log(~F)) / (~d * (~m + 1))) * Antiderivative((~c + ~d * ~x) ^ (~m + 1) * (~b * (~F) ^ (~g * (~e + ~f * ~x))) ^ ~n, ~x) <-- FreeQ([~F, ~b, ~c, ~d, ~e, ~f, ~g, ~n], ~x) && (LtQ(~m, -1) && (IntegerQ(2 * ~m) && Not(TrueQ($UseGamma))))
    @apply_utils Antiderivative((~F) ^ (~(g') * (~(e') + ~(f') * ~x)) / (~(c') + ~(d') * ~x), ~x) => ((~F) ^ (~g * (~e - (~c * ~f) / ~d)) / ~d) * ExpIntegralEi((~f * ~g * (~c + ~d * ~x) * log(~F)) / ~d) <-- FreeQ([~F, ~c, ~d, ~e, ~f, ~g], ~x) && Not(TrueQ($UseGamma))
    @apply_utils Antiderivative((~(c') + ~(d') * ~x) ^ ~(m') * (~F) ^ (~(g') * (~(e') + ~(f') * ~x)), ~x) => (((-(~d)) ^ ~m * (~F) ^ (~g * (~e - (~c * ~f) / ~d))) / ((~f) ^ (~m + 1) * (~g) ^ (~m + 1) * log(~F) ^ (~m + 1))) * Gamma(~m + 1, ((-(~f) * ~g * log(~F)) / ~d) * (~c + ~d * ~x)) <-- FreeQ([~F, ~c, ~d, ~e, ~f, ~g], ~x) && IntegerQ(~m)
    @apply_utils Antiderivative((~F) ^ (~(g') * (~(e') + ~(f') * ~x)) / sqrt(~(c') + ~(d') * ~x), ~x) => (2 / ~d) * Subst(Antiderivative((~F) ^ (~g * (~e - (~c * ~f) / ~d) + (~f * ~g * (~x) ^ 2) / ~d), ~x), ~x, sqrt(~c + ~d * ~x)) <-- FreeQ([~F, ~c, ~d, ~e, ~f, ~g], ~x) && Not(TrueQ($UseGamma))
    @apply_utils Antiderivative((~(c') + ~(d') * ~x) ^ ~m * (~F) ^ (~(g') * (~(e') + ~(f') * ~x)), ~x) => ((-((~F) ^ (~g * (~e - (~c * ~f) / ~d))) * (~c + ~d * ~x) ^ FracPart(~m)) / (~d * ((-(~f) * ~g * log(~F)) / ~d) ^ (IntPart(~m) + 1) * ((-(~f) * ~g * log(~F) * (~c + ~d * ~x)) / ~d) ^ FracPart(~m))) * Gamma(~m + 1, ((-(~f) * ~g * log(~F)) / ~d) * (~c + ~d * ~x)) <-- FreeQ([~F, ~c, ~d, ~e, ~f, ~g, ~m], ~x) && Not(IntegerQ(~m))
    @apply_utils Antiderivative((~(c') + ~(d') * ~x) ^ ~(m') * (~(b') * (~F) ^ (~(g') * (~(e') + ~(f') * ~x))) ^ ~n, ~x) => ((~b * (~F) ^ (~g * (~e + ~f * ~x))) ^ ~n / (~F) ^ (~g * ~n * (~e + ~f * ~x))) * Antiderivative((~c + ~d * ~x) ^ ~m * (~F) ^ (~g * ~n * (~e + ~f * ~x)), ~x) <-- FreeQ([~F, ~b, ~c, ~d, ~e, ~f, ~g, ~m, ~n], ~x)
    @apply_utils Antiderivative((~(c') + ~(d') * ~x) ^ ~(m') * (~a + ~(b') * ((~F) ^ (~(g') * (~(e') + ~(f') * ~x))) ^ ~(n')) ^ ~(p'), ~x) => Antiderivative(ExpandIntegrand((~c + ~d * ~x) ^ ~m, (~a + ~b * ((~F) ^ (~g * (~e + ~f * ~x))) ^ ~n) ^ ~p, ~x), ~x) <-- FreeQ([~F, ~a, ~b, ~c, ~d, ~e, ~f, ~g, ~m, ~n], ~x) && IGtQ(~p, 0)
    @apply_utils Antiderivative((~(c') + ~(d') * ~x) ^ ~(m') / (~a + ~(b') * ((~F) ^ (~(g') * (~(e') + ~(f') * ~x))) ^ ~(n')), ~x) => (~c + ~d * ~x) ^ (~m + 1) / (~a * ~d * (~m + 1)) - (~b / ~a) * Antiderivative(((~c + ~d * ~x) ^ ~m * ((~F) ^ (~g * (~e + ~f * ~x))) ^ ~n) / (~a + ~b * ((~F) ^ (~g * (~e + ~f * ~x))) ^ ~n), ~x) <-- FreeQ([~F, ~a, ~b, ~c, ~d, ~e, ~f, ~g, ~n], ~x) && IGtQ(~m, 0)
    #= Antiderivative(((~c')+(~d')*(~x))^(~m')/((~a)+(~b')*((~F)^((~g')*((~e')+(~f')*(~x))))^(~n')),~x)  := -(c+d*x)^m/(a*f*g*n*log(F))*log(1+a/(b*(F^(g*(e+f*x)))^n)) + d*m/(a*f*g*n*log(F))*Antiderivative((c+d*x)^(m-1)*log(1+a/(b*(F^(g*(e+f*x)))^n) ),x) <-- FreeQ([F,a,b,c,d,e,f,g,n],x) && IGtQ(m,0) =#
    @apply_utils Antiderivative((~(c') + ~(d') * ~x) ^ ~(m') * (~a + ~(b') * ((~F) ^ (~(g') * (~(e') + ~(f') * ~x))) ^ ~(n')) ^ ~p, ~x) => (1 / ~a) * Antiderivative((~c + ~d * ~x) ^ ~m * (~a + ~b * ((~F) ^ (~g * (~e + ~f * ~x))) ^ ~n) ^ (~p + 1), ~x) - (~b / ~a) * Antiderivative((~c + ~d * ~x) ^ ~m * ((~F) ^ (~g * (~e + ~f * ~x))) ^ ~n * (~a + ~b * ((~F) ^ (~g * (~e + ~f * ~x))) ^ ~n) ^ ~p, ~x) <-- FreeQ([~F, ~a, ~b, ~c, ~d, ~e, ~f, ~g, ~n], ~x) && (ILtQ(~p, 0) && IGtQ(~m, 0))
    @apply_utils Antiderivative((~(c') + ~(d') * ~x) ^ ~(m') * (~a + ~(b') * ((~F) ^ (~(g') * (~(e') + ~(f') * ~x))) ^ ~(n')) ^ ~p, ~x) => With([u = IntHide((~a + ~b * ((~F) ^ (~g * (~e + ~f * ~x))) ^ ~n) ^ ~p, ~x)], Dist((~c + ~d * ~x) ^ ~m, u, ~x) - ~d * ~m * Antiderivative((~c + ~d * ~x) ^ (~m - 1) * u, ~x)) <-- FreeQ([~F, ~a, ~b, ~c, ~d, ~e, ~f, ~g, ~n], ~x) && (IGtQ(~m, 0) && LtQ(~p, -1))
    @apply_utils Antiderivative((~u) ^ ~(m') * (~(a') + ~(b') * ((~F) ^ (~(g') * ~v)) ^ ~(n')) ^ ~(p'), ~x) => Antiderivative(NormalizePowerOfLinear(~u, ~x) ^ ~m * (~a + ~b * ((~F) ^ (~g * ExpandToSum(~v, ~x))) ^ ~n) ^ ~p, ~x) <-- FreeQ([~F, ~a, ~b, ~g, ~n, ~p], ~x) && (LinearQ(~v, ~x) && (PowerOfLinearQ(~u, ~x) && (Not(LinearMatchQ(~v, ~x) && PowerOfLinearMatchQ(~u, ~x)) && IntegerQ(~m))))
    @apply_utils Antiderivative((~u) ^ ~(m') * (~(a') + ~(b') * ((~F) ^ (~(g') * ~v)) ^ ~(n')) ^ ~(p'), ~x) => Module([uu = NormalizePowerOfLinear(~u, ~x), z], z = If(PowerQ(uu) && FreeQ(uu(2), ~x), uu(1) ^ (~m * uu(2)), uu ^ ~m); (uu ^ ~m / z) * Antiderivative(z * (~a + ~b * ((~F) ^ (~g * ExpandToSum(~v, ~x))) ^ ~n) ^ ~p, ~x)) <-- FreeQ([~F, ~a, ~b, ~g, ~m, ~n, ~p], ~x) && (LinearQ(~v, ~x) && (PowerOfLinearQ(~u, ~x) && (Not(LinearMatchQ(~v, ~x) && PowerOfLinearMatchQ(~u, ~x)) && Not(IntegerQ(~m)))))
    @apply_utils Antiderivative((~(c') + ~(d') * ~x) ^ ~(m') * (~a + ~(b') * ((~F) ^ (~(g') * (~(e') + ~(f') * ~x))) ^ ~(n')) ^ ~(p'), ~x) => Unintegrable((~c + ~d * ~x) ^ ~m * (~a + ~b * ((~F) ^ (~g * (~e + ~f * ~x))) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~c, ~d, ~e, ~f, ~g, ~m, ~n, ~p], ~x)
end
